// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.measurement;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Cursor;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.mapmode.MapMode;
import org.openstreetmap.josm.data.coor.LatLon;
import org.openstreetmap.josm.gui.MapFrame;
public class MeasurementMode extends MapMode {
private static final long serialVersionUID = 3853830673475744263L;
public MeasurementMode(MapFrame mapFrame, String name, String desc) {
super(name, "measurement.png", desc, mapFrame, Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
@Override
public void enterMode() {
super.enterMode();
Main.map.mapView.addMouseListener(this);
}
@Override
public void exitMode() {
super.exitMode();
Main.map.mapView.removeMouseListener(this);
}
/**
* If user clicked with the left button, add a node at the current mouse
* position.
*
* If in nodesegment mode, add the node to the line segment by splitting the
* segment. The new created segment will be inserted in every way the segment
* was part of.
*/
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3){
MeasurementPlugin.getCurrentLayer().removeLastPoint();
} else if (e.getButton() == MouseEvent.BUTTON1){
LatLon coor = Main.map.mapView.getLatLon(e.getX(), e.getY());
if (coor.isOutSideWorld()) {
JOptionPane.showMessageDialog(Main.parent,tr("Can not draw outside of the world."));
return;
}
MeasurementPlugin.getCurrentLayer().mouseClicked(e);
}
}
}