// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.waypointSearch;
import static org.openstreetmap.josm.tools.I18n.tr;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.MapFrame;
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.plugins.Plugin;
import org.openstreetmap.josm.plugins.PluginInformation;
/**
* This plugin enables a user to search for waypoint imported from a gpx file.
* After the plugin is installed a new button is presented on the left side of the map window.
* Pressing this buttons open the search dialog on the right side.
* Click on one of the search results/waypoints to move the map.
*/
public class WaypointSearchPlugin extends Plugin implements LayerChangeListener {
private SelectWaypointDialog waypointDialog;
/**
* Will be invoked by JOSM to bootstrap the plugin
*
* @param info information about the plugin and its local installation
*/
public WaypointSearchPlugin(PluginInformation info) {
super(info);
Main.getLayerManager().addLayerChangeListener(this);
}
@Override
public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
if (newFrame != null) {
waypointDialog = new SelectWaypointDialog(
tr("Waypoint search"), "ToolbarIcon",
tr("Search after waypoint. Click and move the map view to the waypoint."), null, 100);
newFrame.addToggleDialog(waypointDialog);
} else {
waypointDialog = null;
}
}
@Override
public void layerOrderChanged(LayerOrderChangeEvent e) {
// Do nothing
}
@Override
public void layerAdded(LayerAddEvent e) {
// update search
if (waypointDialog != null && Engine.gpxLayersExist()) {
waypointDialog.updateSearchResults();
}
}
@Override
public void layerRemoving(LayerRemoveEvent e) {
if (waypointDialog != null && !Engine.gpxLayersExist()) {
waypointDialog.updateSearchResults();
}
}
}