Ignore:
Timestamp:
2016-07-03T18:26:16+02:00 (10 years ago)
Author:
Don-vip
Message:

fix #13078 - Add new listener that fires before first layer is added and after last one is removed (patch by michael2402) - gsoc-core

File:
1 edited

Legend:

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

    r10444 r10508  
    77
    88import javax.swing.JPanel;
    9 import javax.swing.SwingUtilities;
    109
    1110import org.openstreetmap.josm.Main;
    1211import org.openstreetmap.josm.actions.mapmode.MapMode;
    1312import org.openstreetmap.josm.gui.layer.Layer;
    14 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
    15 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
    16 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
    17 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
    1813import org.openstreetmap.josm.gui.layer.MainLayerManager;
     14import org.openstreetmap.josm.gui.layer.MainLayerManager.LayerAvailabilityEvent;
     15import org.openstreetmap.josm.gui.layer.MainLayerManager.LayerAvailabilityListener;
    1916import org.openstreetmap.josm.gui.util.GuiHelper;
    2017
     
    4542    /**
    4643     * Update the content of this {@link MainFrame} to either display the map or display the welcome screen.
     44     * @param showMap If the map should be displayed.
    4745     */
    48     protected void updateContent() {
     46    protected void updateContent(boolean showMap) {
    4947        GuiHelper.assertCallFromEdt();
    5048        MapFrame old = map;
    51         boolean showMap = !layerManager.getLayers().isEmpty();
    5249        if (old != null && showMap) {
    5350            // no state change
     
    155152     */
    156153    public void reAddListeners() {
    157         layerManager.addLayerChangeListener(new LayerChangeListener() {
     154        layerManager.addLayerAvailabilityListener(new LayerAvailabilityListener() {
    158155            @Override
    159             public void layerAdded(LayerAddEvent e) {
    160                 updateContent();
     156            public void beforeFirstLayerAdded(LayerAvailabilityEvent e) {
     157                updateContent(true);
    161158            }
    162159
    163160            @Override
    164             public void layerRemoving(final LayerRemoveEvent e) {
    165                 // Delay main.map removal until after all listeners are finished.
    166                 // Some components rely on this and e.g. get the MapView that way.
    167                 SwingUtilities.invokeLater(new Runnable() {
    168                     @Override
    169                     public void run() {
    170                         updateContent();
    171                     }
    172                 });
     161            public void afterLastLayerRemoved(LayerAvailabilityEvent e) {
     162                updateContent(false);
    173163            }
    174 
     164        });
     165        GuiHelper.runInEDTAndWait(new Runnable() {
    175166            @Override
    176             public void layerOrderChanged(LayerOrderChangeEvent e) {
    177                 // ignored
     167            public void run() {
     168                updateContent(!layerManager.getLayers().isEmpty());
    178169            }
    179170        });
Note: See TracChangeset for help on using the changeset viewer.