Ticket #7327: 7327.patch

File 7327.patch, 6.6 KB (added by simon04, 13 years ago)
  • src/org/openstreetmap/josm/Main.java

    diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
    index dce2e5a..df82f56 100644
    a b abstract public class Main {  
    266266        panel.add(gettingStarted, BorderLayout.CENTER);
    267267        menu = new MainMenu();
    268268
    269         undoRedo.listenerCommands.add(redoUndoListener);
     269        undoRedo.addCommandQueueListener(redoUndoListener);
    270270
    271271        // creating toolbar
    272272        contentPanePrivate.add(toolbar.control, BorderLayout.NORTH);
  • src/org/openstreetmap/josm/actions/RedoAction.java

    diff --git a/src/org/openstreetmap/josm/actions/RedoAction.java b/src/org/openstreetmap/josm/actions/RedoAction.java
    index 25a734d..dd90fe2 100644
    a b import java.awt.event.ActionEvent;  
    88import java.awt.event.KeyEvent;
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1112import org.openstreetmap.josm.tools.Shortcut;
    1213
    1314/**
    import org.openstreetmap.josm.tools.Shortcut;  
    1516 *
    1617 * @author imi
    1718 */
    18 public class RedoAction extends JosmAction {
     19public class RedoAction extends JosmAction implements OsmDataLayer.CommandQueueListener {
    1920
    2021    /**
    2122     * Construct the action with "Redo" as label.
    public class RedoAction extends JosmAction {  
    3839    protected void updateEnabledState() {
    3940        setEnabled(Main.main != null && !Main.main.undoRedo.redoCommands.isEmpty());
    4041    }
     42
     43    @Override
     44    public void commandChanged(int queueSize, int redoSize) {
     45        if (Main.main.undoRedo.redoCommands.isEmpty()) {
     46            putValue(NAME, tr("Redo"));
     47        } else {
     48            putValue(NAME, tr("Redo {0}", Main.main.undoRedo.redoCommands.getFirst().getDescrpitionText()));
     49        }
     50    }
    4151}
  • src/org/openstreetmap/josm/actions/UndoAction.java

    diff --git a/src/org/openstreetmap/josm/actions/UndoAction.java b/src/org/openstreetmap/josm/actions/UndoAction.java
    index 1c70de2..82a3b7c 100644
    a b import java.awt.event.ActionEvent;  
    88import java.awt.event.KeyEvent;
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1112import org.openstreetmap.josm.tools.Shortcut;
    1213
    1314/**
    import org.openstreetmap.josm.tools.Shortcut;  
    1516 *
    1617 * @author imi
    1718 */
    18 public class UndoAction extends JosmAction {
     19public class UndoAction extends JosmAction implements OsmDataLayer.CommandQueueListener {
    1920
    2021    /**
    2122     * Construct the action with "Undo" as label.
    public class UndoAction extends JosmAction {  
    3940        setEnabled(Main.main != null && !Main.main.undoRedo.commands.isEmpty());
    4041    }
    4142
     43    @Override
     44    public void commandChanged(int queueSize, int redoSize) {
     45        if (Main.main.undoRedo.commands.isEmpty()) {
     46            putValue(NAME, tr("Undo"));
     47        } else {
     48            putValue(NAME, tr("Undo {0}", Main.main.undoRedo.commands.getFirst().getDescrpitionText()));
     49        }
     50    }
    4251}
  • src/org/openstreetmap/josm/command/Command.java

    diff --git a/src/org/openstreetmap/josm/command/Command.java b/src/org/openstreetmap/josm/command/Command.java
    index 083623f..4f2d521 100644
    a b abstract public class Command extends PseudoCommand {  
    170170        return ((DefaultMutableTreeNode) description()).getUserObject();
    171171    }
    172172
     173    public String getDescrpitionText() {
     174        Object o = getDescription();
     175        if (o instanceof JLabel) {
     176            return ((JLabel) o).getText();
     177        } else {
     178            return o.toString();
     179        }
     180    }
     181
    173182    /**
    174183     * @deprecated use getDescription() and getChildren() instead
    175184     */
  • src/org/openstreetmap/josm/data/UndoRedoHandler.java

    diff --git a/src/org/openstreetmap/josm/data/UndoRedoHandler.java b/src/org/openstreetmap/josm/data/UndoRedoHandler.java
    index 85ad126..b948b40 100644
    a b public class UndoRedoHandler implements MapView.LayerChangeListener {  
    2323     */
    2424    public final LinkedList<Command> redoCommands = new LinkedList<Command>();
    2525
    26     public final LinkedList<CommandQueueListener> listenerCommands = new LinkedList<CommandQueueListener>();
     26    private final LinkedList<CommandQueueListener> listenerCommands = new LinkedList<CommandQueueListener>();
    2727
    2828    public UndoRedoHandler() {
    2929        MapView.addLayerChangeListener(this);
    public class UndoRedoHandler implements MapView.LayerChangeListener {  
    162162
    163163    public void layerAdded(Layer newLayer) {}
    164164    public void activeLayerChange(Layer oldLayer, Layer newLayer) {}
     165
     166    public void removeCommandQueueListener(CommandQueueListener l) {
     167        listenerCommands.remove(l);
     168    }
     169
     170    public boolean addCommandQueueListener(CommandQueueListener l) {
     171        return listenerCommands.add(l);
     172    }
    165173}
  • src/org/openstreetmap/josm/gui/MainMenu.java

    diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
    index ecbec2f..e8cfe74 100644
    a b public class MainMenu extends JMenuBar {  
    400400        add(fileMenu, exit);
    401401
    402402        add(editMenu, undo);
     403        Main.main.undoRedo.addCommandQueueListener(undo);
    403404        add(editMenu, redo);
     405        Main.main.undoRedo.addCommandQueueListener(redo);
    404406        editMenu.addSeparator();
    405407        add(editMenu, copy);
    406408        add(editMenu, copyCoordinates, true);
  • src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
    index a153cfc..5cfbd1f 100644
    a b public class CommandStackDialog extends ToggleDialog implements CommandQueueList  
    202202        for (IEnabledStateUpdating listener : showNotifyListener) {
    203203            listener.updateEnabledState();
    204204        }
    205         Main.main.undoRedo.listenerCommands.add(this);
     205        Main.main.undoRedo.addCommandQueueListener(this);
    206206    }
    207207
    208208    /**
    public class CommandStackDialog extends ToggleDialog implements CommandQueueList  
    218218    public void hideNotify() {
    219219        undoTreeModel.setRoot(new DefaultMutableTreeNode());
    220220        redoTreeModel.setRoot(new DefaultMutableTreeNode());
    221         Main.main.undoRedo.listenerCommands.remove(this);
     221        Main.main.undoRedo.removeCommandQueueListener(this);
    222222    }
    223223
    224224    /**