OsmAnd/DataExtractionOSM/src/net/osmand/swing/MapInformationLayer.java

110 lines
2.9 KiB
Java
Raw Normal View History

package net.osmand.swing;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
public class MapInformationLayer implements MapPanelLayer {
private MapPanel map;
private JLabel gpsLocation;
private JButton areaButton;
@Override
public void destroyLayer() {
}
@Override
public void initLayer(final MapPanel map) {
this.map = map;
BoxLayout layout = new BoxLayout(map, BoxLayout.LINE_AXIS);
map.setLayout(layout);
map.setBorder(BorderFactory.createEmptyBorder(2, 10, 10, 10));
gpsLocation = new JLabel();
gpsLocation.setOpaque(false);
updateLocationLabel();
JButton zoomIn = new JButton("+");
JButton zoomOut = new JButton("-");
areaButton = new JButton();
areaButton.setAction(new AbstractAction("Preload area"){
private static final long serialVersionUID = -5512220294374994021L;
@Override
public void actionPerformed(ActionEvent e) {
new TileBundleDownloadDialog(map, map).showDialog();
}
});
zoomIn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
map.setZoom(map.getZoom() + 1);
}
});
zoomOut.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
map.setZoom(map.getZoom() - 1);
}
});
map.add(gpsLocation);
map.add(Box.createHorizontalGlue());
map.add(areaButton);
map.add(zoomIn);
map.add(zoomOut);
gpsLocation.setAlignmentY(Component.TOP_ALIGNMENT);
areaButton.setVisible(false);
areaButton.setAlignmentY(Component.TOP_ALIGNMENT);
zoomOut.setAlignmentY(Component.TOP_ALIGNMENT);
zoomIn.setAlignmentY(Component.TOP_ALIGNMENT);
}
public void setAreaButtonVisible(boolean b){
areaButton.setVisible(b);
}
public void setAreaActionHandler(Action a){
areaButton.setAction(a);
}
private void updateLocationLabel(){
double latitude = map.getLatitude();
double longitude = map.getLongitude();
int zoom = map.getZoom();
gpsLocation.setText(MessageFormat.format("Lat : {0,number,#.####}, lon : {1,number,#.####}, zoom : {2}", latitude, longitude, zoom));
}
@Override
public void prepareToDraw() {
updateLocationLabel();
}
@Override
public void paintLayer(Graphics g) {
g.setColor(Color.black);
g.fillOval((int)map.getCenterPointX() - 2,(int) map.getCenterPointY() - 2, 4, 4);
g.drawOval((int)map.getCenterPointX() - 2,(int) map.getCenterPointY() - 2, 4, 4);
g.drawOval((int)map.getCenterPointX() - 5,(int) map.getCenterPointY()- 5, 10, 10);
}
}