mstover1    2003/02/03 08:08:36

  Modified:    .        build.xml
               bin      jmeter.properties
               src/core/org/apache/jmeter/gui GuiPackage.java
               src/core/org/apache/jmeter/gui/action AbstractAction.java
                        ActionRouter.java AddParent.java AddToTree.java
                        Clear.java EditCommand.java Load.java Remove.java
                        Save.java
               src/core/org/apache/jmeter/gui/tree JMeterTreeListener.java
                        JMeterTreeModel.java JMeterTreeNode.java
               src/core/org/apache/jmeter/junit JMeterTest.java
               src/core/org/apache/jmeter/visualizers/gui
                        AbstractVisualizer.java
               src/protocol/http/org/apache/jmeter/protocol/http/control/gui
                        RecordController.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy
                        ProxyControl.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
                        ProxyControlGui.java
  Added:       src/core/org/apache/jmeter/gui UnsharedComponent.java
               src/protocol/http/org/apache/jmeter/protocol/http/control
                        RecordingController.java
  Log:
  Changing test tree to  hold TestElement objects instead of GUI objects.
  
  Revision  Changes    Path
  1.89      +35 -0     jakarta-jmeter/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/build.xml,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- build.xml 1 Feb 2003 15:07:25 -0000       1.88
  +++ build.xml 3 Feb 2003 16:08:34 -0000       1.89
  @@ -329,6 +329,11 @@
       <include name="README"/>
       <include name="LICENSE"/>
     </patternset>
  +  
  +  <patternset id="dist.sources">
  +  <include name="${src.dir}/"/>
  +  <include name="${docs.src}/"/>
  +  </patternset>
   
     <target name="dist" depends="assume-libs-present,clean,install,all-docs,test" 
description="Create the distribution packages.">
       <property name="dist.name" value="jakarta-jmeter-${version}"/>
  @@ -347,6 +352,36 @@
       <zip zipfile="${dist.dir}/${dist.name}.zip">
         <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
           <patternset refid="dist.binaries"/>
  +      </zipfileset>
  +    </zip>
  +    <tar destfile="${dist.dir}/${dist.name}-javadoc.tar" longfile="gnu">
  +      <tarfileset includes="${docs.api.dest}/" dir="." prefix="${dist.name}" 
defaultexcludes="yes"/>
  +    </tar>
  +    <gzip zipfile="${dist.dir}/${dist.name}-javadoc.tgz" 
src="${dist.dir}/${dist.name}-javadoc.tar" />
  +    <zip zipfile="${dist.dir}/${dist.name}-javadoc.zip">
  +      <zipfileset includes="${docs.api.dest}/" dir="." prefix="${dist.name}" 
defaultexcludes="yes"/>
  +    </zip>
  +  </target>
  +  
  +  <target name="src_dist" depends="assume-libs-present,clean,install,all-docs,test" 
description="Create the distribution packages.">
  +    <property name="dist.name" value="jakarta-jmeter-${version}"/>
  +    <mkdir dir="${dist.dir}"/>
  +    <!-- copy 3rd party libraries if not already there -->
  +    <copy todir="${lib.dir}" flatten="true">
  +      <fileset refid="external.jars"/>
  +    </copy>
  +    <tar destfile="${dist.dir}/${dist.name}.src.tar" longfile="gnu">
  +      <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" 
defaultexcludes="yes">
  +        <patternset refid="dist.binaries"/>
  +        <patternset refid="dist.sources"/>
  +      </tarfileset>
  +      <tarfileset mode="755" includes="${dist.executables}" dir="." 
prefix="${dist.name}" defaultexcludes="yes"/>
  +    </tar>
  +    <gzip zipfile="${dist.dir}/${dist.name}.src.tgz" 
src="${dist.dir}/${dist.name}.src.tar" />
  +    <zip zipfile="${dist.dir}/${dist.name}.src.zip">
  +      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
  +        <patternset refid="dist.binaries"/>
  +        <patternset refid="dist.sources"/>
         </zipfileset>
       </zip>
       <tar destfile="${dist.dir}/${dist.name}-javadoc.tar" longfile="gnu">
  
  
  
  1.53      +1 -1      jakarta-jmeter/bin/jmeter.properties
  
  Index: jmeter.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- jmeter.properties 29 Jan 2003 19:47:04 -0000      1.52
  +++ jmeter.properties 3 Feb 2003 16:08:35 -0000       1.53
  @@ -69,7 +69,7 @@
   #Logging levels for the logging categories in JMeter.  Correct values are 
FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
   log_level.jmeter=WARN
   log_level.jmeter.engine=WARN
  -log_level.jmeter.gui=WARN
  +log_level.jmeter.gui=DEBUG
   log_level.jmeter.elements=WARN
   log_level.jmeter.util=WARN
   log_level.jmeter.util.classfinder=WARN
  
  
  
  1.7       +149 -33   jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java
  
  Index: GuiPackage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/GuiPackage.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GuiPackage.java   6 Jan 2003 23:30:10 -0000       1.6
  +++ GuiPackage.java   3 Feb 2003 16:08:35 -0000       1.7
  @@ -52,15 +52,20 @@
    * information on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
    */
  - package org.apache.jmeter.gui;
  +package org.apache.jmeter.gui;
  +import java.util.HashMap;
  +import java.util.Map;
   
   import org.apache.jmeter.exceptions.IllegalUserActionException;
   import org.apache.jmeter.functions.ValueReplacer;
   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.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jorphan.collections.HashTree;
  -
  +import org.apache.log.Hierarchy;
  +import org.apache.log.Logger;
   /**
    * GuiPackage is a static class that provides convenient access to information 
about the 
    * current state of JMeter's GUI.  Any GUI class can grab a handle to GuiPackage by 
  @@ -75,30 +80,142 @@
    * @author Michael Stover
    * @version 1.0
    */
  -
   public class GuiPackage
   {
  -
  +     transient private static Logger log =
  +             Hierarchy.getDefaultHierarchy().getLoggerFor("jmeter.gui");
        private static GuiPackage guiPack;
        private boolean dirty = false;
  -
  +     private Map nodesToGui = new HashMap();
  +     private Map guis = new HashMap();
  +     private JMeterTreeNode currentNode = null;
        /**
  -      * GuiPackage is a Singleton class.
     * @see java.lang.Object#Object()
     
  */
  +      * GuiPackage is a Singleton class.
  +      * @see java.lang.Object#Object()
  +      */
        private GuiPackage()
  -     {
  -     }
  -
  +     {}
        private JMeterTreeModel treeModel;
        private org.apache.jmeter.gui.MainFrame mainFrame;
        private org.apache.jmeter.gui.tree.JMeterTreeListener treeListener;
  -
  +     public JMeterGUIComponent getGui(TestElement node, String guiClass)
  +     {
  +             log.debug("Getting gui for "+ node);
  +             try
  +             {
  +                     JMeterGUIComponent comp = (JMeterGUIComponent) 
nodesToGui.get(node);
  +                     log.debug("Gui retrieved = " + comp);
  +                     if (comp == null)
  +                     {
  +                             comp = (JMeterGUIComponent) guis.get(guiClass);
  +                             if (comp == null || comp instanceof UnsharedComponent)
  +                             {
  +                                     comp = (JMeterGUIComponent) 
Class.forName(guiClass).newInstance();
  +                                     if(!(comp instanceof UnsharedComponent))
  +                                     {
  +                                             guis.put(guiClass, comp);
  +                                     }
  +                             }
  +                             nodesToGui.put(node, comp);
  +                     }
  +                     return comp;
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Problem retrieving gui", e);
  +                     return null;
  +             }
  +     }
  +     
  +     public void removeNode(TestElement node)
  +     {
  +             nodesToGui.remove(node);
  +     }
  +     /**
  +      * Convenience method for grabbing the gui for the current node
  +      */
  +     public JMeterGUIComponent getCurrentGui()
  +     {
  +             try
  +             {
  +                     JMeterGUIComponent comp = 
getGui(treeListener.getCurrentNode().createTestElement());
  +                     if(!(comp instanceof UnsharedComponent))
  +                     {
  +                             
comp.configure(treeListener.getCurrentNode().createTestElement());
  +                     }
  +                     return comp;
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Problem retrieving gui", e);
  +                     return null;
  +             }
  +     }
  +     public TestElement createTestElement(String guiClass)
  +     {
  +             try
  +             {
  +                     JMeterGUIComponent comp = (JMeterGUIComponent) 
guis.get(guiClass);
  +                     if (comp == null || comp instanceof UnsharedComponent)
  +                     {
  +                             comp = (JMeterGUIComponent) 
Class.forName(guiClass).newInstance();
  +                             guis.put(guiClass, comp);
  +                     }
  +                     TestElement node = ((JMeterGUIComponent) 
Class.forName(guiClass).newInstance()).createTestElement();
  +                     nodesToGui.put(node, comp);
  +                     return node;
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Problem retrieving gui", e);
  +                     return null;
  +             }
  +     }
  +     public JMeterGUIComponent getGui(TestElement node)
  +     {
  +             try
  +             {
  +                     return getGui(node, 
node.getPropertyAsString(TestElement.GUI_CLASS));
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Problem retrieving gui", e);
  +                     return null;
  +             }
  +     }
  +     public void updateCurrentNode()
  +     {
  +             try
  +             {
  +                     if(currentNode != null)
  +                     {
  +                             log.debug("Updating current node " + 
currentNode.createTestElement());
  +                             JMeterGUIComponent comp = 
getGui(currentNode.createTestElement());
  +                             TestElement el = currentNode.createTestElement();
  +                             nodesToGui.remove(el);
  +                             currentNode.setUserObject(comp.createTestElement());
  +                             el = currentNode.createTestElement();
  +                             nodesToGui.put(el,comp);
  +                     }
  +                     currentNode = treeListener.getCurrentNode();
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Problem retrieving gui", e);
  +             }
  +     }
        /**
         * When GuiPackage is requested for the first time, it should be given handles 
to
  -      * JMeter's Tree Listener and TreeModel.  
      * @param listener The 
TreeListener for JMeter's test tree.
     * @param treeModel The model for JMeter's 
test tree.
   * @return GuiPackage
   */
  -     public static GuiPackage getInstance(JMeterTreeListener listener,
  -                                                     JMeterTreeModel treeModel)
  +      * JMeter's Tree Listener and TreeModel.  
  +      * @param listener The TreeListener for JMeter's test tree.
  +      * @param treeModel The model for JMeter's test tree.
  +      * @return GuiPackage
  +      */
  +     public static GuiPackage getInstance(
  +             JMeterTreeListener listener,
  +             JMeterTreeModel treeModel)
        {
  -             if(guiPack == null)
  +             if (guiPack == null)
                {
                        guiPack = new GuiPackage();
                        guiPack.setTreeListener(listener);
  @@ -106,68 +223,67 @@
                }
                return guiPack;
        }
  -
        /**
         * The dirty property is a flag that indicates whether there are parts of 
JMeter's test tree
         * that the user has not saved since last modification.  Various (@link 
Command actions) set
  -      * this property when components are modified/created/saved.
    * @param d
   
  */
  +      * this property when components are modified/created/saved.
  +      * @param d
  +      */
        public void setDirty(boolean d)
        {
                dirty = d;
        }
  -
        /**
         * Retrieves the state of the 'dirty' property, a flag that indicates if there 
are test
  -      * tree components that have been modified since they were last saved.
  * 
@return boolean
      */
  +      * tree components that have been modified since they were last saved.
  +      * @return boolean
  +      */
        public boolean isDirty()
        {
                return dirty;
        }
  -
  -     public boolean addSubTree(HashTree subTree) throws IllegalUserActionException
  +     public boolean addSubTree(HashTree subTree)
  +             throws IllegalUserActionException
        {
  -             return treeModel.addSubTree(subTree,treeListener.getCurrentNode());
  +             return treeModel.addSubTree(subTree, treeListener.getCurrentNode());
        }
  -
        public HashTree getCurrentSubTree()
        {
                return treeModel.getCurrentSubTree(treeListener.getCurrentNode());
        }
  -
        public static GuiPackage getInstance()
        {
                return guiPack;
        }
  -
        public JMeterTreeModel getTreeModel()
        {
                return treeModel;
        }
  -     
        public ValueReplacer getReplacer()
        {
  -             ValueReplacer replacer = new ValueReplacer(
  -                             ((TestPlan)((JMeterGUIComponent)
  -                             getTreeModel().getTestPlan().getArray()
  -                             [0]).createTestElement()).getUserDefinedVariables());
  +             ValueReplacer replacer =
  +                     new ValueReplacer(
  +                             ((TestPlan) ((JMeterGUIComponent) getTreeModel()
  +                                     .getTestPlan()
  +                                     .getArray()[0])
  +                                     .createTestElement())
  +                                     .getUserDefinedVariables());
                return replacer;
        }
  -
        public void setTreeModel(JMeterTreeModel newTreeModel)
        {
                treeModel = newTreeModel;
        }
  -
        public void setMainFrame(org.apache.jmeter.gui.MainFrame newMainFrame)
        {
                mainFrame = newMainFrame;
        }
  -
        public org.apache.jmeter.gui.MainFrame getMainFrame()
        {
                return mainFrame;
        }
  -     public void setTreeListener(org.apache.jmeter.gui.tree.JMeterTreeListener 
newTreeListener)
  +     public void setTreeListener(
  +             org.apache.jmeter.gui.tree.JMeterTreeListener newTreeListener)
        {
                treeListener = newTreeListener;
        }
  
  
  
  1.1                  
jakarta-jmeter/src/core/org/apache/jmeter/gui/UnsharedComponent.java
  
  Index: UnsharedComponent.java
  ===================================================================
  package org.apache.jmeter.gui;
  
  /**
   * @author Administrator
   *
   * To change this generated comment edit the template variable "typecomment":
   * Window>Preferences>Java>Templates.
   */
  public interface UnsharedComponent
  {}
  
  
  
  1.5       +2 -2      
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AbstractAction.java
  
  Index: AbstractAction.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AbstractAction.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractAction.java       17 Oct 2002 19:47:16 -0000      1.4
  +++ AbstractAction.java       3 Feb 2003 16:08:35 -0000       1.5
  @@ -5,7 +5,7 @@
   import java.util.LinkedList;
   import java.util.Set;
   
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jorphan.collections.HashTree;
   
  @@ -33,7 +33,7 @@
                Iterator iter = new LinkedList(tree.list()).iterator();
                while (iter.hasNext())
                {
  -                     JMeterGUIComponent item = (JMeterGUIComponent)iter.next();
  +                     JMeterTreeNode item = (JMeterTreeNode)iter.next();
                        if(item.isEnabled())
                        {
                                convertSubTree(tree.getTree(item));
  
  
  
  1.8       +3 -1      
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/ActionRouter.java
  
  Index: ActionRouter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/ActionRouter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ActionRouter.java 17 Oct 2002 19:47:16 -0000      1.7
  +++ ActionRouter.java 3 Feb 2003 16:08:35 -0000       1.8
  @@ -64,10 +64,11 @@
   import java.util.Map;
   import java.util.Set;
   
  +import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jorphan.reflect.ClassFinder;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
  -import org.apache.jorphan.reflect.ClassFinder;
   
   /**
    *  Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -99,6 +100,7 @@
        {
                try
                {
  +                     GuiPackage.getInstance().updateCurrentNode();
                        Set commandObjects = (Set)commands.get(e.getActionCommand());
                        Iterator iter = commandObjects.iterator();
                        while(iter.hasNext())
  
  
  
  1.5       +4 -4      
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AddParent.java
  
  Index: AddParent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AddParent.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AddParent.java    31 Dec 2002 18:05:54 -0000      1.4
  +++ AddParent.java    3 Feb 2003 16:08:35 -0000       1.5
  @@ -60,8 +60,8 @@
   import java.util.Set;
   
   import org.apache.jmeter.gui.GuiPackage;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
  +import org.apache.jmeter.testelement.TestElement;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
   
  @@ -98,7 +98,7 @@
                String name = ((Component)e.getSource()).getName();
                try
                {
  -                     JMeterGUIComponent controller = 
(JMeterGUIComponent)Class.forName(name).newInstance();
  +                     TestElement controller = 
(TestElement)GuiPackage.getInstance().createTestElement(name);
                        addParentToTree(controller);
                }
                catch(Exception err)
  @@ -123,7 +123,7 @@
         *
         *@param newParent  !ToDo
         ***************************************/
  -     protected void addParentToTree(JMeterGUIComponent newParent)
  +     protected void addParentToTree(TestElement newParent)
        {
                GuiPackage guiPackage = GuiPackage.getInstance();
                JMeterTreeNode newNode = new JMeterTreeNode(newParent, 
guiPackage.getTreeModel());
  
  
  
  1.6       +8 -8      
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AddToTree.java
  
  Index: AddToTree.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/AddToTree.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AddToTree.java    31 Dec 2002 18:05:54 -0000      1.5
  +++ AddToTree.java    3 Feb 2003 16:08:35 -0000       1.6
  @@ -64,8 +64,8 @@
   import javax.swing.tree.TreePath;
   
   import org.apache.jmeter.gui.GuiPackage;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
  +import org.apache.jmeter.testelement.TestElement;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
   
  @@ -112,8 +112,8 @@
        {
                try
                {
  -                     JMeterGUIComponent gui = (JMeterGUIComponent) 
Class.forName(((JComponent)e.getSource()).getName()).newInstance();
  -                     addObjectToTree(gui);
  +                     TestElement node = 
GuiPackage.getInstance().createTestElement(((JComponent)e.getSource()).getName());
  +                     addObjectToTree(node);
                }
                catch(Exception err)
                {
  @@ -121,10 +121,10 @@
                }
        }
   
  -     protected void addObjectToTree(JMeterGUIComponent guiObject)
  +     protected void addObjectToTree(TestElement el)
        {
                GuiPackage guiPackage = GuiPackage.getInstance();
  -             JMeterTreeNode node = new JMeterTreeNode(guiObject, 
guiPackage.getTreeModel());
  +             JMeterTreeNode node = new JMeterTreeNode(el, 
guiPackage.getTreeModel());
                guiPackage.getTreeModel().insertNodeInto(node,
                                guiPackage.getTreeListener().getCurrentNode(),
                                
guiPackage.getTreeListener().getCurrentNode().getChildCount());
  
  
  
  1.4       +3 -3      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Clear.java
  
  Index: Clear.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Clear.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Clear.java        29 Aug 2002 18:17:38 -0000      1.3
  +++ Clear.java        3 Feb 2003 16:08:35 -0000       1.4
  @@ -110,7 +110,7 @@
                GuiPackage guiPackage = GuiPackage.getInstance();
                if (e.getActionCommand().equals(CLEAR))
                {
  -                     JMeterGUIComponent model = 
(JMeterGUIComponent)guiPackage.getTreeListener().getCurrentNode().getUserObject();
  +                     JMeterGUIComponent model = guiPackage.getCurrentGui();
                        try
                        {
                                ((Clearable)model).clear();
  @@ -127,7 +127,7 @@
                        {
                                try
                                {
  -                                     Clearable item = 
(Clearable)((JMeterTreeNode)iter.next()).getUserObject();
  +                                     Clearable item = 
(Clearable)guiPackage.getGui(((JMeterTreeNode)iter.next()).createTestElement());
                                        item.clear();
                                }
                                catch (Exception ex)
  
  
  
  1.3       +10 -7     
jakarta-jmeter/src/core/org/apache/jmeter/gui/action/EditCommand.java
  
  Index: EditCommand.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/EditCommand.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EditCommand.java  25 Aug 2002 19:42:20 -0000      1.2
  +++ EditCommand.java  3 Feb 2003 16:08:35 -0000       1.3
  @@ -1,8 +1,11 @@
   package org.apache.jmeter.gui.action;
   import java.awt.event.ActionEvent;
  -import java.util.*;
  -import org.apache.jmeter.gui.*;
  -import org.apache.jmeter.util.JMeterUtils;
  +import java.util.HashSet;
  +import java.util.Set;
  +
  +import org.apache.jmeter.gui.GuiPackage;
  +import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.gui.NamePanel;
   
   /****************************************
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -35,10 +38,10 @@
        {
                GuiPackage guiPackage = GuiPackage.getInstance();
                guiPackage.getMainFrame().setMainPanel((javax.swing.JComponent)
  -                                     
guiPackage.getTreeListener().getCurrentNode().getUserObject());
  +                                     guiPackage.getCurrentGui());
                guiPackage.getMainFrame().setEditMenu(
  -                             
((JMeterGUIComponent)guiPackage.getTreeListener().getCurrentNode().getUserObject()).createPopupMenu());
  -             if(!(guiPackage.getTreeListener().getCurrentNode().getUserObject() 
instanceof NamePanel))
  +                             
((JMeterGUIComponent)guiPackage.getTreeListener().getCurrentNode()).createPopupMenu());
  +             if(!(guiPackage.getCurrentGui() instanceof NamePanel))
                {
                        guiPackage.getMainFrame().setFileLoadEnabled(true);
                        guiPackage.getMainFrame().setFileSaveEnabled(true);
  
  
  
  1.11      +7 -10     jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java
  
  Index: Load.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Load.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Load.java 29 Dec 2002 14:20:56 -0000      1.10
  +++ Load.java 3 Feb 2003 16:08:35 -0000       1.11
  @@ -60,10 +60,10 @@
   import java.util.HashSet;
   import java.util.Iterator;
   import java.util.LinkedList;
  -import java.util.List;
   import java.util.Set;
   
   import javax.swing.JFileChooser;
  +
   import junit.framework.TestCase;
   
   import org.apache.jmeter.control.gui.WorkBenchGui;
  @@ -74,12 +74,9 @@
   import org.apache.jmeter.save.SaveService;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
  +import org.apache.jorphan.collections.HashTree;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
  -import org.apache.jorphan.collections.HashTree;
  -import org.apache.jorphan.collections.ListedHashTree;
  -import org.xml.sax.InputSource;
  -import org.xml.sax.XMLReader;
   
   /****************************************
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -158,7 +155,7 @@
         * Returns a boolean indicating whether the loaded tree was a full test plan
         * */
        public boolean insertLoadedTree(int id, HashTree tree) throws Exception, 
IllegalUserActionException {
  -             convertTree(tree);
  +             //convertTree(tree);
                boolean isTestPlan = GuiPackage.getInstance().addSubTree(tree);
                tree = GuiPackage.getInstance().getCurrentSubTree();                   
         
                ActionRouter.getInstance().actionPerformed(new ActionEvent(
  
  
  
  1.3       +1 -0      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Remove.java
  
  Index: Remove.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Remove.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Remove.java       25 Aug 2002 19:42:20 -0000      1.2
  +++ Remove.java       3 Feb 2003 16:08:35 -0000       1.3
  @@ -107,6 +107,7 @@
                for (int i = nodes.length - 1; i >= 0; i--)
                {
                                
guiPackage.getTreeModel().removeNodeFromParent(nodes[i]);
  +                             guiPackage.removeNode(nodes[i].createTestElement());
                }
                guiPackage.getTreeListener().getJTree().setSelectionRow(1);
   
  
  
  
  1.8       +6 -5      jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Save.java
  
  Index: Save.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/action/Save.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Save.java 29 Dec 2002 14:20:56 -0000      1.7
  +++ Save.java 3 Feb 2003 16:08:35 -0000       1.8
  @@ -63,15 +63,16 @@
   
   import javax.swing.JFileChooser;
   
  +import org.apache.jmeter.config.Arguments;
   import org.apache.jmeter.gui.GuiPackage;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.gui.util.FileDialoger;
   import org.apache.jmeter.save.SaveService;
   import org.apache.jmeter.testelement.TestElement;
  -import org.apache.log.Hierarchy;
  -import org.apache.log.Logger;
   import org.apache.jorphan.collections.HashTree;
   import org.apache.jorphan.collections.ListedHashTree;
  +import org.apache.log.Hierarchy;
  +import org.apache.log.Logger;
   
   /****************************************
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -188,7 +189,7 @@
                Iterator iter = new LinkedList(tree.list()).iterator();
                while (iter.hasNext())
                {
  -                     JMeterGUIComponent item = (JMeterGUIComponent)iter.next();
  +                     JMeterTreeNode item = (JMeterTreeNode)iter.next();
                        convertSubTree(tree.getTree(item));
                        TestElement testElement = item.createTestElement();
                        tree.replace(item,testElement);
  @@ -211,7 +212,7 @@
                public void testTreeConversion() throws Exception
                {
                        HashTree tree = new ListedHashTree();
  -                     JMeterGUIComponent root = new 
org.apache.jmeter.config.gui.ArgumentsPanel();
  +                     JMeterTreeNode root = new JMeterTreeNode(new Arguments(),null);
                        tree.add(root,root);
                        tree.getTree(root).add(root,root);
                        save.convertSubTree(tree);
  
  
  
  1.6       +2 -3      
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeListener.java
  
  Index: JMeterTreeListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeListener.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JMeterTreeListener.java   28 Jan 2003 19:49:52 -0000      1.5
  +++ JMeterTreeListener.java   3 Feb 2003 16:08:35 -0000       1.6
  @@ -357,7 +357,7 @@
                                {
                                        tree.setSelectionPath(currentPath);
                                }
  -                             if(getCurrentNode().getUserObject() instanceof 
JMeterGUIComponent)
  +                             if(getCurrentNode() instanceof JMeterGUIComponent)
                                {
                                        displayPopUp(e);
                                }
  @@ -437,7 +437,6 @@
        {
                try
                {
  -                     Object model = getCurrentNode().getUserObject();
                        MainFrame mainFrame = GuiPackage.getInstance().getMainFrame();
                        mainFrame.setEditMenu(menu);
                }
  @@ -450,7 +449,7 @@
   
        private void displayPopUp(MouseEvent e)
        {
  -             JPopupMenu pop = 
((JMeterGUIComponent)getCurrentNode().getUserObject()).createPopupMenu();
  +             JPopupMenu pop = 
((JMeterGUIComponent)getCurrentNode()).createPopupMenu();
                displayPopUp(e,pop);
        }
        
  
  
  
  1.8       +26 -16    
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java
  
  Index: JMeterTreeModel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JMeterTreeModel.java      31 Dec 2002 18:05:54 -0000      1.7
  +++ JMeterTreeModel.java      3 Feb 2003 16:08:35 -0000       1.8
  @@ -64,8 +64,7 @@
   import org.apache.jmeter.control.gui.TestPlanGui;
   import org.apache.jmeter.control.gui.WorkBenchGui;
   import org.apache.jmeter.exceptions.IllegalUserActionException;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  -import org.apache.jmeter.gui.NamePanel;
  +import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.testelement.WorkBench;
   import org.apache.jorphan.collections.HashTree;
  @@ -86,11 +85,8 @@
         ***************************************/
        public JMeterTreeModel()
        {
  -             super(new JMeterTreeNode(new NamePanel(), null));
  -             this.insertNodeInto(new JMeterTreeNode(new TestPlanGui(), this),
  -                             (JMeterTreeNode)getRoot(), 0);
  -             this.insertNodeInto(new JMeterTreeNode(new WorkBenchGui(), this),
  -                             (JMeterTreeNode)getRoot(), 1);
  +             super(new JMeterTreeNode(new WorkBenchGui().createTestElement(), 
null));
  +             initTree();
        }
   
        /****************************************
  @@ -121,11 +117,11 @@
                Iterator iter = subTree.list().iterator();
                while(iter.hasNext())
                {
  -                     JMeterGUIComponent item = (JMeterGUIComponent)iter.next();
  -                     if(item instanceof TestPlanGui)
  +                     TestElement item = (TestElement)iter.next();
  +                     if(item instanceof TestPlan)
                        {
                                current = 
(JMeterTreeNode)((JMeterTreeNode)getRoot()).getChildAt(0);
  -                             current.configure(item.createTestElement());
  +                             
((TestElement)current.getUserObject()).addTestElement(item);
                                addSubTree(subTree.getTree(item), current);
                                ret = true;
                        }
  @@ -145,14 +141,14 @@
         *@return                                !ToDo (Return description)
         *@exception IllegalUserActionException  !ToDo (Exception description)
         ***************************************/
  -     public JMeterTreeNode addComponent(Object component, JMeterTreeNode node)
  +     public JMeterTreeNode addComponent(TestElement component, JMeterTreeNode node)
                         throws IllegalUserActionException
        {
                if(node.getUserObject() instanceof AbstractConfigGui)
                {
                        throw new IllegalUserActionException("This node cannot hold 
sub-elements");
                }
  -             JMeterTreeNode newNode = new 
JMeterTreeNode((JMeterGUIComponent)component, this);
  +             JMeterTreeNode newNode = new JMeterTreeNode((TestElement)component, 
this);
                this.insertNodeInto(newNode, node, node.getChildCount());
                return newNode;
        }
  @@ -205,10 +201,24 @@
        public void clearTestPlan()
        {
                super.removeNodeFromParent((JMeterTreeNode)getChild(getRoot(), 0));
  -             this.insertNodeInto(new JMeterTreeNode(new TestPlanGui(), this),
  +             initTree();
  +     }
  +
  +     private void initTree()
  +     {
  +             TestElement tp = new TestPlanGui().createTestElement();
  +             TestElement wb = new WorkBenchGui().createTestElement();
  +             this.insertNodeInto(new JMeterTreeNode(tp, this),
                                (JMeterTreeNode)getRoot(), 0);
  -             super.removeNodeFromParent((JMeterTreeNode)getChild(getRoot(), 1));
  -             this.insertNodeInto(new JMeterTreeNode(new WorkBenchGui(), this),
  +             try
  +             {
  +                     super.removeNodeFromParent((JMeterTreeNode)getChild(getRoot(), 
1));
  +             }
  +             catch (RuntimeException e)
  +             {
  +             
  +             }
  +             this.insertNodeInto(new JMeterTreeNode(wb, this),
                                (JMeterTreeNode)getRoot(), 1);
        }
   }
  
  
  
  1.6       +50 -22    
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java
  
  Index: JMeterTreeNode.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JMeterTreeNode.java       2 Jan 2003 01:00:12 -0000       1.5
  +++ JMeterTreeNode.java       3 Feb 2003 16:08:35 -0000       1.6
  @@ -54,17 +54,18 @@
    */
   package org.apache.jmeter.gui.tree;
   
  -import javax.swing.tree.DefaultMutableTreeNode;
  -import javax.swing.tree.TreeNode;
  -import javax.swing.JPopupMenu;
   import java.util.Collection;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
  -import org.apache.jmeter.gui.GUIFactory;
   
  -import java.awt.event.MouseListener;
  -import java.awt.event.MouseEvent;
  -import org.apache.jmeter.testelement.TestElement;
   import javax.swing.ImageIcon;
  +import javax.swing.JPopupMenu;
  +import javax.swing.tree.DefaultMutableTreeNode;
  +
  +import org.apache.jmeter.gui.GUIFactory;
  +import org.apache.jmeter.gui.GuiPackage;
  +import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.testelement.TestElement;
  +import org.apache.log.Hierarchy;
  +import org.apache.log.Logger;
   
   /************************************************************
    *  Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -77,54 +78,81 @@
   public class JMeterTreeNode extends DefaultMutableTreeNode
        implements JMeterGUIComponent
   {
  +     transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(
  +                                     "jmeter.gui");
       JMeterTreeModel treeModel;
  +    boolean enabled = true;
   
   
  -     public JMeterTreeNode(JMeterGUIComponent userObj, JMeterTreeModel treeModel)
  +     public JMeterTreeNode(TestElement userObj, JMeterTreeModel treeModel)
        {
                super(userObj);
                this.treeModel = treeModel;
  -             userObj.setNode(this);
        }
   
        public boolean isEnabled()
        {
  -             return ((JMeterGUIComponent)getUserObject()).isEnabled();
  +             return enabled;
        }
   
        public void setEnabled(boolean enabled)
        {
  -             ((JMeterGUIComponent)getUserObject()).setEnabled(enabled);
  +             this.enabled = enabled;
        }
   
        public ImageIcon getIcon()
        {
  -             return GUIFactory.getIcon(getUserObject().getClass());
  +             try
  +             {
  +                     return 
GUIFactory.getIcon(Class.forName(createTestElement().getPropertyAsString(TestElement.GUI_CLASS)));
  +             }
  +             catch (ClassNotFoundException e)
  +             {
  +                     log.warn("Can't get icon for class " + 
  +                                     createTestElement(),e);
  +                     return null;
  +             }
        }
   
        public Collection getMenuCategories()
        {
  -             return ((JMeterGUIComponent)getUserObject()).getMenuCategories();
  +             try
  +             {
  +                     return 
GuiPackage.getInstance().getGui(createTestElement()).getMenuCategories();
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Can't get popup menu for gui",e);
  +                     return null;
  +             }
        }
   
        public JPopupMenu createPopupMenu()
        {
  -             return ((JMeterGUIComponent)getUserObject()).createPopupMenu();
  +             try
  +             {
  +                     return 
GuiPackage.getInstance().getGui(createTestElement()).createPopupMenu();
  +             }
  +             catch (Exception e)
  +             {
  +                     log.error("Can't get popup menu for gui",e);
  +                     return null;
  +             }
        }
   
        public void configure(TestElement element)
        {
  -             ((JMeterGUIComponent)getUserObject()).configure(element);
  +             
        }
   
        public TestElement createTestElement()
        {
  -             return ((JMeterGUIComponent)getUserObject()).createTestElement();
  +             return (TestElement)getUserObject();
        }
   
        public String getStaticLabel()
        {
  -             return ((JMeterGUIComponent)getUserObject()).getStaticLabel();
  +             return 
((TestElement)getUserObject()).getPropertyAsString(TestElement.NAME);
        }
   
        /************************************************************
  @@ -134,7 +162,7 @@
         ***********************************************************/
        public void setName(String name)
        {
  -             ((JMeterGUIComponent)getUserObject()).setName(name);
  +             ((TestElement)getUserObject()).setProperty(TestElement.NAME,name);
        }
   
        /************************************************************
  @@ -144,13 +172,13 @@
         ***********************************************************/
        public String getName()
        {
  -             return ((JMeterGUIComponent)getUserObject()).getName();
  +             return 
((TestElement)getUserObject()).getPropertyAsString(TestElement.NAME);
        }
   
   
       public void setNode(JMeterTreeNode node)
       {
  -        ((JMeterGUIComponent)getUserObject()).setNode(node);
  +        
       }
   
   
  
  
  
  1.7       +11 -7     jakarta-jmeter/src/core/org/apache/jmeter/junit/JMeterTest.java
  
  Index: JMeterTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/junit/JMeterTest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JMeterTest.java   31 Dec 2002 18:26:08 -0000      1.6
  +++ JMeterTest.java   3 Feb 2003 16:08:35 -0000       1.7
  @@ -12,13 +12,14 @@
   import junit.framework.TestCase;
   
   import org.apache.jmeter.gui.JMeterGUIComponent;
  +import org.apache.jmeter.gui.UnsharedComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.save.SaveService;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
  -import org.apache.log.Logger;
   import org.apache.jorphan.logging.LoggingManager;
   import org.apache.jorphan.reflect.ClassFinder;
  +import org.apache.log.Logger;
   
   /****************************************
    * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
  @@ -57,7 +58,7 @@
                        {
                                continue;
                        }
  -                     this.assertEquals("Failed on " + item.getClass().getName(), 
  +                     assertEquals("Failed on " + item.getClass().getName(), 
                                        item.getStaticLabel(), item.getName());
                        TestElement el = item.createTestElement();
                        assertEquals("GUI-CLASS: Failed on " + 
item.getClass().getName(), item.getClass().getName(),
  @@ -69,8 +70,11 @@
                        el.setProperty(TestElement.NAME, "hey, new name!:");
                        el.setProperty("NOT","Shouldn't be here");
                        TestElement el2 = item.createTestElement();
  -                     assertNull("GUI-CLASS: Failed on " + item.getClass().getName(),
  -                     el2.getProperty("NOT"));
  +                     if(!(item instanceof UnsharedComponent))
  +                     {
  +                             assertNull("GUI-CLASS: Failed on " + 
item.getClass().getName(),
  +                                             el2.getProperty("NOT"));
  +                     }
                        el = 
SaveService.createTestElement(SaveService.getConfigForTestElement(null,
                                        el));
                        item.configure(el);
  @@ -178,8 +182,8 @@
   
        private void cloneTesting(TestElement item, TestElement clonedItem)
        {
  -             this.assertTrue(item != clonedItem);
  -             this.assertEquals("CLONE-SAME-CLASS: testing " + 
item.getClass().getName(),
  +             assertTrue(item != clonedItem);
  +             assertEquals("CLONE-SAME-CLASS: testing " + item.getClass().getName(),
                                item.getClass().getName(), 
clonedItem.getClass().getName());
        }
   
  
  
  
  1.5       +3 -2      
jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java
  
  Index: AbstractVisualizer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractVisualizer.java   30 Aug 2002 15:51:21 -0000      1.4
  +++ AbstractVisualizer.java   3 Feb 2003 16:08:36 -0000       1.5
  @@ -10,6 +10,7 @@
   
   import org.apache.jmeter.exceptions.IllegalUserActionException;
   import org.apache.jmeter.gui.AbstractJMeterGuiComponent;
  +import org.apache.jmeter.gui.UnsharedComponent;
   import org.apache.jmeter.gui.util.FilePanel;
   import org.apache.jmeter.gui.util.MenuFactory;
   import org.apache.jmeter.reporters.AbstractListenerElement;
  @@ -29,7 +30,7 @@
    ***************************************/
   
   public abstract class AbstractVisualizer extends AbstractJMeterGuiComponent
  -     implements Visualizer, ChangeListener {
  +     implements Visualizer, ChangeListener,UnsharedComponent {
                
        transient private static Logger log = 
Hierarchy.getDefaultHierarchy().getLoggerFor(
                        "jmeter.gui");
  
  
  
  1.2       +12 -0     
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/RecordingController.java
  
  
  
  
  1.3       +10 -1     
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/RecordController.java
  
  Index: RecordController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/RecordController.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RecordController.java     29 Dec 2002 18:05:19 -0000      1.2
  +++ RecordController.java     3 Feb 2003 16:08:36 -0000       1.3
  @@ -1,7 +1,9 @@
   package org.apache.jmeter.protocol.http.control.gui;
   
  -import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.control.gui.LogicControllerGui;
  +import org.apache.jmeter.protocol.http.control.RecordingController;
  +import org.apache.jmeter.testelement.TestElement;
  +import org.apache.jmeter.util.JMeterUtils;
   
   /**
    * @author Administrator
  @@ -15,5 +17,12 @@
        public String getStaticLabel()
        {
                return JMeterUtils.getResString("record_controller_title");
  +     }
  +     
  +     public TestElement createTestElement()
  +     {
  +             RecordingController con = new RecordingController();
  +             this.configureTestElement(con);
  +             return con;
        }
   }
  
  
  
  1.11      +12 -13    
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
  
  Index: ProxyControl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ProxyControl.java 31 Jan 2003 18:25:10 -0000      1.10
  +++ ProxyControl.java 3 Feb 2003 16:08:36 -0000       1.11
  @@ -64,20 +64,17 @@
   
   import org.apache.jmeter.config.ConfigElement;
   import org.apache.jmeter.config.ConfigTestElement;
  -import org.apache.jmeter.protocol.http.control.gui.RecordController;
   import org.apache.jmeter.exceptions.IllegalUserActionException;
   import org.apache.jmeter.functions.ValueReplacer;
   import org.apache.jmeter.gui.GuiPackage;
  -import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeModel;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
  -import org.apache.jmeter.protocol.http.config.gui.UrlConfigGui;
   import org.apache.jmeter.protocol.http.control.HeaderManager;
  +import org.apache.jmeter.protocol.http.control.RecordingController;
   import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui;
   import org.apache.jmeter.protocol.http.gui.HeaderPanel;
   import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
   import org.apache.jmeter.testelement.TestElement;
  -import org.apache.jmeter.threads.gui.ThreadGroupGui;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.log.Hierarchy;
   import org.apache.log.Logger;
  @@ -301,10 +298,10 @@
                ValueReplacer replacer = GuiPackage.getInstance().getReplacer();
                TestElement urlConfig = null;
                JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel();
  -             List nodes = treeModel.getNodesOfType(RecordController.class);
  +             List nodes = treeModel.getNodesOfType(RecordingController.class);
                if (nodes.size() == 0)
                {
  -                     nodes = treeModel.getNodesOfType(ThreadGroupGui.class);
  +                     nodes = treeModel.getNodesOfType(ThreadGroup.class);
                }
                Iterator iter = nodes.iterator();
                while (iter.hasNext())
  @@ -318,11 +315,12 @@
                   while (enum.hasMoreElements())
                   {
                       JMeterTreeNode subNode = (JMeterTreeNode) enum.nextElement();
  -                    JMeterGUIComponent sample =
  -                        (JMeterGUIComponent) subNode.getUserObject();
  -                    if (sample instanceof UrlConfigGui)
  +                    TestElement sample =
  +                        (TestElement) subNode.createTestElement();
  +                    if (sample.getPropertyAsString(TestElement.GUI_CLASS).equals(
  +                                                                     
"org.apache.jmeter.protocol.http.config.gui.UrlConfigGui"))
                       {
  -                        urlConfig = sample.createTestElement();
  +                        urlConfig = sample;
                           break;
                       }
                   }
  @@ -332,9 +330,10 @@
                       replacer.reverseReplace(sampler);
                       HttpTestSampleGui test = new HttpTestSampleGui();
                       test.configure(sampler);
  +                    sampler = (HTTPSampler)test.createTestElement();
                       try
                       {
  -                        JMeterTreeNode newNode = treeModel.addComponent(test, node);
  +                        JMeterTreeNode newNode = treeModel.addComponent(sampler, 
node);
                           for (int i = 0; subConfigs != null && i < 
subConfigs.length; i++)
                           {
                               if (subConfigs[i] instanceof HeaderManager)
  @@ -342,7 +341,7 @@
                                   HeaderPanel comp = new HeaderPanel();
                                   replacer.reverseReplace(subConfigs[i]);
                                   comp.configure(subConfigs[i]);
  -                                treeModel.addComponent(comp, newNode);
  +                                treeModel.addComponent(comp.createTestElement(), 
newNode);
                               }
                           }
                       }
  
  
  
  1.6       +16 -12    
jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
  
  Index: ProxyControlGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ProxyControlGui.java      31 Jan 2003 18:25:10 -0000      1.5
  +++ ProxyControlGui.java      3 Feb 2003 16:08:36 -0000       1.6
  @@ -87,12 +87,12 @@
   import org.apache.jmeter.gui.GuiPackage;
   import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.NamePanel;
  +import org.apache.jmeter.gui.UnsharedComponent;
   import org.apache.jmeter.gui.tree.JMeterTreeNode;
   import org.apache.jmeter.gui.util.MenuFactory;
   import org.apache.jmeter.gui.util.PowerTableModel;
   import org.apache.jmeter.protocol.http.proxy.ProxyControl;
   import org.apache.jmeter.testelement.TestElement;
  -import org.apache.jmeter.testelement.TestPlan;
   import org.apache.jmeter.util.JMeterUtils;
   
   /****************************************
  @@ -105,7 +105,7 @@
    ***************************************/
   
   public class ProxyControlGui extends JPanel implements JMeterGUIComponent, 
ActionListener,
  -             KeyListener,FocusListener
  +             KeyListener,FocusListener,UnsharedComponent
   {
   
        NamePanel namePanel;
  @@ -148,14 +148,17 @@
   
        public TestElement createTestElement()
        {
  -             ProxyControl element = new ProxyControl();
  -             element.setProperty(TestElement.NAME,getName());
  -             element.setPort(Integer.parseInt(portField.getText()));
  -             setIncludeListInProxyControl(element);
  -             setExcludeListInProxyControl(element);
  -             element.setProperty(TestElement.GUI_CLASS, this.getClass().getName());
  -             element.setProperty(TestElement.TEST_CLASS, 
element.getClass().getName());
  -             return element;
  +             if(model == null)
  +             {
  +                     model = new ProxyControl();
  +                     model.setProperty(TestElement.GUI_CLASS, 
this.getClass().getName());
  +                     model.setProperty(TestElement.TEST_CLASS, 
model.getClass().getName());
  +             }
  +             model.setProperty(TestElement.NAME,getName());
  +             model.setPort(Integer.parseInt(portField.getText()));
  +             setIncludeListInProxyControl(model);
  +             setExcludeListInProxyControl(model);
  +             return model;
        }
   
        protected void setIncludeListInProxyControl(ProxyControl element) {
  @@ -209,6 +212,7 @@
                portField.setText(element.getProperty(ProxyControl.PORT).toString());
                populateTable(includeModel,el.getIncludePatterns().iterator());
                populateTable(excludeModel,el.getExcludePatterns().iterator());
  +             model = el;
        }
   
        private void populateTable(PowerTableModel model,Iterator iter) {
  @@ -307,7 +311,7 @@
   
        private void enableRestart()
        {
  -             if(model != null)
  +             if(stop.isEnabled())
                {
                        restart.setEnabled(true);
                }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to