Changeset 5957 in josm for trunk


Ignore:
Timestamp:
2013-05-11T23:40:04+02:00 (7 years ago)
Author:
Don-vip
Message:

New interface MapFrameListener to allow core classes to listen to MapFrame changes (previously only plugins could be notified of these changes)

Location:
trunk/src/org/openstreetmap/josm
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/Main.java

    r5897 r5957  
    6565import org.openstreetmap.josm.gui.MainMenu;
    6666import org.openstreetmap.josm.gui.MapFrame;
     67import org.openstreetmap.josm.gui.MapFrameListener;
    6768import org.openstreetmap.josm.gui.MapView;
    6869import org.openstreetmap.josm.gui.NavigatableComponent.ViewportData;
     
    8182import org.openstreetmap.josm.gui.util.RedirectInputMap;
    8283import org.openstreetmap.josm.io.OsmApi;
    83 import org.openstreetmap.josm.plugins.PluginHandler;
    8484import org.openstreetmap.josm.tools.CheckParameterUtil;
    8585import org.openstreetmap.josm.tools.I18n;
     
    189189    private GettingStarted gettingStarted = new GettingStarted();
    190190
     191    private static final Collection<MapFrameListener> mapFrameListeners = new ArrayList<MapFrameListener>();
     192
    191193    /**
    192194     * Logging level (3 = debug, 2 = info, 1 = warn, 0 = none).
     
    281283        Main.map = map;
    282284
    283         PluginHandler.notifyMapFrameChanged(old, map);
     285        for (MapFrameListener listener : mapFrameListeners ) {
     286            listener.mapFrameInitialized(old, map);
     287        }
    284288        if (map == null && currentProgressMonitor != null) {
    285289            currentProgressMonitor.showForegroundDialog();
     
    12081212    }
    12091213
     1214    /**
     1215     * Registers a new {@code MapFrameListener} that will be notified of MapFrame changes
     1216     * @param listener The MapFrameListener
     1217     * @return {@code true} if the listeners collection changed as a result of the call
     1218     * @since 5957
     1219     */
     1220    public static boolean addMapFrameListener(MapFrameListener listener) {
     1221        return listener != null ? mapFrameListeners.add(listener) : false;
     1222    }
     1223
     1224    /**
     1225     * Unregisters the given {@code MapFrameListener} from MapFrame changes
     1226     * @param listener The MapFrameListener
     1227     * @return {@code true} if the listeners collection changed as a result of the call
     1228     * @since 5957
     1229     */
     1230    public static boolean removeMapFrameListener(MapFrameListener listener) {
     1231        return listener != null ? mapFrameListeners.remove(listener) : false;
     1232    }
    12101233}
  • trunk/src/org/openstreetmap/josm/plugins/Plugin.java

    r5874 r5957  
    1313import org.openstreetmap.josm.Main;
    1414import org.openstreetmap.josm.gui.MapFrame;
     15import org.openstreetmap.josm.gui.MapFrameListener;
    1516import org.openstreetmap.josm.gui.download.DownloadSelection;
    1617import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     
    3839 * @author Immanuel.Scholz
    3940 */
    40 public abstract class Plugin {
     41public abstract class Plugin implements MapFrameListener {
    4142
    4243    /**
     
    8384    }
    8485
    85     /**
    86      * Called after Main.mapFrame is initalized. (After the first data is loaded).
    87      * You can use this callback to tweak the newFrame to your needs, as example install
    88      * an alternative Painter.
    89      */
     86    @Override
    9087    public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {}
    9188
  • trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java

    r5886 r5957  
    508508            if (klass != null) {
    509509                System.out.println(tr("loading plugin ''{0}'' (version {1})", plugin.name, plugin.localversion));
    510                 pluginList.add(plugin.load(klass));
     510                PluginProxy pluginProxy = plugin.load(klass);
     511                pluginList.add(pluginProxy);
     512                Main.addMapFrameListener(pluginProxy);
    511513            }
    512514            msg = null;
     
    919921    }
    920922
    921     /**
    922      * Notified loaded plugins about a new map frame
    923      *
    924      * @param old the old map frame
    925      * @param map the new map frame
    926      */
    927     public static void notifyMapFrameChanged(MapFrame old, MapFrame map) {
    928         for (PluginProxy plugin : pluginList) {
    929             plugin.mapFrameInitialized(old, map);
    930         }
    931     }
    932 
    933923    public static Object getPlugin(String name) {
    934924        for (PluginProxy plugin : pluginList)
Note: See TracChangeset for help on using the changeset viewer.