Ignore:
Timestamp:
2017-09-04T00:50:22+02:00 (7 years ago)
Author:
Don-vip
Message:

see #13036 - see #15229 - see #15182 - make Commands depends only on a DataSet, not a Layer. This removes a lot of GUI dependencies

File:
1 edited

Legend:

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

    r12695 r12718  
    7272import org.openstreetmap.josm.data.Bounds;
    7373import org.openstreetmap.josm.data.UndoRedoHandler;
     74import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
    7475import org.openstreetmap.josm.data.Version;
    7576import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
     
    8485import org.openstreetmap.josm.gui.io.SaveLayersDialog;
    8586import org.openstreetmap.josm.gui.layer.AutosaveTask;
     87import org.openstreetmap.josm.gui.layer.Layer;
     88import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
     89import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
     90import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
     91import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
    8692import org.openstreetmap.josm.gui.layer.MainLayerManager;
    87 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
     93import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    8894import org.openstreetmap.josm.gui.layer.TMSLayer;
    8995import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
     
    187193    /**
    188194     * The commands undo/redo handler.
    189      * @since 12641 (as a replacement to {@code Main.main.undoRedo})
    190      */
    191     public static final UndoRedoHandler undoRedo = new UndoRedoHandler(); // Must be declared after layerManager
     195     * @since 12641
     196     */
     197    public static UndoRedoHandler undoRedo;
    192198
    193199    /**
     
    213219    public MainApplication(MainFrame mainFrame) {
    214220        this.mainFrame = mainFrame;
     221        undoRedo = super.undoRedo;
     222        getLayerManager().addLayerChangeListener(new LayerChangeListener() {
     223            @Override
     224            public void layerRemoving(LayerRemoveEvent e) {
     225                Layer layer = e.getRemovedLayer();
     226                if (layer instanceof OsmDataLayer) {
     227                    undoRedo.clean(((OsmDataLayer) layer).data);
     228                }
     229            }
     230
     231            @Override
     232            public void layerOrderChanged(LayerOrderChangeEvent e) {
     233                // Do nothing
     234            }
     235
     236            @Override
     237            public void layerAdded(LayerAddEvent e) {
     238                // Do nothing
     239            }
     240        });
    215241    }
    216242
     
    405431    public DataSet getEditDataSet() {
    406432        return getLayerManager().getEditDataSet();
     433    }
     434
     435    @Override
     436    public void setEditDataSet(DataSet ds) {
     437        Optional<OsmDataLayer> layer = getLayerManager().getLayersOfType(OsmDataLayer.class).stream()
     438                .filter(l -> l.data.equals(ds)).findFirst();
     439        if (layer.isPresent()) {
     440            getLayerManager().setActiveLayer(layer.get());
     441        }
     442    }
     443
     444    @Override
     445    public boolean containsDataSet(DataSet ds) {
     446        return getLayerManager().getLayersOfType(OsmDataLayer.class).stream().anyMatch(l -> l.data.equals(ds));
    407447    }
    408448
Note: See TracChangeset for help on using the changeset viewer.