Changeset 17399 in josm for trunk/src/org/openstreetmap
- Timestamp:
- 2020-12-09T08:27:45+01:00 (4 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
r17379 r17399 4 4 import java.util.Collections; 5 5 import java.util.EventObject; 6 import java.util.HashMap;7 6 import java.util.LinkedList; 8 7 import java.util.List; 9 import java.util.Map;10 8 import java.util.Objects; 11 9 … … 13 11 import org.openstreetmap.josm.data.osm.DataSet; 14 12 import org.openstreetmap.josm.data.osm.OsmDataManager; 15 import org.openstreetmap.josm.gui.MainApplication;16 import org.openstreetmap.josm.gui.layer.OsmDataLayer;17 13 import org.openstreetmap.josm.gui.util.GuiHelper; 18 14 import org.openstreetmap.josm.spi.preferences.Config; … … 45 41 46 42 private static class InstanceHolder { 47 static final UndoRedoHandler NO_DATA_SET_INSTANCE = new UndoRedoHandler(); 48 static final Map<DataSet, UndoRedoHandler> map = new HashMap<>(); 49 43 static final UndoRedoHandler INSTANCE = new UndoRedoHandler(); 50 44 } 51 45 … … 56 50 */ 57 51 public static UndoRedoHandler getInstance() { 58 OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer(); 59 if (editLayer != null && editLayer == MainApplication.getLayerManager().getActiveLayer()) { 60 return InstanceHolder.map.computeIfAbsent(editLayer.data, k -> new UndoRedoHandler()); 61 } 62 return InstanceHolder.NO_DATA_SET_INSTANCE; 52 return InstanceHolder.INSTANCE; 63 53 } 64 54 … … 443 433 l.commandChanged(commands.size(), redoCommands.size()); 444 434 } 445 if (getInstance() != InstanceHolder.NO_DATA_SET_INSTANCE) {446 for (final CommandQueueListener l : InstanceHolder.NO_DATA_SET_INSTANCE.listenerCommands) {447 l.commandChanged(commands.size(), redoCommands.size());448 }449 450 }451 435 } 452 436 … … 470 454 * @since 12718 471 455 */ 472 public s tatic synchronized void clean(DataSet dataSet) {456 public synchronized void clean(DataSet dataSet) { 473 457 if (dataSet == null) 474 458 return; 475 UndoRedoHandler old = InstanceHolder.map.remove(dataSet); 476 if (old != null) { 477 old.clean(); 459 boolean changed = false; 460 changed |= commands.removeIf(c -> c.getAffectedDataSet() == dataSet); 461 changed |= redoCommands.removeIf(c -> c.getAffectedDataSet() == dataSet); 462 if (changed) { 463 fireEvent(new CommandQueueCleanedEvent(this, dataSet)); 464 fireCommandsChanged(); 478 465 } 479 466 } -
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r17390 r17399 222 222 Layer layer = e.getRemovedLayer(); 223 223 if (layer instanceof OsmDataLayer) { 224 UndoRedoHandler.clean(((OsmDataLayer) layer).getDataSet()); 224 UndoRedoHandler.getInstance().clean(((OsmDataLayer) layer).getDataSet()); 225 225 } 226 226 } -
trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
r17374 r17399 51 51 import org.openstreetmap.josm.gui.MainApplication; 52 52 import org.openstreetmap.josm.gui.SideButton; 53 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;54 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;55 53 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 56 54 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher; … … 65 63 * @since 94 66 64 */ 67 public class CommandStackDialog extends ToggleDialog implements CommandQueuePreciseListener , ActiveLayerChangeListener{65 public class CommandStackDialog extends ToggleDialog implements CommandQueuePreciseListener { 68 66 69 67 private final DefaultTreeModel undoTreeModel = new DefaultTreeModel(new DefaultMutableTreeNode()); … … 147 145 InputMapUtils.addEnterAction(undoTree, selectAndZoomAction); 148 146 InputMapUtils.addEnterAction(redoTree, selectAndZoomAction); 149 MainApplication.getLayerManager().addActiveLayerChangeListener(this);150 147 } 151 148 … … 556 553 } 557 554 } 558 559 @Override560 public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {561 hideNotify();562 showNotify();563 }564 555 } -
trunk/src/org/openstreetmap/josm/gui/io/AsynchronousUploadPrimitivesTask.java
r17379 r17399 121 121 GuiHelper.runInEDTAndWait(() -> { 122 122 // Remove the commands from the undo stack 123 UndoRedoHandler.clean(uploadDataLayer.getDataSet()); 123 UndoRedoHandler.getInstance().clean(uploadDataLayer.getDataSet()); 124 124 MainApplication.getLayerManager().prepareLayerForUpload(uploadDataLayer); 125 125 -
trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
r17379 r17399 654 654 return; 655 655 656 UndoRedoHandler.clean(data); 656 UndoRedoHandler.getInstance().clean(data); 657 657 658 658 // if uploaded, clean the modified flags as well
Note:
See TracChangeset
for help on using the changeset viewer.