You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2014/09/06 23:59:19 UTC

svn commit: r1622945 - in /jmeter/trunk/src/core/org/apache/jmeter/gui: action/UndoCommand.java util/JMeterToolBar.java

Author: pmouawad
Date: Sat Sep  6 21:59:18 2014
New Revision: 1622945

URL: http://svn.apache.org/r1622945
Log:
Bug 42248 - Undo-redo support on Test Plan tree modification
Update icons state on redo/undo
Bugzilla Id: 42248

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java?rev=1622945&r1=1622944&r2=1622945&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java Sat Sep  6 21:59:18 2014
@@ -47,8 +47,12 @@ public class UndoCommand implements Comm
 
         if (command.equals(ActionNames.UNDO)) {
             guiPackage.goInHistory(-1);
+            guiPackage.getMainFrame().updateUndoRedoIcons(guiPackage.canUndo()
+                    ,guiPackage.canRedo());
         } else if (command.equals(ActionNames.REDO)) {
             guiPackage.goInHistory(1);
+            guiPackage.getMainFrame().updateUndoRedoIcons(guiPackage.canUndo()
+                    ,guiPackage.canRedo());
         } else {
             throw new IllegalArgumentException("Wrong action called: " + command);
         }

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java?rev=1622945&r1=1622944&r2=1622945&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java Sat Sep  6 21:59:18 2014
@@ -190,19 +190,12 @@ public class JMeterToolBar extends JTool
         buttonStates.put(ActionNames.ACTION_START_NO_TIMERS,Boolean.valueOf(!started));
         buttonStates.put(ActionNames.ACTION_STOP,Boolean.valueOf(started));
         buttonStates.put(ActionNames.ACTION_SHUTDOWN,Boolean.valueOf(started));
+        buttonStates.put(ActionNames.UNDO, Boolean.FALSE);
+        buttonStates.put(ActionNames.REDO, Boolean.FALSE);
         buttonStates.put(ActionNames.REMOTE_START_ALL,Boolean.valueOf(!started));
         buttonStates.put(ActionNames.REMOTE_STOP_ALL,Boolean.valueOf(started));
         buttonStates.put(ActionNames.REMOTE_SHUT_ALL,Boolean.valueOf(started));
-        Component[] components = getComponents();
-        for (int i = 0; i < components.length; i++) {
-            if(components[i]instanceof JButton) {
-                JButton button = (JButton) components[i];
-                Boolean enabled = buttonStates.get(button.getActionCommand());
-                if(enabled != null) {
-                    button.setEnabled(enabled.booleanValue());
-                }
-            }
-        }
+        updateButtons(buttonStates);
     }
     
     
@@ -216,16 +209,7 @@ public class JMeterToolBar extends JTool
         buttonStates.put(ActionNames.ACTION_START_NO_TIMERS,Boolean.valueOf(!started));
         buttonStates.put(ActionNames.ACTION_STOP,Boolean.valueOf(started));
         buttonStates.put(ActionNames.ACTION_SHUTDOWN,Boolean.valueOf(started));
-        Component[] components = getComponents();
-        for (int i = 0; i < components.length; i++) {
-            if(components[i]instanceof JButton) {
-                JButton button = (JButton) components[i];
-                Boolean enabled = buttonStates.get(button.getActionCommand());
-                if(enabled != null) {
-                    button.setEnabled(enabled.booleanValue());
-                }
-            }
-        }
+        updateButtons(buttonStates);
     }
     
     /**
@@ -237,6 +221,26 @@ public class JMeterToolBar extends JTool
         buttonStates.put(ActionNames.REMOTE_START_ALL,Boolean.valueOf(!started));
         buttonStates.put(ActionNames.REMOTE_STOP_ALL,Boolean.valueOf(started));
         buttonStates.put(ActionNames.REMOTE_SHUT_ALL,Boolean.valueOf(started));
+        updateButtons(buttonStates);
+    }
+
+    /**
+     * Change state of buttons after undo or redo
+     * @param canUndo
+     * @param canRedo
+     */
+    public void updateUndoRedoIcons(boolean canUndo, boolean canRedo) {
+        Map<String, Boolean> buttonStates = new HashMap<String, Boolean>(2);
+        buttonStates.put(ActionNames.UNDO, Boolean.valueOf(canUndo));
+        buttonStates.put(ActionNames.REDO, Boolean.valueOf(canRedo));
+        updateButtons(buttonStates);
+    }
+
+    /**
+     * 
+     * @param buttonStates Map<String, Boolean>
+     */
+    private void updateButtons(Map<String, Boolean> buttonStates) {
         Component[] components = getComponents();
         for (int i = 0; i < components.length; i++) {
             if(components[i]instanceof JButton) {