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/07 16:04:34 UTC

svn commit: r1623019 - in /jmeter/trunk/src/core/org/apache/jmeter/gui: GuiPackage.java MainFrame.java UndoHistory.java action/UndoCommand.java

Author: pmouawad
Date: Sun Sep  7 14:04:34 2014
New Revision: 1623019

URL: http://svn.apache.org/r1623019
Log:
Bug 42248 - Undo-redo support on Test Plan tree modification
Correct toolbar undo/redo buttons disable/enable
Bugzilla Id: 42248

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/UndoHistory.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/UndoCommand.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java?rev=1623019&r1=1623018&r2=1623019&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java Sun Sep  7 14:04:34 2014
@@ -36,9 +36,11 @@ import javax.swing.SwingUtilities;
 
 import org.apache.jmeter.engine.util.ValueReplacer;
 import org.apache.jmeter.exceptions.IllegalUserActionException;
+import org.apache.jmeter.gui.UndoHistory.HistoryListener;
 import org.apache.jmeter.gui.tree.JMeterTreeListener;
 import org.apache.jmeter.gui.tree.JMeterTreeModel;
 import org.apache.jmeter.gui.tree.JMeterTreeNode;
+import org.apache.jmeter.gui.util.JMeterToolBar;
 import org.apache.jmeter.services.FileServer;
 import org.apache.jmeter.testbeans.TestBean;
 import org.apache.jmeter.testbeans.gui.TestBeanGUI;
@@ -63,7 +65,7 @@ import org.apache.log.Logger;
  * parts of the GUI.
  *
  */
-public final class GuiPackage implements LocaleChangeListener {
+public final class GuiPackage implements LocaleChangeListener, HistoryListener {
     /** Logging. */
     private static final Logger log = LoggingManager.getLoggerForClass();
 
@@ -137,7 +139,6 @@ public final class GuiPackage implements
         this.treeModel = treeModel;
         this.treeModel.addTreeModelListener(undoHistory);
         this.treeListener = treeListener;
-        JMeterUtils.addLocaleChangeListener(this);
     }
 
     /**
@@ -148,6 +149,16 @@ public final class GuiPackage implements
     public static GuiPackage getInstance() {
         return guiPack;
     }
+    
+    /**
+     * Register as listener of:
+     * - UndoHistory
+     * - Locale Changes
+     */
+    public void registerAsListener() {
+        this.undoHistory.registerHistoryListener(this);
+        JMeterUtils.addLocaleChangeListener(this);
+    }
 
     /**
      * When GuiPackage is requested for the first time, it should be given
@@ -796,7 +807,7 @@ public final class GuiPackage implements
      * @param offset int
      */
     public void goInHistory(int offset) {
-        undoHistory.getRelativeState(offset, this.treeModel);
+        undoHistory.moveInHistory(offset, this.treeModel);
     }
 
     /**
@@ -838,4 +849,12 @@ public final class GuiPackage implements
         return ret;
     }
 
+    /**
+     * Called when history changes, it updates toolbar
+     */
+    @Override
+    public void notifyChangeInHistory(UndoHistory history) {
+        ((JMeterToolBar)toolbar).updateUndoRedoIcons(history.canUndo(), history.canRedo());
+    }
+
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java?rev=1623019&r1=1623018&r2=1623019&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java Sun Sep  7 14:04:34 2014
@@ -502,7 +502,8 @@ public class MainFrame extends JFrame im
 
         tree.setSelectionRow(1);
         addWindowListener(new WindowHappenings());
-
+        // Building is complete, register as listener
+        GuiPackage.getInstance().registerAsListener();
         setTitle(DEFAULT_TITLE);
         setIconImage(JMeterUtils.getImage("icon-apache.png").getImage());// $NON-NLS-1$
         setWindowTitle(); // define AWT WM_CLASS string

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/UndoHistory.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/UndoHistory.java?rev=1623019&r1=1623018&r2=1623019&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/UndoHistory.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/UndoHistory.java Sun Sep  7 14:04:34 2014
@@ -45,6 +45,13 @@ public class UndoHistory implements Tree
      * 
      */
     private static final long serialVersionUID = -974269825492906010L;
+    
+    /**
+     * Interface to be implemented by components interested in UndoHistory
+     */
+    public interface HistoryListener {
+        void notifyChangeInHistory(UndoHistory history);
+    }
 
     /**
      * Avoid storing too many elements
@@ -95,6 +102,11 @@ public class UndoHistory implements Tree
      */
     private boolean working = false;
 
+    /**
+     * History listeners
+     */
+    private List<HistoryListener> listeners = new ArrayList<UndoHistory.HistoryListener>();
+
     public UndoHistory() {
     }
 
@@ -108,6 +120,7 @@ public class UndoHistory implements Tree
         log.debug("Clearing undo history");
         history.clear();
         position = INITIAL_POS;
+        notifyListeners();
     }
 
     /**
@@ -155,6 +168,7 @@ public class UndoHistory implements Tree
 
         log.debug("Added history element, position: " + position + ", size: " + history.size());
         working = false;
+        notifyListeners();
     }
 
     /**
@@ -163,7 +177,7 @@ public class UndoHistory implements Tree
      * @param offset        the direction to go to, usually -1 for undo or 1 for redo
      * @param acceptorModel TreeModel to accept the changes
      */
-    public void getRelativeState(int offset, JMeterTreeModel acceptorModel) {
+    public void moveInHistory(int offset, JMeterTreeModel acceptorModel) {
         log.debug("Moving history from position " + position + " with step " + offset + ", size is " + history.size());
         if (offset < 0 && !canUndo()) {
             log.warn("Can't undo, we're already on the last record");
@@ -198,6 +212,7 @@ public class UndoHistory implements Tree
         // refresh the all ui
         guiInstance.updateCurrentGui();
         guiInstance.getMainFrame().repaint();
+        notifyListeners();
     }
 
     /**
@@ -321,5 +336,22 @@ public class UndoHistory implements Tree
         }
         tree.setSelectionRow(savedSelected);
     }
+    
+    /**
+     * Register HistoryListener 
+     * @param listener
+     */
+    public void registerHistoryListener(HistoryListener listener) {
+        listeners.add(listener);
+    }
+    
+    /**
+     * Notify listener
+     */
+    private void notifyListeners() {
+        for (HistoryListener listener : listeners) {
+            listener.notifyChangeInHistory(this);
+        }
+    }
 
 }

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=1623019&r1=1623018&r2=1623019&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 Sun Sep  7 14:04:34 2014
@@ -47,16 +47,8 @@ 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);
         }