// License: GPL. For details, see LICENSE file.
package indoor_sweepline;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.JosmAction;
import org.openstreetmap.josm.data.projection.Projections;
import org.openstreetmap.josm.gui.layer.Layer;
import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
public class IndoorSweeplineWizardAction extends JosmAction implements LayerChangeListener, ActiveLayerChangeListener {
public IndoorSweeplineWizardAction() {
super(tr("Concourse wizard ..."), null,
tr("Opens up a wizard to create a concourse"), null, false);
Main.getLayerManager().addLayerChangeListener(this);
}
@Override
public void actionPerformed(ActionEvent event) {
if (layer == null)
JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(Main.parent),
"No default layer found.");
else if (!(layer instanceof OsmDataLayer))
JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(Main.parent),
"The default layer is not an OSM layer.");
else if (Main.map == null)
JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(Main.parent),
"No map found.");
else if (Main.map.mapView == null)
JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(Main.parent),
"No map view found.");
else
new IndoorSweeplineController((OsmDataLayer) layer,
Projections.inverseProject(Main.map.mapView.getCenter()));
}
@Override
public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
layer = Main.getLayerManager().getActiveLayer();
}
@Override
public void layerOrderChanged(LayerOrderChangeEvent e) {
}
@Override
public void layerAdded(LayerAddEvent e) {
}
@Override
public void layerRemoving(LayerRemoveEvent e) {
if (layer == e.getRemovedLayer())
layer = null;
}
private Layer layer;
}