use of aimax.osm.viewer.MapViewEvent in project aima-java by aimacode.
the class MapViewPopup method actionPerformed.
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == entityInfoMenuItem) {
MapNode mNode = pane.getRenderer().getNextNode(x, y);
if (mNode != null)
pane.showMapEntityInfoDialog(mNode, pane.isDebugModeEnabled());
} else if (ae.getSource() == clearMenuItem) {
pane.getMap().clearMarkersAndTracks();
} else if (ae.getSource() == createMarkerMenuItem) {
PositionPanel panel = new PositionPanel();
int res = JOptionPane.showConfirmDialog(pane, panel, "Specify a Position", JOptionPane.OK_CANCEL_OPTION);
if (res == JOptionPane.OK_OPTION) {
float lat = panel.getLat();
float lon = panel.getLon();
if (!Float.isNaN(lat) && !Float.isNaN(lon)) {
pane.getMap().addMarker(lat, lon);
pane.adjustToCenter(lat, lon);
}
}
} else if (ae.getSource() == removeMarkerMenuItem) {
pane.removeNearestMarker(x, y);
} else if (ae.getSource() == loadMarkersMenuItem) {
XMLDecoder decoder = null;
try {
File xmlFile = null;
if (getFileChooser().showDialog(pane, "Load Markers") == JFileChooser.APPROVE_OPTION) {
xmlFile = getFileChooser().getSelectedFile();
if (!xmlFile.getPath().contains("."))
xmlFile = new File(xmlFile.getPath() + ".xml");
}
if (xmlFile != null && xmlFile.exists()) {
pane.getMap().clearMarkersAndTracks();
decoder = new XMLDecoder(new BufferedInputStream(new FileInputStream(xmlFile)));
int size = (Integer) decoder.readObject();
for (int i = 0; i < size; i++) {
WritablePosition pos = (WritablePosition) decoder.readObject();
pane.getMap().addMarker(pos.getLat(), pos.getLon());
}
pane.fireMapViewEvent(new MapViewEvent(pane, MapViewEvent.Type.MARKER_ADDED));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (decoder != null)
decoder.close();
}
} else if (ae.getSource() == saveMarkersMenuItem) {
XMLEncoder encoder = null;
try {
File xmlFile = null;
if (getFileChooser().showDialog(pane, "Save Markers") == JFileChooser.APPROVE_OPTION) {
xmlFile = getFileChooser().getSelectedFile();
if (!xmlFile.getPath().contains("."))
xmlFile = new File(xmlFile.getPath() + ".xml");
encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(xmlFile)));
encoder.writeObject(pane.getMap().getMarkers().size());
for (MapNode node : pane.getMap().getMarkers()) encoder.writeObject(new WritablePosition(node));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (encoder != null)
encoder.close();
}
} else if (ae.getSource() == functionsMenuItem) {
JOptionPane.showMessageDialog(pane, MapViewPane.FUNCTION_DESCRIPTION.split("\\|"), "Function Description", JOptionPane.INFORMATION_MESSAGE);
} else if (ae.getSource() == debugMenuItem) {
pane.enableDebugMode(debugMenuItem.isSelected());
}
}
Aggregations