Changeset 14134 in josm


Ignore:
Timestamp:
2018-08-11T23:33:58+02:00 (6 years ago)
Author:
Don-vip
Message:

see #15229 - deprecate Main*.undoRedo - make UndoRedoHandler a singleton

Location:
trunk
Files:
61 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/I18nSimilarStrings.java

    r14119 r14134  
    55import org.openstreetmap.josm.Main;
    66import org.openstreetmap.josm.data.Preferences;
    7 import org.openstreetmap.josm.data.UndoRedoHandler;
    87import org.openstreetmap.josm.data.preferences.JosmBaseDirectories;
    98import org.openstreetmap.josm.data.preferences.JosmUrls;
    109import org.openstreetmap.josm.data.validation.tests.SimilarNamedWays;
    11 import org.openstreetmap.josm.gui.MainApplication;
    1210import org.openstreetmap.josm.gui.MainApplicationTest;
    1311import org.openstreetmap.josm.plugins.PluginHandlerTestIT;
     
    3432        Config.setPreferencesInstance(pref);
    3533        pref.init(false);
    36         MainApplication.undoRedo = new UndoRedoHandler();
    3734        MainApplicationTest.initContentPane();
    3835        MainApplicationTest.initToolbar();
  • trunk/src/org/openstreetmap/josm/Main.java

    r14133 r14134  
    7171    /**
    7272     * The commands undo/redo handler.
    73      */
    74     public final UndoRedoHandler undoRedo = new UndoRedoHandler();
     73     * @deprecated Use {@link UndoRedoHandler#getInstance}
     74     */
     75    @Deprecated
     76    public final UndoRedoHandler undoRedo = UndoRedoHandler.getInstance();
    7577
    7678    /**
  • trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java

    r12726 r14134  
    1111import org.openstreetmap.josm.Main;
    1212import org.openstreetmap.josm.command.AddCommand;
     13import org.openstreetmap.josm.data.UndoRedoHandler;
    1314import org.openstreetmap.josm.data.coor.LatLon;
    1415import org.openstreetmap.josm.data.osm.DataSet;
     
    6869        // add the node
    6970        DataSet ds = getLayerManager().getEditDataSet();
    70         MainApplication.undoRedo.add(new AddCommand(ds, nnew));
     71        UndoRedoHandler.getInstance().add(new AddCommand(ds, nnew));
    7172        ds.setSelected(nnew);
    7273        MapView mapView = MainApplication.getMap().mapView;
  • trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java

    r13434 r14134  
    2020import org.openstreetmap.josm.command.MoveCommand;
    2121import org.openstreetmap.josm.command.SequenceCommand;
     22import org.openstreetmap.josm.data.UndoRedoHandler;
    2223import org.openstreetmap.josm.data.coor.EastNorth;
    2324import org.openstreetmap.josm.data.coor.PolarCoor;
     
    2627import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2728import org.openstreetmap.josm.data.osm.Way;
    28 import org.openstreetmap.josm.gui.MainApplication;
    2929import org.openstreetmap.josm.gui.Notification;
    3030import org.openstreetmap.josm.tools.Geometry;
     
    243243        }
    244244
    245         MainApplication.undoRedo.add(new SequenceCommand(tr("Align Nodes in Circle"), cmds));
     245        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Align Nodes in Circle"), cmds));
    246246    }
    247247
  • trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java

    r13434 r14134  
    2020import org.openstreetmap.josm.command.MoveCommand;
    2121import org.openstreetmap.josm.command.SequenceCommand;
     22import org.openstreetmap.josm.data.UndoRedoHandler;
    2223import org.openstreetmap.josm.data.coor.EastNorth;
    2324import org.openstreetmap.josm.data.coor.PolarCoor;
     
    2627import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2728import org.openstreetmap.josm.data.osm.Way;
    28 import org.openstreetmap.josm.gui.MainApplication;
    2929import org.openstreetmap.josm.gui.Notification;
    3030import org.openstreetmap.josm.tools.Logging;
     
    175175            Command cmd = buildCommand(getLayerManager().getEditDataSet());
    176176            if (cmd != null) {
    177                 MainApplication.undoRedo.add(cmd);
     177                UndoRedoHandler.getInstance().add(cmd);
    178178            }
    179179        } catch (InvalidSelection except) {
  • trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java

    r13611 r14134  
    2525import org.openstreetmap.josm.command.SequenceCommand;
    2626import org.openstreetmap.josm.corrector.ReverseWayTagCorrector;
     27import org.openstreetmap.josm.data.UndoRedoHandler;
    2728import org.openstreetmap.josm.data.osm.DataSet;
    2829import org.openstreetmap.josm.data.osm.Node;
     
    3435import org.openstreetmap.josm.data.preferences.BooleanProperty;
    3536import org.openstreetmap.josm.gui.ExtendedDialog;
    36 import org.openstreetmap.josm.gui.MainApplication;
    3737import org.openstreetmap.josm.gui.Notification;
    3838import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
     
    176176                if (!reverseWayTagCommands.isEmpty()) {
    177177                    // commands need to be executed for CombinePrimitiveResolverDialog
    178                     MainApplication.undoRedo.add(new SequenceCommand(tr("Reverse Ways"), reverseWayTagCommands));
     178                    UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Reverse Ways"), reverseWayTagCommands));
    179179                }
    180180                wayTags = TagCollection.unionOfAllPrimitives(reversedTagWays);
     
    195195            if (!reverseWayTagCommands.isEmpty()) {
    196196                // undo reverseWayTagCorrector and merge into SequenceCommand below
    197                 MainApplication.undoRedo.undo();
     197                UndoRedoHandler.getInstance().undo();
    198198            }
    199199        }
     
    239239            return;
    240240        final Way selectedWay = combineResult.a;
    241         MainApplication.undoRedo.add(combineResult.b);
     241        UndoRedoHandler.getInstance().add(combineResult.b);
    242242        if (selectedWay != null) {
    243243            GuiHelper.runInEDT(() -> ds.setSelected(selectedWay));
  • trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java

    r14120 r14134  
    2222import org.openstreetmap.josm.command.Command;
    2323import org.openstreetmap.josm.command.SequenceCommand;
     24import org.openstreetmap.josm.data.UndoRedoHandler;
    2425import org.openstreetmap.josm.data.coor.EastNorth;
    2526import org.openstreetmap.josm.data.coor.LatLon;
     
    3031import org.openstreetmap.josm.data.osm.Way;
    3132import org.openstreetmap.josm.data.projection.ProjectionRegistry;
    32 import org.openstreetmap.josm.gui.MainApplication;
    3333import org.openstreetmap.josm.gui.Notification;
    3434import org.openstreetmap.josm.tools.Geometry;
     
    244244        }
    245245
    246         MainApplication.undoRedo.add(new SequenceCommand(tr("Create Circle"), cmds));
     246        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Create Circle"), cmds));
    247247    }
    248248
  • trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java

    r13957 r14134  
    2727import org.openstreetmap.josm.command.Command;
    2828import org.openstreetmap.josm.command.SequenceCommand;
     29import org.openstreetmap.josm.data.UndoRedoHandler;
    2930import org.openstreetmap.josm.data.osm.DataSet;
    3031import org.openstreetmap.josm.data.osm.MultipolygonBuilder;
     
    108109            // to avoid EDT violations
    109110            SwingUtilities.invokeLater(() -> {
    110                     MainApplication.undoRedo.add(command);
     111                    UndoRedoHandler.getInstance().add(command);
    111112
    112113                    // Use 'SwingUtilities.invokeLater' to make sure the relationListDialog
  • trunk/src/org/openstreetmap/josm/actions/DistributeAction.java

    r13434 r14134  
    1919import org.openstreetmap.josm.command.MoveCommand;
    2020import org.openstreetmap.josm.command.SequenceCommand;
     21import org.openstreetmap.josm.data.UndoRedoHandler;
    2122import org.openstreetmap.josm.data.osm.Node;
    2223import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2324import org.openstreetmap.josm.data.osm.Way;
    24 import org.openstreetmap.josm.gui.MainApplication;
    2525import org.openstreetmap.josm.gui.Notification;
    2626import org.openstreetmap.josm.tools.Logging;
     
    9898
    9999        // Do it!
    100         MainApplication.undoRedo.add(new SequenceCommand(tr("Distribute Nodes"), cmds));
     100        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Distribute Nodes"), cmds));
    101101    }
    102102
  • trunk/src/org/openstreetmap/josm/actions/FollowLineAction.java

    r13434 r14134  
    1515import org.openstreetmap.josm.command.SelectCommand;
    1616import org.openstreetmap.josm.command.SequenceCommand;
     17import org.openstreetmap.josm.data.UndoRedoHandler;
    1718import org.openstreetmap.josm.data.osm.DataSet;
    1819import org.openstreetmap.josm.data.osm.Node;
     
    114115                newFollower.addNode(newPoint);
    115116            }
    116             MainApplication.undoRedo.add(new SequenceCommand(tr("Follow line"),
     117            UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Follow line"),
    117118                    new ChangeCommand(ds, follower, newFollower),
    118119                    new SelectCommand(ds, newFollower.isClosed() // see #10028 - unselect last node when closing a way
  • trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java

    r13736 r14134  
    570570            makeCommitsOneAction(tr("Reverting changes"));
    571571            if (addUndoRedo) {
    572                 MainApplication.undoRedo.undo();
    573                 MainApplication.undoRedo.redoCommands.clear();
     572                UndoRedoHandler.getInstance().undo();
     573                UndoRedoHandler.getInstance().redoCommands.clear();
    574574            }
    575575        }
     
    835835    private void commitCommand(Command c) {
    836836        if (Main.main != null && addUndoRedo) {
    837             MainApplication.undoRedo.add(c);
     837            UndoRedoHandler.getInstance().add(c);
    838838        } else {
    839839            c.executeCommand();
  • trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java

    r14120 r14134  
    2323import org.openstreetmap.josm.command.MoveCommand;
    2424import org.openstreetmap.josm.command.SequenceCommand;
     25import org.openstreetmap.josm.data.UndoRedoHandler;
    2526import org.openstreetmap.josm.data.coor.EastNorth;
    2627import org.openstreetmap.josm.data.osm.DataSet;
     
    162163
    163164        if (cmds.isEmpty()) return;
    164         MainApplication.undoRedo.add(new SequenceCommand(getValue(NAME).toString(), cmds));
     165        UndoRedoHandler.getInstance().add(new SequenceCommand(getValue(NAME).toString(), cmds));
    165166    }
    166167
  • trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java

    r13842 r14134  
    2626import org.openstreetmap.josm.command.DeleteCommand;
    2727import org.openstreetmap.josm.command.SequenceCommand;
     28import org.openstreetmap.josm.data.UndoRedoHandler;
    2829import org.openstreetmap.josm.data.coor.EastNorth;
    2930import org.openstreetmap.josm.data.coor.LatLon;
     
    9899            Command cmd = mergeNodes(selectedNodes, targetNode, targetLocationNode);
    99100            if (cmd != null) {
    100                 MainApplication.undoRedo.add(cmd);
     101                UndoRedoHandler.getInstance().add(cmd);
    101102                getLayerManager().getEditLayer().data.setSelected(targetNode);
    102103            }
     
    277278            Command cmd = mergeNodes(nodes, target, targetLocationNode);
    278279            if (cmd != null) {
    279                 MainApplication.undoRedo.add(cmd);
     280                UndoRedoHandler.getInstance().add(cmd);
    280281                layer.data.setSelected(target);
    281282            }
  • trunk/src/org/openstreetmap/josm/actions/MirrorAction.java

    r13434 r14134  
    1717import org.openstreetmap.josm.command.MoveCommand;
    1818import org.openstreetmap.josm.command.SequenceCommand;
     19import org.openstreetmap.josm.data.UndoRedoHandler;
    1920import org.openstreetmap.josm.data.osm.Node;
    2021import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2122import org.openstreetmap.josm.data.osm.Way;
    22 import org.openstreetmap.josm.gui.MainApplication;
    2323import org.openstreetmap.josm.gui.Notification;
    2424import org.openstreetmap.josm.tools.Shortcut;
     
    8080        }
    8181
    82         MainApplication.undoRedo.add(new SequenceCommand(tr("Mirror"), cmds));
     82        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Mirror"), cmds));
    8383    }
    8484
  • trunk/src/org/openstreetmap/josm/actions/MoveAction.java

    r13434 r14134  
    1414import org.openstreetmap.josm.command.Command;
    1515import org.openstreetmap.josm.command.MoveCommand;
     16import org.openstreetmap.josm.data.UndoRedoHandler;
    1617import org.openstreetmap.josm.data.coor.EastNorth;
    1718import org.openstreetmap.josm.data.osm.DataSet;
     
    136137        Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection);
    137138
    138         Command c = MainApplication.undoRedo.getLastCommand();
     139        Command c = UndoRedoHandler.getInstance().getLastCommand();
    139140
    140141        ds.beginUpdate();
     
    145146            } else {
    146147                c = new MoveCommand(ds, selection, distx, disty);
    147                 MainApplication.undoRedo.add(c);
     148                UndoRedoHandler.getInstance().add(c);
    148149            }
    149150        } finally {
  • trunk/src/org/openstreetmap/josm/actions/MoveNodeAction.java

    r13611 r14134  
    1010import org.openstreetmap.josm.Main;
    1111import org.openstreetmap.josm.command.MoveCommand;
     12import org.openstreetmap.josm.data.UndoRedoHandler;
    1213import org.openstreetmap.josm.data.coor.LatLon;
    1314import org.openstreetmap.josm.data.osm.Node;
     
    5152
    5253        // move the node
    53         MainApplication.undoRedo.add(new MoveCommand(n, coordinates));
     54        UndoRedoHandler.getInstance().add(new MoveCommand(n, coordinates));
    5455        MainApplication.getMap().mapView.repaint();
    5556    }
  • trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java

    r13927 r14134  
    3535import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
    3636import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmUrlTask;
     37import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
    3738import org.openstreetmap.josm.actions.downloadtasks.DownloadSessionTask;
    38 import org.openstreetmap.josm.actions.downloadtasks.DownloadParams;
    3939import org.openstreetmap.josm.actions.downloadtasks.DownloadTask;
    4040import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
  • trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java

    r14120 r14134  
    2525import org.openstreetmap.josm.command.MoveCommand;
    2626import org.openstreetmap.josm.command.SequenceCommand;
     27import org.openstreetmap.josm.data.UndoRedoHandler;
    2728import org.openstreetmap.josm.data.coor.EastNorth;
    2829import org.openstreetmap.josm.data.coor.PolarCoor;
     
    3233import org.openstreetmap.josm.data.projection.ProjectionRegistry;
    3334import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    34 import org.openstreetmap.josm.gui.MainApplication;
    3535import org.openstreetmap.josm.gui.Notification;
    3636import org.openstreetmap.josm.tools.Geometry;
     
    120120                }
    121121                if (!commands.isEmpty()) {
    122                     MainApplication.undoRedo.add(new SequenceCommand(tr("Orthogonalize / Undo"), commands));
     122                    UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Orthogonalize / Undo"), commands));
    123123                } else {
    124124                    throw new InvalidUserInputException("Commands are empty");
     
    168168
    169169        try {
    170             MainApplication.undoRedo.add(orthogonalize(sel));
     170            UndoRedoHandler.getInstance().add(orthogonalize(sel));
    171171        } catch (InvalidUserInputException ex) {
    172172            Logging.debug(ex);
  • trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java

    r12885 r14134  
    77
    88import org.openstreetmap.josm.Main;
     9import org.openstreetmap.josm.data.preferences.BooleanProperty;
    910import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
    1011import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
    11 import org.openstreetmap.josm.data.preferences.BooleanProperty;
    1212
    1313/**
  • trunk/src/org/openstreetmap/josm/actions/PurgeAction.java

    r13564 r14134  
    2929import org.openstreetmap.josm.Main;
    3030import org.openstreetmap.josm.command.PurgeCommand;
     31import org.openstreetmap.josm.data.UndoRedoHandler;
    3132import org.openstreetmap.josm.data.osm.DataSet;
    3233import org.openstreetmap.josm.data.osm.IPrimitive;
    3334import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3435import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    35 import org.openstreetmap.josm.gui.MainApplication;
    3636import org.openstreetmap.josm.gui.PrimitiveRenderer;
    3737import org.openstreetmap.josm.gui.help.HelpUtil;
     
    104104        }
    105105
    106         MainApplication.undoRedo.add(cmd);
     106        UndoRedoHandler.getInstance().add(cmd);
    107107        if (clearUndoRedo) {
    108             MainApplication.undoRedo.clean();
     108            UndoRedoHandler.getInstance().clean();
    109109            getLayerManager().getEditDataSet().clearSelectionHistory();
    110110        }
  • trunk/src/org/openstreetmap/josm/actions/RedoAction.java

    r12718 r14134  
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.data.UndoRedoHandler;
    1112import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
    1213import org.openstreetmap.josm.gui.MainApplication;
     
    3738            return;
    3839        map.repaint();
    39         MainApplication.undoRedo.redo();
     40        UndoRedoHandler.getInstance().redo();
    4041    }
    4142
    4243    @Override
    4344    protected void updateEnabledState() {
    44         setEnabled(Main.main != null && !MainApplication.undoRedo.redoCommands.isEmpty());
     45        setEnabled(Main.main != null && !UndoRedoHandler.getInstance().redoCommands.isEmpty());
    4546    }
    4647
    4748    @Override
    4849    public void commandChanged(int queueSize, int redoSize) {
    49         if (MainApplication.undoRedo.redoCommands.isEmpty()) {
     50        if (UndoRedoHandler.getInstance().redoCommands.isEmpty()) {
    5051            putValue(NAME, tr("Redo"));
    5152            setTooltip(tr("Redo the last undone action."));
     
    5354            putValue(NAME, tr("Redo ..."));
    5455            setTooltip(tr("Redo {0}",
    55                     MainApplication.undoRedo.redoCommands.getFirst().getDescriptionText()));
     56                    UndoRedoHandler.getInstance().redoCommands.getFirst().getDescriptionText()));
    5657        }
    5758    }
  • trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java

    r13761 r14134  
    2121import org.openstreetmap.josm.corrector.ReverseWayNoTagCorrector;
    2222import org.openstreetmap.josm.corrector.ReverseWayTagCorrector;
     23import org.openstreetmap.josm.data.UndoRedoHandler;
    2324import org.openstreetmap.josm.data.osm.DataSet;
    2425import org.openstreetmap.josm.data.osm.Node;
    2526import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2627import org.openstreetmap.josm.data.osm.Way;
    27 import org.openstreetmap.josm.gui.MainApplication;
    2828import org.openstreetmap.josm.gui.Notification;
    2929import org.openstreetmap.josm.spi.preferences.Config;
     
    138138            c.addAll(revResult.getCommands());
    139139        }
    140         MainApplication.undoRedo.add(new SequenceCommand(tr("Reverse Ways"), c));
     140        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Reverse Ways"), c));
    141141    }
    142142
  • trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java

    r13842 r14134  
    2525import org.openstreetmap.josm.command.DeleteCommand;
    2626import org.openstreetmap.josm.command.SequenceCommand;
     27import org.openstreetmap.josm.data.UndoRedoHandler;
    2728import org.openstreetmap.josm.data.osm.DataSet;
    2829import org.openstreetmap.josm.data.osm.Node;
     
    3233import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    3334import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
    34 import org.openstreetmap.josm.gui.MainApplication;
    3535import org.openstreetmap.josm.gui.Notification;
    3636import org.openstreetmap.josm.spi.preferences.Config;
     
    120120                    allCommands
    121121                    );
    122             MainApplication.undoRedo.add(rootCommand);
     122            UndoRedoHandler.getInstance().add(rootCommand);
    123123        } finally {
    124124            ds.endUpdate();
  • trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java

    r13611 r14134  
    2626import org.openstreetmap.josm.Main;
    2727import org.openstreetmap.josm.command.SplitWayCommand;
     28import org.openstreetmap.josm.data.UndoRedoHandler;
    2829import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
    2930import org.openstreetmap.josm.data.osm.Node;
     
    281282        final boolean isMapModeDraw = map != null && map.mapMode == map.mapModeDraw;
    282283        final SplitWayCommand result = SplitWayCommand.doSplitWay(way, wayToKeep, newWays, !isMapModeDraw ? newSelection : null);
    283         MainApplication.undoRedo.add(result);
     284        UndoRedoHandler.getInstance().add(result);
    284285        List<? extends PrimitiveId> newSel = result.getNewSelection();
    285286        if (newSel != null && !newSel.isEmpty()) {
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r13761 r14134  
    3232import org.openstreetmap.josm.command.Command;
    3333import org.openstreetmap.josm.command.SequenceCommand;
     34import org.openstreetmap.josm.data.UndoRedoHandler;
    3435import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
    3536import org.openstreetmap.josm.data.osm.Node;
     
    314315        }
    315316
    316         MainApplication.undoRedo.add(new SequenceCommand(tr("Unglued Node"), cmds));
     317        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Unglued Node"), cmds));
    317318        getLayerManager().getEditDataSet().setSelected(n);
    318319        mv.repaint();
     
    553554     */
    554555    private void execCommands(List<Command> cmds, List<Node> newNodes) {
    555         MainApplication.undoRedo.add(new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
     556        UndoRedoHandler.getInstance().add(new SequenceCommand(/* for correct i18n of plural forms - see #9110 */
    556557                trn("Dupe into {0} node", "Dupe into {0} nodes", newNodes.size() + 1L, newNodes.size() + 1L), cmds));
    557558        // select one of the new nodes
     
    641642        notifyWayPartOfRelation(Collections.singleton(selectedWay));
    642643
    643         MainApplication.undoRedo.add(new SequenceCommand(
     644        UndoRedoHandler.getInstance().add(new SequenceCommand(
    644645                trn("Dupe {0} node into {1} nodes", "Dupe {0} nodes into {1} nodes",
    645646                        selectedNodes.size(), selectedNodes.size(), selectedNodes.size()+allNewNodes.size()), cmds));
  • trunk/src/org/openstreetmap/josm/actions/UnJoinNodeWayAction.java

    r13434 r14134  
    1616
    1717import org.openstreetmap.josm.command.RemoveNodesCommand;
     18import org.openstreetmap.josm.data.UndoRedoHandler;
    1819import org.openstreetmap.josm.data.osm.Node;
    1920import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2021import org.openstreetmap.josm.data.osm.Way;
    21 import org.openstreetmap.josm.gui.MainApplication;
    2222import org.openstreetmap.josm.gui.Notification;
    2323import org.openstreetmap.josm.tools.Shortcut;
     
    8989
    9090        // I'm sure there's a better way to handle this
    91         MainApplication.undoRedo.add(new RemoveNodesCommand(selectedWay, selectedNodes));
     91        UndoRedoHandler.getInstance().add(new RemoveNodesCommand(selectedWay, selectedNodes));
    9292    }
    9393
  • trunk/src/org/openstreetmap/josm/actions/UndoAction.java

    r12718 r14134  
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.data.UndoRedoHandler;
    1112import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
    1213import org.openstreetmap.josm.gui.MainApplication;
     
    3738            return;
    3839        map.repaint();
    39         MainApplication.undoRedo.undo();
     40        UndoRedoHandler.getInstance().undo();
    4041    }
    4142
    4243    @Override
    4344    protected void updateEnabledState() {
    44         setEnabled(Main.main != null && !MainApplication.undoRedo.commands.isEmpty());
     45        setEnabled(Main.main != null && !UndoRedoHandler.getInstance().commands.isEmpty());
    4546    }
    4647
    4748    @Override
    4849    public void commandChanged(int queueSize, int redoSize) {
    49         if (MainApplication.undoRedo.commands.isEmpty()) {
     50        if (UndoRedoHandler.getInstance().commands.isEmpty()) {
    5051            putValue(NAME, tr("Undo"));
    5152            setTooltip(tr("Undo the last action."));
     
    5354            putValue(NAME, tr("Undo ..."));
    5455            setTooltip(tr("Undo {0}",
    55                     MainApplication.undoRedo.commands.getLast().getDescriptionText()));
     56                    UndoRedoHandler.getInstance().commands.getLast().getDescriptionText()));
    5657        }
    5758    }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java

    r13434 r14134  
    1515import org.openstreetmap.josm.command.Command;
    1616import org.openstreetmap.josm.command.DeleteCommand;
     17import org.openstreetmap.josm.data.UndoRedoHandler;
    1718import org.openstreetmap.josm.data.osm.DataSet;
    1819import org.openstreetmap.josm.data.osm.Node;
     
    157158        // if c is null, an error occurred or the user aborted. Don't do anything in that case.
    158159        if (c != null) {
    159             MainApplication.undoRedo.add(c);
     160            UndoRedoHandler.getInstance().add(c);
    160161            //FIXME: This should not be required, DeleteCommand should update the selection, otherwise undo/redo won't work.
    161162            lm.getEditDataSet().setSelected();
     
    304305        Command c = buildDeleteCommands(e, e.getModifiersEx(), false);
    305306        if (c != null) {
    306             MainApplication.undoRedo.add(c);
     307            UndoRedoHandler.getInstance().add(c);
    307308        }
    308309
     
    355356        if (cmd != null) {
    356357            // cmd can be null if the user cancels dialogs DialogCommand displays
    357             MainApplication.undoRedo.add(cmd);
     358            UndoRedoHandler.getInstance().add(cmd);
    358359            for (Relation relation : toDelete) {
    359360                if (layer.data.getSelectedRelations().contains(relation)) {
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r14011 r14134  
    3939import org.openstreetmap.josm.command.SequenceCommand;
    4040import org.openstreetmap.josm.data.Bounds;
     41import org.openstreetmap.josm.data.UndoRedoHandler;
    4142import org.openstreetmap.josm.data.coor.EastNorth;
    4243import org.openstreetmap.josm.data.osm.DataSelectionListener;
     
    667668        Command c = new SequenceCommand(title, cmds);
    668669
    669         MainApplication.undoRedo.add(c);
     670        UndoRedoHandler.getInstance().add(c);
    670671        if (!wayIsFinished) {
    671672            lastUsedNode = n;
     
    13821383        @Override
    13831384        public void actionPerformed(ActionEvent e) {
    1384             MainApplication.undoRedo.undo();
    1385             Command lastCmd = MainApplication.undoRedo.getLastCommand();
     1385            UndoRedoHandler.getInstance().undo();
     1386            Command lastCmd = UndoRedoHandler.getInstance().getLastCommand();
    13861387            if (lastCmd == null) return;
    13871388            Node n = null;
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java

    r14120 r14134  
    3737import org.openstreetmap.josm.command.SequenceCommand;
    3838import org.openstreetmap.josm.data.Bounds;
     39import org.openstreetmap.josm.data.UndoRedoHandler;
    3940import org.openstreetmap.josm.data.coor.EastNorth;
    4041import org.openstreetmap.josm.data.osm.DataIntegrityProblemException;
     
    497498                        moveCommand2 = new MoveCommand(movingNodeList.get(1), movement2.getX(), movement2.getY());
    498499                        Command c = new SequenceCommand(tr("Extrude Way"), moveCommand, moveCommand2);
    499                         MainApplication.undoRedo.add(c);
     500                        UndoRedoHandler.getInstance().add(c);
    500501                    } else {
    501502                        // reuse existing move commands
     
    512513                        //make a new move command
    513514                        moveCommand = new MoveCommand(new ArrayList<OsmPrimitive>(movingNodeList), bestMovement);
    514                         MainApplication.undoRedo.add(moveCommand);
     515                        UndoRedoHandler.getInstance().add(moveCommand);
    515516                    } else {
    516517                        //reuse existing move command
     
    594595            wnew.addNode(ws.lowerIndex+1, n);
    595596            DataSet ds = ws.way.getDataSet();
    596             MainApplication.undoRedo.add(new SequenceCommand(tr("Add a new node to an existing way"),
     597            UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Add a new node to an existing way"),
    597598                    new AddCommand(ds, n), new ChangeCommand(ds, ws.way, wnew)));
    598599        }
     
    626627        cmds.add(new AddCommand(ds, wnew));
    627628        Command c = new SequenceCommand(tr("Extrude Way"), cmds);
    628         MainApplication.undoRedo.add(c);
     629        UndoRedoHandler.getInstance().add(c);
    629630        ds.setSelected(wnew);
    630631    }
     
    715716        }
    716717        Command c = new SequenceCommand(tr("Extrude Way"), cmds);
    717         MainApplication.undoRedo.add(c);
     718        UndoRedoHandler.getInstance().add(c);
    718719        joinNodesIfCollapsed(changedNodes);
    719720    }
     
    727728        Command mergeCmd = MergeNodesAction.mergeNodes(changedNodes, targetNode, locNode);
    728729        if (mergeCmd != null) {
    729             MainApplication.undoRedo.add(mergeCmd);
     730            UndoRedoHandler.getInstance().add(mergeCmd);
    730731        } else {
    731732            // undo extruding command itself
    732             MainApplication.undoRedo.undo();
     733            UndoRedoHandler.getInstance().undo();
    733734        }
    734735    }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java

    r13964 r14134  
    2929import org.openstreetmap.josm.command.SequenceCommand;
    3030import org.openstreetmap.josm.data.Bounds;
     31import org.openstreetmap.josm.data.UndoRedoHandler;
    3132import org.openstreetmap.josm.data.coor.EastNorth;
    3233import org.openstreetmap.josm.data.osm.DataSelectionListener;
     
    478479                        virtualSegments.size(), virtualSegments.size());
    479480
    480                 MainApplication.undoRedo.add(new SequenceCommand(text, virtualCmds));
     481                UndoRedoHandler.getInstance().add(new SequenceCommand(text, virtualCmds));
    481482
    482483            } else if (alt && !ctrl && candidateNode != null) {
     
    495496                        final Command deleteCmd = DeleteCommand.delete(Collections.singleton(targetWay), true);
    496497                        if (deleteCmd != null) {
    497                             MainApplication.undoRedo.add(deleteCmd);
     498                            UndoRedoHandler.getInstance().add(deleteCmd);
    498499                        }
    499500                    } else {
    500                         MainApplication.undoRedo.add(new ChangeCommand(targetWay, newWay));
     501                        UndoRedoHandler.getInstance().add(new ChangeCommand(targetWay, newWay));
    501502                    }
    502503                } else if (candidateNode.isTagged()) {
     
    507508                    final Command deleteCmd = DeleteCommand.delete(Collections.singleton(candidateNode), true);
    508509                    if (deleteCmd != null) {
    509                         MainApplication.undoRedo.add(deleteCmd);
     510                        UndoRedoHandler.getInstance().add(deleteCmd);
    510511                    }
    511512                }
     
    517518                EastNorth cursorEN = mv.getEastNorth(mousePos.x, mousePos.y);
    518519
    519                 MainApplication.undoRedo.add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() - nodeEN.north()));
     520                UndoRedoHandler.getInstance().add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() - nodeEN.north()));
    520521            }
    521522        }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java

    r12969 r14134  
    1515import org.openstreetmap.josm.command.Command;
    1616import org.openstreetmap.josm.command.SequenceCommand;
     17import org.openstreetmap.josm.data.UndoRedoHandler;
    1718import org.openstreetmap.josm.data.coor.EastNorth;
    1819import org.openstreetmap.josm.data.osm.DataSet;
     
    2021import org.openstreetmap.josm.data.osm.NodeGraph;
    2122import org.openstreetmap.josm.data.osm.Way;
    22 import org.openstreetmap.josm.gui.MainApplication;
    2323import org.openstreetmap.josm.tools.Geometry;
    2424
     
    186186     */
    187187    public void commit() {
    188         MainApplication.undoRedo.add(new SequenceCommand("Make parallel way(s)", makeAddWayAndNodesCommandList()));
     188        UndoRedoHandler.getInstance().add(new SequenceCommand("Make parallel way(s)", makeAddWayAndNodesCommandList()));
    189189    }
    190190
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r13926 r14134  
    3131import org.openstreetmap.josm.command.ScaleCommand;
    3232import org.openstreetmap.josm.command.SequenceCommand;
     33import org.openstreetmap.josm.data.UndoRedoHandler;
    3334import org.openstreetmap.josm.data.coor.EastNorth;
    3435import org.openstreetmap.josm.data.coor.LatLon;
     
    718719                } else if (!selection.isEmpty()) {
    719720                    c = new MoveCommand(selection, startEN, currentEN);
    720                     MainApplication.undoRedo.add(c);
     721                    UndoRedoHandler.getInstance().add(c);
    721722                }
    722723                for (Node n : affectedNodes) {
     
    753754                        ((RotateCommand) c).handleEvent(currentEN);
    754755                    } else {
    755                         MainApplication.undoRedo.add(new RotateCommand(selection, currentEN));
     756                        UndoRedoHandler.getInstance().add(new RotateCommand(selection, currentEN));
    756757                    }
    757758                } else if (mode == Mode.SCALE) {
     
    759760                        ((ScaleCommand) c).handleEvent(currentEN);
    760761                    } else {
    761                         MainApplication.undoRedo.add(new ScaleCommand(selection, currentEN));
     762                        UndoRedoHandler.getInstance().add(new ScaleCommand(selection, currentEN));
    762763                    }
    763764                }
     
    808809     */
    809810    private static Command getLastCommandInDataset(DataSet ds) {
    810         Command lastCommand = MainApplication.undoRedo.getLastCommand();
     811        Command lastCommand = UndoRedoHandler.getInstance().getLastCommand();
    811812        if (lastCommand instanceof SequenceCommand) {
    812813            lastCommand = ((SequenceCommand) lastCommand).getLastCommand();
     
    834835            ed.showDialog();
    835836            if (ed.getValue() != 1) {
    836                 MainApplication.undoRedo.undo();
     837                UndoRedoHandler.getInstance().undo();
    837838            }
    838839        }
     
    860861
    861862            if (ed.getValue() != 1) {
    862                 MainApplication.undoRedo.undo();
     863                UndoRedoHandler.getInstance().undo();
    863864            }
    864865        } else {
     
    12601261                    "Add and move a virtual new node to {0} ways", virtualWays.size(),
    12611262                    virtualWays.size());
    1262             MainApplication.undoRedo.add(new SequenceCommand(text, virtualCmds));
     1263            UndoRedoHandler.getInstance().add(new SequenceCommand(text, virtualCmds));
    12631264            ds.setSelected(Collections.singleton((OsmPrimitive) virtualNode));
    12641265            clear();
  • trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java

    r13957 r14134  
    1313import org.openstreetmap.josm.command.Command;
    1414import org.openstreetmap.josm.command.SequenceCommand;
     15import org.openstreetmap.josm.data.UndoRedoHandler;
    1516import org.openstreetmap.josm.data.osm.DataSelectionListener;
    1617import org.openstreetmap.josm.data.osm.IPrimitive;
     
    4849        }
    4950        if (!cmds.isEmpty()) {
    50             MainApplication.undoRedo.add(new SequenceCommand(tr("Add selection to relation"), cmds));
     51            UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Add selection to relation"), cmds));
    5152            new Notification(
    5253                    "<html>"+
  • trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java

    r13278 r14134  
    1919
    2020import org.openstreetmap.josm.actions.JosmAction;
     21import org.openstreetmap.josm.data.UndoRedoHandler;
    2122import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
    2223import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
     
    4950        arrow = editButton.createArrow(this);
    5051        arrow.setToolTipText(tr("List of recent relations"));
    51         MainApplication.undoRedo.addCommandQueueListener(this);
     52        UndoRedoHandler.getInstance().addCommandQueueListener(this);
    5253        enableArrow();
    5354        shortcut = Shortcut.registerShortcut("relationeditor:editrecentrelation",
  • trunk/src/org/openstreetmap/josm/actions/upload/DiscardTagsHook.java

    r13809 r14134  
    1313import org.openstreetmap.josm.command.SequenceCommand;
    1414import org.openstreetmap.josm.data.APIDataSet;
     15import org.openstreetmap.josm.data.UndoRedoHandler;
    1516import org.openstreetmap.josm.data.osm.AbstractPrimitive;
    1617import org.openstreetmap.josm.data.osm.OsmPrimitive;
    17 import org.openstreetmap.josm.gui.MainApplication;
    1818
    1919/**
     
    4545            SequenceCommand removeKeys = new SequenceCommand(tr("Removed obsolete tags"),
    4646                    new ChangePropertyCommand(objectsToUpload, map));
    47             MainApplication.undoRedo.add(removeKeys);
     47            UndoRedoHandler.getInstance().add(removeKeys);
    4848        }
    4949        return true;
  • trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java

    r13597 r14134  
    1616import org.openstreetmap.josm.command.SequenceCommand;
    1717import org.openstreetmap.josm.data.APIDataSet;
     18import org.openstreetmap.josm.data.UndoRedoHandler;
    1819import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1920import org.openstreetmap.josm.data.osm.Relation;
    20 import org.openstreetmap.josm.gui.MainApplication;
    2121import org.openstreetmap.josm.spi.preferences.Config;
    2222import org.openstreetmap.josm.tools.Utils;
     
    205205
    206206            if (!cmds.isEmpty()) {
    207                 MainApplication.undoRedo.add(new SequenceCommand(tr("Fix deprecated tags"), cmds));
     207                UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Fix deprecated tags"), cmds));
    208208            }
    209209        }
  • trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java

    r13764 r14134  
    1818 * If you want to change a data set, you can use {@link #add(Command)} to execute a command on it and make that command undoable.
    1919 */
    20 public class UndoRedoHandler {
     20public final class UndoRedoHandler {
    2121
    2222    /**
     
    3434    private final LinkedList<CommandQueuePreciseListener> preciseListenerCommands = new LinkedList<>();
    3535
     36    private static class InstanceHolder {
     37        static final UndoRedoHandler INSTANCE = new UndoRedoHandler();
     38    }
     39
     40    /**
     41     * Returns the unique instance.
     42     * @return the unique instance
     43     * @since 14134
     44     */
     45    public static UndoRedoHandler getInstance() {
     46        return InstanceHolder.INSTANCE;
     47    }
     48
    3649    /**
    3750     * Constructs a new {@code UndoRedoHandler}.
    3851     */
    39     public UndoRedoHandler() {
    40         // Do nothing
     52    private UndoRedoHandler() {
     53        // Hide constructor
    4154    }
    4255
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r14128 r14134  
    241241     * The commands undo/redo handler.
    242242     * @since 12641
    243      */
    244     public static volatile UndoRedoHandler undoRedo;
     243     * @deprecated Use {@link UndoRedoHandler#getInstance}
     244     */
     245    @Deprecated
     246    public static final UndoRedoHandler undoRedo = UndoRedoHandler.getInstance();
    245247
    246248    private static final LayerChangeListener undoRedoCleaner = new LayerChangeListener() {
     
    360362    public MainApplication(MainFrame mainFrame) {
    361363        this.mainFrame = mainFrame;
    362         undoRedo = super.undoRedo;
    363364        getLayerManager().addLayerChangeListener(undoRedoCleaner);
    364365        ProjectionRegistry.setboundsProvider(mainBoundsProvider);
  • trunk/src/org/openstreetmap/josm/gui/MainMenu.java

    r13891 r14134  
    115115import org.openstreetmap.josm.actions.audio.AudioSlowerAction;
    116116import org.openstreetmap.josm.actions.search.SearchAction;
     117import org.openstreetmap.josm.data.UndoRedoHandler;
    117118import org.openstreetmap.josm.gui.dialogs.MenuItemSearchDialog;
    118119import org.openstreetmap.josm.gui.io.RecentlyOpenedFilesMenu;
     
    687688
    688689        add(editMenu, undo);
    689         MainApplication.undoRedo.addCommandQueueListener(undo);
     690        UndoRedoHandler.getInstance().addCommandQueueListener(undo);
    690691        add(editMenu, redo);
    691         MainApplication.undoRedo.addCommandQueueListener(redo);
     692        UndoRedoHandler.getInstance().addCommandQueueListener(redo);
    692693        editMenu.addSeparator();
    693694        add(editMenu, copy);
  • trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java

    r12920 r14134  
    1818import org.openstreetmap.josm.command.Command;
    1919import org.openstreetmap.josm.command.SequenceCommand;
     20import org.openstreetmap.josm.data.UndoRedoHandler;
    2021import org.openstreetmap.josm.data.coor.EastNorth;
    2122import org.openstreetmap.josm.data.osm.OsmPrimitive;
    22 import org.openstreetmap.josm.gui.MainApplication;
    2323import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2424import org.openstreetmap.josm.tools.I18n;
     
    6666            @I18n.QuirkyPluralString
    6767            final String title = title1 + ' ' + title2;
    68             MainApplication.undoRedo.add(new SequenceCommand(title, commands));
     68            UndoRedoHandler.getInstance().add(new SequenceCommand(title, commands));
    6969        }
    7070    }
  • trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java

    r14120 r14134  
    1616import org.openstreetmap.josm.Main;
    1717import org.openstreetmap.josm.command.AddPrimitivesCommand;
     18import org.openstreetmap.josm.data.UndoRedoHandler;
    1819import org.openstreetmap.josm.data.coor.EastNorth;
    1920import org.openstreetmap.josm.data.osm.NodeData;
     
    2526import org.openstreetmap.josm.data.projection.ProjectionRegistry;
    2627import org.openstreetmap.josm.gui.ExtendedDialog;
    27 import org.openstreetmap.josm.gui.MainApplication;
    2828import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
    2929import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    5959
    6060        /* Now execute the commands to add the duplicated contents of the paste buffer to the map */
    61         MainApplication.undoRedo.add(command);
     61        UndoRedoHandler.getInstance().add(command);
    6262        return true;
    6363    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java

    r13943 r14134  
    4040import org.openstreetmap.josm.command.Command;
    4141import org.openstreetmap.josm.command.PseudoCommand;
     42import org.openstreetmap.josm.data.UndoRedoHandler;
    4243import org.openstreetmap.josm.data.UndoRedoHandler.CommandAddedEvent;
    4344import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueCleanedEvent;
     
    237238            listener.updateEnabledState();
    238239        }
    239         MainApplication.undoRedo.addCommandQueuePreciseListener(this);
     240        UndoRedoHandler.getInstance().addCommandQueuePreciseListener(this);
    240241    }
    241242
     
    255256        undoTreeModel.setRoot(undoRoot);
    256257        redoTreeModel.setRoot(redoRoot);
    257         MainApplication.undoRedo.removeCommandQueuePreciseListener(this);
     258        UndoRedoHandler.getInstance().removeCommandQueuePreciseListener(this);
    258259    }
    259260
     
    270271
    271272    private void buildUndoTree() {
    272         List<Command> undoCommands = MainApplication.undoRedo.commands;
     273        List<Command> undoCommands = UndoRedoHandler.getInstance().commands;
    273274        undoRoot = new DefaultMutableTreeNode();
    274275        for (int i = 0; i < undoCommands.size(); ++i) {
     
    279280
    280281    private void buildRedoTree() {
    281         List<Command> redoCommands = MainApplication.undoRedo.redoCommands;
     282        List<Command> redoCommands = UndoRedoHandler.getInstance().redoCommands;
    282283        redoRoot = new DefaultMutableTreeNode();
    283284        for (int i = 0; i < redoCommands.size(); ++i) {
     
    288289
    289290    private void ensureTreesConsistency() {
    290         List<Command> undoCommands = MainApplication.undoRedo.commands;
    291         List<Command> redoCommands = MainApplication.undoRedo.redoCommands;
     291        List<Command> undoCommands = UndoRedoHandler.getInstance().commands;
     292        List<Command> redoCommands = UndoRedoHandler.getInstance().redoCommands;
    292293        if (redoTreeModel.getChildCount(redoRoot) > 0) {
    293294            redoTree.scrollRowToVisible(0);
     
    505506            case UNDO:
    506507                int numUndo = ((DefaultMutableTreeNode) undoTreeModel.getRoot()).getChildCount() - idx;
    507                 MainApplication.undoRedo.undo(numUndo);
     508                UndoRedoHandler.getInstance().undo(numUndo);
    508509                break;
    509510            case REDO:
    510511                int numRedo = idx+1;
    511                 MainApplication.undoRedo.redo(numRedo);
     512                UndoRedoHandler.getInstance().redo(numRedo);
    512513                break;
    513514            }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java

    r13842 r14134  
    4141import org.openstreetmap.josm.command.Command;
    4242import org.openstreetmap.josm.command.SequenceCommand;
     43import org.openstreetmap.josm.data.UndoRedoHandler;
    4344import org.openstreetmap.josm.data.conflict.Conflict;
    4445import org.openstreetmap.josm.data.conflict.ConflictCollection;
     
    523524                }
    524525            }
    525             MainApplication.undoRedo.add(new SequenceCommand(name, commands));
     526            UndoRedoHandler.getInstance().add(new SequenceCommand(name, commands));
    526527            refreshView();
    527528        }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java

    r12663 r14134  
    1818
    1919import org.openstreetmap.josm.Main;
     20import org.openstreetmap.josm.data.UndoRedoHandler;
    2021import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
    2122import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2223import org.openstreetmap.josm.gui.ExtendedDialog;
    23 import org.openstreetmap.josm.gui.MainApplication;
    2424import org.openstreetmap.josm.gui.conflict.pair.ConflictResolver;
    2525import org.openstreetmap.josm.gui.help.HelpBrowser;
     
    204204                }
    205205            }
    206             MainApplication.undoRedo.add(resolver.buildResolveCommand());
     206            UndoRedoHandler.getInstance().add(resolver.buildResolveCommand());
    207207            buttonAction(1, evt);
    208208        }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java

    r13940 r14134  
    3535import org.openstreetmap.josm.actions.relation.EditRelationAction;
    3636import org.openstreetmap.josm.command.Command;
     37import org.openstreetmap.josm.data.UndoRedoHandler;
    3738import org.openstreetmap.josm.data.osm.DataSelectionListener;
    3839import org.openstreetmap.josm.data.osm.DataSet;
     
    560561                final Command fixCommand = error.getFix();
    561562                if (fixCommand != null) {
    562                     SwingUtilities.invokeAndWait(() -> MainApplication.undoRedo.addNoRedraw(fixCommand));
     563                    SwingUtilities.invokeAndWait(() -> UndoRedoHandler.getInstance().addNoRedraw(fixCommand));
    563564                }
    564565                // It is wanted to ignore an error if it said fixable, even if fixCommand was null
     
    591592                monitor.subTask(tr("Updating map ..."));
    592593                SwingUtilities.invokeAndWait(() -> {
    593                     MainApplication.undoRedo.afterAdd(null);
     594                    UndoRedoHandler.getInstance().afterAdd(null);
    594595                    invalidateValidatorLayers();
    595596                    tree.resetErrors();
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

    r14102 r14134  
    5959import org.openstreetmap.josm.command.ChangePropertyCommand;
    6060import org.openstreetmap.josm.command.Command;
     61import org.openstreetmap.josm.data.UndoRedoHandler;
    6162import org.openstreetmap.josm.data.osm.AbstractPrimitive;
    6263import org.openstreetmap.josm.data.osm.DataSelectionListener;
     
    844845            Command command = TaggingPreset.createCommand(getSelection(), tags);
    845846            if (command != null) {
    846                 MainApplication.undoRedo.add(command);
     847                UndoRedoHandler.getInstance().add(command);
    847848            }
    848849        }
     
    10111012
    10121013            Collection<OsmPrimitive> sel = Main.main.getInProgressSelection();
    1013             MainApplication.undoRedo.add(new ChangePropertyCommand(sel, tags));
     1014            UndoRedoHandler.getInstance().add(new ChangePropertyCommand(sel, tags));
    10141015
    10151016            membershipTable.clearSelection();
     
    10421043                rel.removeMembersFor(primitive);
    10431044            }
    1044             MainApplication.undoRedo.add(new ChangeCommand(cur, rel));
     1045            UndoRedoHandler.getInstance().add(new ChangeCommand(cur, rel));
    10451046
    10461047            tagTable.clearSelection();
     
    11641165            if (sel.isEmpty() || clipboard == null || sel.iterator().next().getDataSet().isLocked())
    11651166                return;
    1166             MainApplication.undoRedo.add(new ChangePropertyCommand(sel, key, Utils.strip(clipboard)));
     1167            UndoRedoHandler.getInstance().add(new ChangePropertyCommand(sel, key, Utils.strip(clipboard)));
    11671168        }
    11681169    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java

    r13597 r14134  
    6868import org.openstreetmap.josm.command.Command;
    6969import org.openstreetmap.josm.command.SequenceCommand;
     70import org.openstreetmap.josm.data.UndoRedoHandler;
    7071import org.openstreetmap.josm.data.osm.OsmPrimitive;
    7172import org.openstreetmap.josm.data.osm.Tag;
     
    8182import org.openstreetmap.josm.gui.ExtendedDialog;
    8283import org.openstreetmap.josm.gui.IExtendedDialog;
    83 import org.openstreetmap.josm.gui.MainApplication;
    8484import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
    8585import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
     
    508508                return;
    509509            if (key.equals(newkey) || value == null) {
    510                 MainApplication.undoRedo.add(new ChangePropertyCommand(sel, newkey, value));
     510                UndoRedoHandler.getInstance().add(new ChangePropertyCommand(sel, newkey, value));
    511511                AutoCompletionManager.rememberUserInput(newkey, value, true);
    512512            } else {
     
    542542                    AutoCompletionManager.rememberUserInput(newkey, value, false);
    543543                }
    544                 MainApplication.undoRedo.add(new SequenceCommand(
     544                UndoRedoHandler.getInstance().add(new SequenceCommand(
    545545                        trn("Change properties of up to {0} object",
    546546                                "Change properties of up to {0} objects", sel.size(), sel.size()),
     
    10771077            AutoCompletionManager.rememberUserInput(key, value, false);
    10781078            commandCount++;
    1079             MainApplication.undoRedo.add(new ChangePropertyCommand(sel, key, value));
     1079            UndoRedoHandler.getInstance().add(new ChangePropertyCommand(sel, key, value));
    10801080            changedKey = key;
    10811081            clearEntries();
     
    10881088
    10891089        public void undoAllTagsAdding() {
    1090             MainApplication.undoRedo.undo(commandCount);
     1090            UndoRedoHandler.getInstance().undo(commandCount);
    10911091        }
    10921092
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java

    r14030 r14134  
    1212
    1313import org.openstreetmap.josm.Main;
     14import org.openstreetmap.josm.data.UndoRedoHandler;
    1415import org.openstreetmap.josm.data.UndoRedoHandler.CommandQueueListener;
    1516import org.openstreetmap.josm.data.osm.Relation;
    1617import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    1718import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
    18 import org.openstreetmap.josm.gui.MainApplication;
    1919import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
    2020import org.openstreetmap.josm.tools.ImageProvider;
     
    4646            rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(sc.getKeyStroke(), "refresh");
    4747        }
    48         MainApplication.undoRedo.addCommandQueueListener(this);
     48        UndoRedoHandler.getInstance().addCommandQueueListener(this);
    4949        updateEnabledState();
    5050    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java

    r14029 r14134  
    1515import org.openstreetmap.josm.command.ChangeCommand;
    1616import org.openstreetmap.josm.command.conflict.ConflictAddCommand;
     17import org.openstreetmap.josm.data.UndoRedoHandler;
    1718import org.openstreetmap.josm.data.conflict.Conflict;
    1819import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
     
    6768        if (newRelation.getMembersCount() == 0 && !newRelation.hasKeys())
    6869            return;
    69         MainApplication.undoRedo.add(new AddCommand(getLayer().getDataSet(), newRelation));
     70        UndoRedoHandler.getInstance().add(new AddCommand(getLayer().getDataSet(), newRelation));
    7071
    7172        // make sure everybody is notified about the changes
     
    8990        editorAccess.getMemberTableModel().applyToRelation(editedRelation);
    9091        Conflict<Relation> conflict = new Conflict<>(editorAccess.getEditor().getRelation(), editedRelation);
    91         MainApplication.undoRedo.add(new ConflictAddCommand(getLayer().getDataSet(), conflict));
     92        UndoRedoHandler.getInstance().add(new ConflictAddCommand(getLayer().getDataSet(), conflict));
    9293    }
    9394
     
    102103        getMemberTableModel().applyToRelation(editedRelation);
    103104        if (!editedRelation.hasEqualSemanticAttributes(originRelation, false)) {
    104             MainApplication.undoRedo.add(new ChangeCommand(originRelation, editedRelation));
     105            UndoRedoHandler.getInstance().add(new ChangeCommand(originRelation, editedRelation));
    105106        }
    106107    }
  • trunk/src/org/openstreetmap/josm/gui/io/AsynchronousUploadPrimitivesTask.java

    r14052 r14134  
    99
    1010import org.openstreetmap.josm.data.APIDataSet;
     11import org.openstreetmap.josm.data.UndoRedoHandler;
    1112import org.openstreetmap.josm.data.osm.Changeset;
    1213import org.openstreetmap.josm.gui.MainApplication;
     
    120121        GuiHelper.runInEDTAndWait(() -> {
    121122            // Remove the commands from the undo stack
    122             MainApplication.undoRedo.clean(uploadDataLayer.getDataSet());
     123            UndoRedoHandler.getInstance().clean(uploadDataLayer.getDataSet());
    123124            MainApplication.getLayerManager().prepareLayerForUpload(uploadDataLayer);
    124125
  • trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java

    r14129 r14134  
    3939import org.openstreetmap.josm.gui.io.importexport.GpxImporter;
    4040import org.openstreetmap.josm.gui.layer.gpx.ChooseTrackVisibilityAction;
     41import org.openstreetmap.josm.gui.layer.gpx.ConvertFromGpxLayerAction;
    4142import org.openstreetmap.josm.gui.layer.gpx.CustomizeDrawingAction;
    4243import org.openstreetmap.josm.gui.layer.gpx.DownloadAlongTrackAction;
    4344import org.openstreetmap.josm.gui.layer.gpx.DownloadWmsAlongTrackAction;
    44 import org.openstreetmap.josm.gui.layer.gpx.ConvertFromGpxLayerAction;
    4545import org.openstreetmap.josm.gui.layer.gpx.GpxDrawHelper;
    4646import org.openstreetmap.josm.gui.layer.gpx.ImportAudioAction;
  • trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r14075 r14134  
    5252import org.openstreetmap.josm.data.DataSource;
    5353import org.openstreetmap.josm.data.ProjectionBounds;
     54import org.openstreetmap.josm.data.UndoRedoHandler;
    5455import org.openstreetmap.josm.data.conflict.Conflict;
    5556import org.openstreetmap.josm.data.conflict.ConflictCollection;
     
    618619            return;
    619620
    620         MainApplication.undoRedo.clean(data);
     621        UndoRedoHandler.getInstance().clean(data);
    621622
    622623        // if uploaded, clean the modified flags as well
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java

    r13926 r14134  
    3737import org.openstreetmap.josm.command.Command;
    3838import org.openstreetmap.josm.command.SequenceCommand;
     39import org.openstreetmap.josm.data.UndoRedoHandler;
    3940import org.openstreetmap.josm.data.osm.DataSet;
    4041import org.openstreetmap.josm.data.osm.IPrimitive;
     
    402403            Command cmd = createCommand(sel, getChangedTags());
    403404            if (cmd != null) {
    404                 MainApplication.undoRedo.add(cmd);
     405                UndoRedoHandler.getInstance().add(cmd);
    405406            }
    406407        } else if (answer == DIALOG_ANSWER_NEW_RELATION) {
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java

    r13259 r14134  
    3131import org.openstreetmap.josm.Main;
    3232import org.openstreetmap.josm.command.ChangePropertyCommand;
     33import org.openstreetmap.josm.data.UndoRedoHandler;
    3334import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3435import org.openstreetmap.josm.gui.ExtendedDialog;
     
    259260                    String key = (String) tm.getValueAt(i, 1);
    260261                    Object value = tm.getValueAt(i, 2);
    261                     MainApplication.undoRedo.add(new ChangePropertyCommand(sel,
     262                    UndoRedoHandler.getInstance().add(new ChangePropertyCommand(sel,
    262263                            key, value instanceof String ? (String) value : ""));
    263264                }
     
    313314            if (MainApplication.getLayerManager().getEditDataSet() != null) {
    314315                for (String[] row : keyValue) {
    315                     MainApplication.undoRedo.add(new ChangePropertyCommand(primitives, row[0], row[1]));
     316                    UndoRedoHandler.getInstance().add(new ChangePropertyCommand(primitives, row[0], row[1]));
    316317                }
    317318            }
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java

    r12846 r14134  
    1010import org.openstreetmap.josm.actions.AutoScaleAction;
    1111import org.openstreetmap.josm.command.AddCommand;
     12import org.openstreetmap.josm.data.UndoRedoHandler;
    1213import org.openstreetmap.josm.data.coor.LatLon;
    1314import org.openstreetmap.josm.data.osm.DataSet;
     
    101102            node = new Node(ll);
    102103            // Now execute the commands to add this node.
    103             MainApplication.undoRedo.add(new AddCommand(ds, node));
     104            UndoRedoHandler.getInstance().add(new AddCommand(ds, node));
    104105        }
    105106
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java

    r13827 r14134  
    1818import org.openstreetmap.josm.command.Command;
    1919import org.openstreetmap.josm.command.SequenceCommand;
     20import org.openstreetmap.josm.data.UndoRedoHandler;
    2021import org.openstreetmap.josm.data.coor.LatLon;
    2122import org.openstreetmap.josm.data.osm.DataSet;
     
    170171        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
    171172        commands.add(new AddCommand(ds, way));
    172         MainApplication.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
     173        UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Add way"), commands));
    173174        ds.setSelected(way);
    174175        if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
  • trunk/test/unit/org/openstreetmap/josm/actions/mapmode/DrawActionTest.java

    r14005 r14134  
    1616import org.junit.Rule;
    1717import org.junit.Test;
     18import org.openstreetmap.josm.data.UndoRedoHandler;
    1819import org.openstreetmap.josm.data.coor.EastNorth;
    1920import org.openstreetmap.josm.data.osm.DataSet;
     
    9192            assertNotNull(renderer.getListCellRendererComponent(lstPrimitives, n3, 0, false, false));
    9293
    93             MainApplication.undoRedo.undo();
     94            UndoRedoHandler.getInstance().undo();
    9495
    9596            assertEquals(2, w.getNodesCount());
  • trunk/test/unit/org/openstreetmap/josm/actions/upload/FixDataHookTest.java

    r12729 r14134  
    1515import org.openstreetmap.josm.command.SequenceCommand;
    1616import org.openstreetmap.josm.data.APIDataSet;
     17import org.openstreetmap.josm.data.UndoRedoHandler;
    1718import org.openstreetmap.josm.data.osm.DataSet;
    1819import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1920import org.openstreetmap.josm.data.osm.Relation;
    2021import org.openstreetmap.josm.data.osm.Way;
    21 import org.openstreetmap.josm.gui.MainApplication;
    2222import org.openstreetmap.josm.testutils.JOSMTestRules;
    2323
     
    4242    public void testCheckUpload() {
    4343        // Empty data set
    44         MainApplication.undoRedo.commands.clear();
     44        UndoRedoHandler.getInstance().commands.clear();
    4545        new FixDataHook().checkUpload(new APIDataSet());
    46         assertTrue(MainApplication.undoRedo.commands.isEmpty());
     46        assertTrue(UndoRedoHandler.getInstance().commands.isEmpty());
    4747
    4848        // Complete data set (except empty node which cannot be tested anymore)
     
    7676        ads.init(new DataSet(emptyWay, emptyRelation, w1, w2, w3, w4, w5, w6, w7, r1, r2));
    7777
    78         MainApplication.undoRedo.commands.clear();
     78        UndoRedoHandler.getInstance().commands.clear();
    7979        new FixDataHook().checkUpload(ads);
    80         assertEquals(1, MainApplication.undoRedo.commands.size());
     80        assertEquals(1, UndoRedoHandler.getInstance().commands.size());
    8181
    82         SequenceCommand seq = (SequenceCommand) MainApplication.undoRedo.commands.iterator().next();
     82        SequenceCommand seq = (SequenceCommand) UndoRedoHandler.getInstance().commands.iterator().next();
    8383        Collection<? extends OsmPrimitive> prims = seq.getParticipatingPrimitives();
    8484        assertNotNull(prims);
  • trunk/test/unit/org/openstreetmap/josm/command/SplitWayCommandTest.java

    r12828 r14134  
    1313import org.junit.Test;
    1414import org.openstreetmap.josm.command.SplitWayCommand.Strategy;
     15import org.openstreetmap.josm.data.UndoRedoHandler;
    1516import org.openstreetmap.josm.data.coor.LatLon;
    1617import org.openstreetmap.josm.data.osm.DataSet;
     
    2021import org.openstreetmap.josm.data.osm.RelationMember;
    2122import org.openstreetmap.josm.data.osm.Way;
    22 import org.openstreetmap.josm.gui.MainApplication;
    2323import org.openstreetmap.josm.testutils.JOSMTestRules;
    2424
     
    121121        final SplitWayCommand result = SplitWayCommand.splitWay(
    122122                w2, SplitWayCommand.buildSplitChunks(w2, Arrays.asList(n3, n4, n5)), new ArrayList<OsmPrimitive>(), strategy);
    123         MainApplication.undoRedo.add(result);
     123        UndoRedoHandler.getInstance().add(result);
    124124
    125125        assertEquals(6, route.getMembersCount());
  • trunk/test/unit/org/openstreetmap/josm/gui/dialogs/CommandStackDialogTest.java

    r12726 r14134  
    99import org.openstreetmap.josm.TestUtils;
    1010import org.openstreetmap.josm.command.Command;
     11import org.openstreetmap.josm.data.UndoRedoHandler;
    1112import org.openstreetmap.josm.data.osm.DataSet;
    1213import org.openstreetmap.josm.gui.MainApplication;
     
    5253            Command cmd1 = TestUtils.newCommand(ds);
    5354            Command cmd2 = TestUtils.newCommand(ds);
    54             MainApplication.undoRedo.add(cmd1);
    55             MainApplication.undoRedo.add(cmd2);
    56             MainApplication.undoRedo.undo(1);
     55            UndoRedoHandler.getInstance().add(cmd1);
     56            UndoRedoHandler.getInstance().add(cmd2);
     57            UndoRedoHandler.getInstance().undo(1);
    5758
    58             assertFalse(MainApplication.undoRedo.commands.isEmpty());
    59             assertFalse(MainApplication.undoRedo.redoCommands.isEmpty());
     59            assertFalse(UndoRedoHandler.getInstance().commands.isEmpty());
     60            assertFalse(UndoRedoHandler.getInstance().redoCommands.isEmpty());
    6061
    6162            MapFrame map = MainApplication.getMap();
     
    6869            assertFalse(dlg.isVisible());
    6970        } finally {
    70             MainApplication.undoRedo.clean();
     71            UndoRedoHandler.getInstance().clean();
    7172            MainApplication.getLayerManager().removeLayer(layer);
    7273        }
Note: See TracChangeset for help on using the changeset viewer.