oros        2003/01/28 11:54:30

  Modified:    src/core/org/apache/jmeter/control/gui Tag:
                        refactorings_branch WorkBenchGui.java
               src/core/org/apache/jmeter/gui Tag: refactorings_branch
                        AbstractJMeterGuiComponent.java GUIFactory.java
                        JMeterGUIComponent.java NamePanel.java
               src/core/org/apache/jmeter/gui/document Tag:
                        refactorings_branch JMeterDocument.java
                        JMeterDocumentManager.java
               src/core/org/apache/jmeter/gui/panel Tag:
                        refactorings_branch TabbedMainPanel.java
                        TestPlanPanel.java
               src/core/org/apache/jmeter/gui/tree Tag: refactorings_branch
                        JMeterTreeNode.java TestPlanTreeNode.java
               src/core/org/apache/jmeter/gui/util Tag: refactorings_branch
                        DoubleFieldDocumentListener.java
                        IntegerFieldDocumentListener.java
                        LongFieldDocumentListener.java
                        StringFieldDocumentListener.java
               src/core/org/apache/jmeter/testelement Tag:
                        refactorings_branch AbstractNamedTestElement.java
                        AbstractTestElement.java RootElement.java
                        TestElement.java TestPlan.java
               src/core/org/apache/jmeter/testelement/property Tag:
                        refactorings_branch BooleanProperty.java
                        ElementProperty.java IntProperty.java
                        LongProperty.java ObjectProperty.java
                        PrimitiveProperty.java Property.java
                        StringProperty.java
               src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui
                        Tag: refactorings_branch ProxyControlGui.java
  Added:       src/core/org/apache/jmeter/gui/util Tag: refactorings_branch
                        AbstractFieldDocumentListener.java
  Log:
  dirty flag propagation
  gui instances per tab
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.4   +11 -51    
jakarta-jmeter/src/core/org/apache/jmeter/control/gui/WorkBenchGui.java
  
  Index: WorkBenchGui.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/control/gui/WorkBenchGui.java,v
  retrieving revision 1.4.2.3
  retrieving revision 1.4.2.4
  diff -u -r1.4.2.3 -r1.4.2.4
  --- WorkBenchGui.java 26 Jan 2003 22:22:00 -0000      1.4.2.3
  +++ WorkBenchGui.java 28 Jan 2003 19:54:28 -0000      1.4.2.4
  @@ -88,11 +88,8 @@
   
       NamePanel namePanel;
       private JMeterTreeNode node;
  +    private boolean isConfigured = false;
   
  -
  -    /****************************************
  -     * !ToDo (Constructor description)
  -     ***************************************/
       public WorkBenchGui()
       {
           namePanel = new NamePanel();
  @@ -100,41 +97,18 @@
           init();
       }
   
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
  +    public boolean isConfigured()
  +    {
  +        return isConfigured;
  +    }
  +
       public Collection getMenuCategories()
       {
           return null;
       }
   
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
  -    public String getName()
  -    {
  -        return namePanel.getName();
  -    }
  -
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@param name  !ToDo (Parameter description)
  -     ***************************************/
  -    public void setName(String name)
  -    {
  -        namePanel.setName(name);
  -    }
  -
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
  +
  +
       public NamedTestElement createTestElement()
       {
           WorkBench wb = new WorkBench();
  @@ -144,21 +118,11 @@
           return wb;
       }
   
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@param element  !ToDo (Parameter description)
  -     ***************************************/
       public void configure(TestElement element)
       {
           namePanel.configure(element);
       }
   
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
       public JPopupMenu createPopupMenu(NamedTestElement element)
       {
           JPopupMenu menu = new JPopupMenu();
  @@ -172,11 +136,6 @@
           return menu;
       }
   
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
       public String getStaticLabel()
       {
           return JMeterUtils.getResString("workbench");
  @@ -210,8 +169,9 @@
   
       public void setElement(TestElement element)
       {
  -        this.node = node;
  +        isConfigured = false;
           namePanel.setElement(element);
  +        isConfigured = true;
       }
   
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.5   +9 -0      
jakarta-jmeter/src/core/org/apache/jmeter/gui/AbstractJMeterGuiComponent.java
  
  Index: AbstractJMeterGuiComponent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/AbstractJMeterGuiComponent.java,v
  retrieving revision 1.4.2.4
  retrieving revision 1.4.2.5
  diff -u -r1.4.2.4 -r1.4.2.5
  --- AbstractJMeterGuiComponent.java   26 Jan 2003 22:22:00 -0000      1.4.2.4
  +++ AbstractJMeterGuiComponent.java   28 Jan 2003 19:54:28 -0000      1.4.2.5
  @@ -95,6 +95,7 @@
       protected NamePanel namePanel;
       private JLabel panelTitleLabel;
       private boolean namedPanel = true;
  +    private boolean isConfigured = false;
   
   
       /**
  @@ -138,6 +139,7 @@
        */
       public final void setElement(TestElement element)
       {
  +        isConfigured = false;
           this.element = element;
           if (namedPanel)
           {
  @@ -148,6 +150,7 @@
           } else {
               configure(element);
           }
  +        isConfigured = true;
       }
   
       /**
  @@ -285,5 +288,11 @@
       public JPopupMenu createPopupMenu(NamedTestElement testElement)
       {
           return null;
  +    }
  +
  +
  +    public boolean isConfigured()
  +    {
  +        return isConfigured;
       }
   }
  
  
  
  1.1.2.4   +1 -12     jakarta-jmeter/src/core/org/apache/jmeter/gui/GUIFactory.java
  
  Index: GUIFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/GUIFactory.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- GUIFactory.java   26 Jan 2003 22:22:00 -0000      1.1.2.3
  +++ GUIFactory.java   28 Jan 2003 19:54:28 -0000      1.1.2.4
  @@ -70,7 +70,6 @@
   public class GUIFactory
   {
   
  -    private static final Map guiMap = new HashMap();
       private static final Map iconMap = new HashMap();
       private static final Map guiClassMap = new HashMap();
   
  @@ -97,17 +96,7 @@
   
       public static synchronized JComponent getGUI(NamedTestElement element)
       {
  -        String key = element.getClass().getName();
  -        JComponent gui = (JComponent)guiMap.get(key);
  -
  -        if (gui != null)
  -        {
  -            return gui;
  -        }
  -        Class guiClass = getGuiClass(element.getClass());
  -        gui = createGuiInstance(guiClass);
  -        guiMap.put(key, gui);
  -        return gui;
  +        return createGuiInstance(getGuiClass(element.getClass()));
       }
   
   
  
  
  
  1.4.2.4   +10 -1     
jakarta-jmeter/src/core/org/apache/jmeter/gui/JMeterGUIComponent.java
  
  Index: JMeterGUIComponent.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/JMeterGUIComponent.java,v
  retrieving revision 1.4.2.3
  retrieving revision 1.4.2.4
  diff -u -r1.4.2.3 -r1.4.2.4
  --- JMeterGUIComponent.java   26 Jan 2003 22:22:00 -0000      1.4.2.3
  +++ JMeterGUIComponent.java   28 Jan 2003 19:54:28 -0000      1.4.2.4
  @@ -173,4 +173,13 @@
       public void setElement(TestElement element);
   
       public TestElement getElement();
  +
  +    /**
  +     * Answer true if configuration is finished. This information is used by 
document listeners to
  +     * decide wether a value update will be done or not.
  +     * 
  +     * @return
  +     */
  +    public boolean isConfigured();
  +
   }
  
  
  
  1.2.2.4   +23 -36    jakarta-jmeter/src/core/org/apache/jmeter/gui/NamePanel.java
  
  Index: NamePanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/NamePanel.java,v
  retrieving revision 1.2.2.3
  retrieving revision 1.2.2.4
  diff -u -r1.2.2.3 -r1.2.2.4
  --- NamePanel.java    26 Jan 2003 22:22:00 -0000      1.2.2.3
  +++ NamePanel.java    28 Jan 2003 19:54:28 -0000      1.2.2.4
  @@ -85,62 +85,35 @@
       private JTextField nameField;
       private JLabel nameLabel;
       private NamedTestElement element;
  +    private boolean isConfigured = false;
   
   
  -    /****************************************
  -     * !ToDo (Constructor description)
  -     ***************************************/
       public NamePanel()
       {
           init();
       }
   
   
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@param testElement  !ToDo (Parameter description)
  -     ***************************************/
  +    public boolean isConfigured()
  +    {
  +        return isConfigured;
  +    }
  +
       public void configure(TestElement testElement)
       {
           nameField.setText(((NamedTestElement)testElement).getName());
       }
   
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
       public JPopupMenu createPopupMenu(NamedTestElement testElement)
       {
           return null;
       }
   
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
       public String getStaticLabel()
       {
           return JMeterUtils.getResString("root");
       }
   
  -    /****************************************
  -     * !ToDoo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
  -    public Collection getMenuCategories()
  -    {
  -        return null;
  -    }
  -
  -    /****************************************
  -     * !ToDo (Method description)
  -     *
  -     *@return   !ToDo (Return description)
  -     ***************************************/
       public NamedTestElement createTestElement()
       {
           WorkBench wb = new WorkBench();
  @@ -165,13 +138,19 @@
           {
               public void insertUpdate(DocumentEvent e)
               {
  -                updateName(nameField.getText());
  +                if (isConfigured())
  +                {
  +                    updateName(nameField.getText());
  +                }
               }
   
   
               public void removeUpdate(DocumentEvent e)
               {
  -                updateName(nameField.getText());
  +                if (isConfigured())
  +                {
  +                    updateName(nameField.getText());
  +                }
               }
   
   
  @@ -201,8 +180,10 @@
       {
           if (element instanceof NamedTestElement)
           {
  +            isConfigured = false;
               this.element = (NamedTestElement)element;
               configure(element);
  +            isConfigured = true;
           }
       }
   
  @@ -210,5 +191,11 @@
       public TestElement getElement()
       {
           return element;
  +    }
  +
  +
  +    public Collection getMenuCategories()
  +    {
  +        return null;
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.5   +29 -13    
jakarta-jmeter/src/core/org/apache/jmeter/gui/document/Attic/JMeterDocument.java
  
  Index: JMeterDocument.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/document/Attic/JMeterDocument.java,v
  retrieving revision 1.1.2.4
  retrieving revision 1.1.2.5
  diff -u -r1.1.2.4 -r1.1.2.5
  --- JMeterDocument.java       27 Jan 2003 22:20:18 -0000      1.1.2.4
  +++ JMeterDocument.java       28 Jan 2003 19:54:28 -0000      1.1.2.5
  @@ -61,7 +61,7 @@
   
   import javax.swing.*;
   
  -import org.apache.jmeter.testelement.NamedTestElement;
  +import org.apache.jmeter.testelement.*;
   import org.apache.jmeter.gui.GUIFactory;
   
   
  @@ -71,11 +71,11 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
    */
  -public class JMeterDocument
  +public class JMeterDocument implements TestPlan.TestPlanObserver
   {
   
       private File file;
  -    private NamedTestElement rootElement;
  +    private NamedTestElement element;
       private String name;
       private NamedTestElement currentTestElement;
       private Collection listeners = new HashSet();
  @@ -89,8 +89,14 @@
       public JMeterDocument(String name, File file, NamedTestElement rootElement)
       {
           this.file = file;
  -        this.rootElement = rootElement;
  +        this.element = rootElement;
           this.name = name;
  +
  +        rootElement.resetDirty();
  +
  +        if (rootElement instanceof TestPlan) {
  +            ((TestPlan)element).setObserver(this);
  +        }
       }
   
   
  @@ -99,10 +105,15 @@
           return getFile() == null;
       }
   
  -    public boolean hasChanged()
  +    public boolean isDirty()
       {
  -        // todo: implement
  -        return isNew();
  +        return element.isDirty();
  +    }
  +
  +    public void resetDirty()
  +    {
  +        element.resetDirty();
  +        notifyListeners();
       }
   
       public File getFile()
  @@ -116,14 +127,14 @@
           notifyListeners();
       }
   
  -    public NamedTestElement getRootElement()
  +    public NamedTestElement getElement()
       {
  -        return rootElement;
  +        return element;
       }
   
  -    public void setRootElement(NamedTestElement rootElement)
  +    public void setElement(NamedTestElement element)
       {
  -        this.rootElement = rootElement;
  +        this.element = element;
       }
   
       public String getFileName()
  @@ -140,7 +151,7 @@
   
       public ImageIcon getIcon()
       {
  -        return GUIFactory.getIcon(getRootElement().getClass().getName() + "_TAB");
  +        return GUIFactory.getIcon(getElement().getClass().getName() + "_TAB");
       }
   
   
  @@ -171,6 +182,10 @@
           return name;
       }
   
  +    public void dirtyChanged(TestPlan element)
  +    {
  +        notifyListeners();
  +    }
   
       public synchronized void addListener(JMeterDocumentListener listener)
       {
  @@ -217,5 +232,6 @@
               }
           }
       }
  +
   
   }
  
  
  
  1.1.2.5   +5 -5      
jakarta-jmeter/src/core/org/apache/jmeter/gui/document/Attic/JMeterDocumentManager.java
  
  Index: JMeterDocumentManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/document/Attic/JMeterDocumentManager.java,v
  retrieving revision 1.1.2.4
  retrieving revision 1.1.2.5
  diff -u -r1.1.2.4 -r1.1.2.5
  --- JMeterDocumentManager.java        27 Jan 2003 22:20:18 -0000      1.1.2.4
  +++ JMeterDocumentManager.java        28 Jan 2003 19:54:28 -0000      1.1.2.5
  @@ -25,8 +25,7 @@
   import java.io.*;
   import java.lang.ref.WeakReference;
   
  -import org.apache.jmeter.testelement.NamedTestElement;
  -import org.apache.jmeter.testelement.TestPlan;
  +import org.apache.jmeter.testelement.*;
   import org.apache.jmeter.save.SaveService;
   import org.apache.jmeter.save.JTPFileFormat;
   import org.apache.jmeter.util.*;
  @@ -64,8 +63,9 @@
   
               try
               {
  -                new JTPFileFormat().store(document.getRootElement(), out);
  +                new JTPFileFormat().store(document.getElement(), out);
                   document.setFile(file);
  +                document.resetDirty();
               } finally
               {
                   if (out != null) {
  @@ -96,7 +96,7 @@
           }
           JMeterDocument document = createDocument(file, element);
   
  -        if (singleDocument != null && singleDocument.isNew() && 
!singleDocument.hasChanged())
  +        if (singleDocument != null && singleDocument.isNew() && 
!singleDocument.isDirty())
           {
               closeDocument(singleDocument);
           }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.4   +3 -8      
jakarta-jmeter/src/core/org/apache/jmeter/gui/panel/Attic/TabbedMainPanel.java
  
  Index: TabbedMainPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/panel/Attic/TabbedMainPanel.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- TabbedMainPanel.java      27 Jan 2003 22:20:19 -0000      1.1.2.3
  +++ TabbedMainPanel.java      28 Jan 2003 19:54:29 -0000      1.1.2.4
  @@ -108,7 +108,7 @@
       private void addDocument(org.apache.jmeter.gui.document.JMeterDocument document)
       {
   
  -        if (document.getRootElement() instanceof TestPlan)
  +        if (document.getElement() instanceof TestPlan)
           {
               addTestPlanTab(document);
           }
  @@ -119,11 +119,6 @@
           TestPlanPanel panel = new TestPlanPanel(document);
           ImageIcon icon = document.getIcon();
   
  -        if (document.hasChanged())
  -        {
  -            icon = mergeIcons(icon, dirtyIcon);
  -        }
  -
           addTab(document.getFileName(), icon, panel, document.getAbsolutePath());
           setSelectedComponent(panel);
           documentPanels.put(document.getName(), panel);
  @@ -145,7 +140,7 @@
           int index = indexOfComponent(panel);
           ImageIcon icon = document.getIcon();
   
  -        if (document.hasChanged())
  +        if (document.isDirty())
           {
               icon = mergeIcons(icon, dirtyIcon);
           }
  
  
  
  1.1.2.4   +2 -2      
jakarta-jmeter/src/core/org/apache/jmeter/gui/panel/Attic/TestPlanPanel.java
  
  Index: TestPlanPanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/panel/Attic/TestPlanPanel.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- TestPlanPanel.java        21 Jan 2003 23:42:59 -0000      1.1.2.3
  +++ TestPlanPanel.java        28 Jan 2003 19:54:29 -0000      1.1.2.4
  @@ -52,7 +52,7 @@
       public TestPlanPanel(JMeterDocument document)
       {
           super(document);
  -        treeModel = new TestPlanTreeModel((TestPlan)document.getRootElement());
  +        treeModel = new TestPlanTreeModel((TestPlan)document.getElement());
           init();
       }
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.4   +5 -1      
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.2.3
  retrieving revision 1.5.2.4
  diff -u -r1.5.2.3 -r1.5.2.4
  --- JMeterTreeNode.java       26 Jan 2003 22:22:01 -0000      1.5.2.3
  +++ JMeterTreeNode.java       28 Jan 2003 19:54:29 -0000      1.5.2.4
  @@ -81,6 +81,10 @@
   {
       JMeterTreeModel treeModel;
   
  +    public boolean isConfigured()
  +    {
  +        return false;
  +    }
   
        public JMeterTreeNode(JMeterGUIComponent userObj, JMeterTreeModel treeModel)
        {
  
  
  
  1.1.2.4   +20 -0     
jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/Attic/TestPlanTreeNode.java
  
  Index: TestPlanTreeNode.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/tree/Attic/TestPlanTreeNode.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- TestPlanTreeNode.java     26 Jan 2003 22:22:01 -0000      1.1.2.3
  +++ TestPlanTreeNode.java     28 Jan 2003 19:54:29 -0000      1.1.2.4
  @@ -362,6 +362,26 @@
       {
           return getElement();
       }
  +
  +    public boolean isDirty()
  +    {
  +        return getElement().isDirty();
  +    }
  +
  +    public void resetDirty()
  +    {
  +        getElement().resetDirty();
  +    }
  +
  +    public void propertyChanged(Property property)
  +    {
  +        getElement().propertyChanged(property);
  +    }
  +
  +    public void dirtyFlagChanged(TestElement childElement)
  +    {
  +        getElement().dirtyFlagChanged(childElement);
  +    }
   }
   
   
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.3   +4 -28     
jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/DoubleFieldDocumentListener.java
  
  Index: DoubleFieldDocumentListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/DoubleFieldDocumentListener.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- DoubleFieldDocumentListener.java  26 Jan 2003 22:22:01 -0000      1.1.2.2
  +++ DoubleFieldDocumentListener.java  28 Jan 2003 19:54:29 -0000      1.1.2.3
  @@ -68,43 +68,19 @@
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    */
  -public class DoubleFieldDocumentListener implements DocumentListener
  +public class DoubleFieldDocumentListener extends AbstractFieldDocumentListener
   {
  -    private JMeterGUIComponent gui;
  -    private String property;
  -    private JTextField field;
  -
   
       public DoubleFieldDocumentListener(String property, JTextField field, 
JMeterGUIComponent gui)
       {
  -        this.property = property;
  -        this.field = field;
  -        this.gui = gui;
  -    }
  -
  -
  -    public void insertUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void removeUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void changedUpdate(DocumentEvent e)
  -    {
  -        //
  +        super(property, field, gui);
       }
   
   
  -    private void setValue()
  +    protected void setValue()
       {
           try {
  -            gui.getElement().setProperty(property, new Double(field.getText()));
  +            getGui().getElement().setProperty(getProperty(), new 
Double(getField().getText()));
           } catch (NumberFormatException e) {
               //
           }
  
  
  
  1.1.2.3   +4 -28     
jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/IntegerFieldDocumentListener.java
  
  Index: IntegerFieldDocumentListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/IntegerFieldDocumentListener.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- IntegerFieldDocumentListener.java 26 Jan 2003 22:22:01 -0000      1.1.2.2
  +++ IntegerFieldDocumentListener.java 28 Jan 2003 19:54:29 -0000      1.1.2.3
  @@ -67,43 +67,19 @@
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    */
  -public class IntegerFieldDocumentListener implements DocumentListener
  +public class IntegerFieldDocumentListener extends AbstractFieldDocumentListener
   {
  -    private JMeterGUIComponent gui;
  -    private String property;
  -    private JTextField field;
   
   
       public IntegerFieldDocumentListener(String property, JTextField field, 
JMeterGUIComponent gui)
       {
  -        this.property = property;
  -        this.field = field;
  -        this.gui = gui;
  +        super(property, field, gui);
       }
   
  -
  -    public void insertUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void removeUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void changedUpdate(DocumentEvent e)
  -    {
  -        //
  -    }
  -
  -
  -    private void setValue()
  +    protected void setValue()
       {
           try {
  -            gui.getElement().setProperty(property, new Integer(field.getText()));
  +            getGui().getElement().setProperty(getProperty(), new 
Integer(getField().getText()));
           } catch (NumberFormatException e) {
               //
           }
  
  
  
  1.1.2.3   +4 -29     
jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/LongFieldDocumentListener.java
  
  Index: LongFieldDocumentListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/LongFieldDocumentListener.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- LongFieldDocumentListener.java    26 Jan 2003 22:22:01 -0000      1.1.2.2
  +++ LongFieldDocumentListener.java    28 Jan 2003 19:54:29 -0000      1.1.2.3
  @@ -68,43 +68,18 @@
    *
    * @author  <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    */
  -public class LongFieldDocumentListener implements DocumentListener
  +public class LongFieldDocumentListener extends AbstractFieldDocumentListener
   {
  -    private JMeterGUIComponent gui;
  -    private String property;
  -    private JTextField field;
  -
   
       public LongFieldDocumentListener(String property, JTextField field, 
JMeterGUIComponent gui)
       {
  -        this.property = property;
  -        this.field = field;
  -        this.gui = gui;
  -    }
  -
  -
  -    public void insertUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void removeUpdate(DocumentEvent e)
  -    {
  -        setValue();
  +        super(property, field, gui);
       }
   
  -
  -    public void changedUpdate(DocumentEvent e)
  -    {
  -        //
  -    }
  -
  -
  -    private void setValue()
  +    protected void setValue()
       {
           try {
  -            gui.getElement().setProperty(property, new Long(field.getText()));
  +            getGui().getElement().setProperty(getProperty(), new 
Long(getField().getText()));
           } catch (NumberFormatException e) {
               //
           }
  
  
  
  1.1.2.3   +6 -31     
jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/StringFieldDocumentListener.java
  
  Index: StringFieldDocumentListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/StringFieldDocumentListener.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- StringFieldDocumentListener.java  26 Jan 2003 22:22:01 -0000      1.1.2.2
  +++ StringFieldDocumentListener.java  28 Jan 2003 19:54:29 -0000      1.1.2.3
  @@ -67,58 +67,33 @@
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    */
  -public class StringFieldDocumentListener implements DocumentListener
  +public class StringFieldDocumentListener extends AbstractFieldDocumentListener
   {
  -    private JMeterGUIComponent gui;
  -    private String property;
  -    private JTextField field;
       private JTextArea area;
   
       public StringFieldDocumentListener(String property, JTextField field, 
JMeterGUIComponent gui)
       {
  -        this.property = property;
  -        this.field = field;
  -        this.gui = gui;
  +        super(property, field, gui);
       }
   
  -
       public StringFieldDocumentListener(String property, JTextArea area, 
JMeterGUIComponent gui)
       {
  -        this.gui = gui;
  -        this.property = property;
  +        super(property, null, gui);
           this.area = area;
       }
   
   
  -    public void insertUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void removeUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    public void changedUpdate(DocumentEvent e)
  -    {
  -        setValue();
  -    }
  -
  -
  -    private void setValue()
  +    protected void setValue()
       {
           try {
               String text;
   
               if (area == null) {
  -                text = field.getText();
  +                text = getField().getText();
               } else {
                   text = area.getText();
               }
  -            gui.getElement().setProperty(property, text);
  +            getGui().getElement().setProperty(getProperty(), text);
           } catch (NumberFormatException e) {
               //
           }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +118 -0    
jakarta-jmeter/src/core/org/apache/jmeter/gui/util/Attic/AbstractFieldDocumentListener.java
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +2 -2      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/Attic/AbstractNamedTestElement.java
  
  Index: AbstractNamedTestElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/Attic/AbstractNamedTestElement.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- AbstractNamedTestElement.java     26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ AbstractNamedTestElement.java     28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -65,7 +65,7 @@
   public class AbstractNamedTestElement extends AbstractTestElement implements 
NamedTestElement
   {
   
  -    private StringProperty name = new StringProperty("");
  +    private StringProperty name = new StringProperty("", this);
   
       public AbstractNamedTestElement()
       {
  
  
  
  1.5.2.5   +91 -8     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java
  
  Index: AbstractTestElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java,v
  retrieving revision 1.5.2.4
  retrieving revision 1.5.2.5
  diff -u -r1.5.2.4 -r1.5.2.5
  --- AbstractTestElement.java  26 Jan 2003 22:22:03 -0000      1.5.2.4
  +++ AbstractTestElement.java  28 Jan 2003 19:54:29 -0000      1.5.2.5
  @@ -87,9 +87,11 @@
       private static long idCounter = 0L;
   
   
  +    private HashSet dirtyChildren;
       private TestElement parent;
       private List children = new LinkedList();
       private long id;
  +    private boolean dirty = false;
   
   
       private static final synchronized long getNextId()
  @@ -124,8 +126,8 @@
   
               while (iterator.hasNext())
               {
  -                NamedTestElement testElement = (NamedTestElement)iterator.next();
  -                clone.addChildElement((NamedTestElement)testElement.clone());
  +                TestElement testElement = (TestElement)iterator.next();
  +                clone.addChildElement((TestElement)testElement.clone());
               }
   
               iterator = getProperties().entrySet().iterator();
  @@ -170,7 +172,8 @@
           HashMap properties = new HashMap();
           Class clazz = this.getClass();
   
  -        while (AbstractTestElement.class.isAssignableFrom(clazz)) {
  +        while (AbstractTestElement.class.isAssignableFrom(clazz))
  +        {
               collectProperties(clazz, properties);
               clazz = clazz.getSuperclass();
           }
  @@ -394,6 +397,7 @@
           }
           children.add(element);
           element.setParent(this);
  +        setDirty(true);
       }
   
   
  @@ -402,6 +406,12 @@
           if (children.remove(child))
           {
               child.setParent(null);
  +            if (dirtyChildren != null && dirtyChildren.remove(child)) {
  +                if (dirtyChildren.isEmpty()) {
  +                    notifyParent();
  +                }
  +            }
  +
           }
       }
   
  @@ -447,7 +457,8 @@
           {
               Field field = findField(property, getClass());
   
  -            if (field == null) {
  +            if (field == null)
  +            {
                   throw new IllegalArgumentException("Invalid property name " + 
property);
               }
   
  @@ -460,7 +471,8 @@
       }
   
   
  -    private Field findField(String fieldName, Class clazz) {
  +    private Field findField(String fieldName, Class clazz)
  +    {
           try
           {
               return clazz.getDeclaredField(fieldName);
  @@ -468,7 +480,8 @@
           {
               Class superclass = clazz.getSuperclass();
   
  -            if (NamedTestElement.class.isAssignableFrom(superclass)) {
  +            if (NamedTestElement.class.isAssignableFrom(superclass))
  +            {
                   return findField(fieldName, superclass);
               }
           }
  @@ -534,7 +547,8 @@
           {
               Field field = findField(name, getClass());
   
  -            if (field == null) {
  +            if (field == null)
  +            {
                   throw new IllegalArgumentException("Invalid property name " + 
property);
               }
   
  @@ -594,4 +608,73 @@
           visitor.visit(this);
       }
   
  +    public boolean isDirty()
  +    {
  +        return dirty || hasDirtyChildren();
  +    }
  +
  +    protected boolean hasDirtyChildren()
  +    {
  +        if (dirtyChildren == null)
  +        {
  +            return false;
  +        }
  +        return dirtyChildren.size() > 0;
  +    }
  +
  +    public void resetDirty()
  +    {
  +        dirty = false;
  +        if (dirtyChildren != null)
  +        {
  +            Iterator iterator = dirtyChildren.iterator();
  +
  +            while (iterator.hasNext())
  +            {
  +                TestElement element = (TestElement)iterator.next();
  +
  +                element.resetDirty();
  +            }
  +            dirtyChildren.clear();
  +        }
  +
  +    }
  +
  +
  +    public void dirtyFlagChanged(TestElement childElement)
  +    {
  +        if (getChildElements().contains(childElement) && childElement.isDirty()) {
  +            if (dirtyChildren == null) {
  +                dirtyChildren = new HashSet();
  +            }
  +            if (dirtyChildren.add(childElement)) {
  +                notifyParent();
  +            }
  +        } else if (! childElement.isDirty() && dirtyChildren != null) {
  +            if (dirtyChildren.remove(childElement)) {
  +                notifyParent();
  +            }
  +        }
  +    }
  +
  +    public void propertyChanged(Property property)
  +    {
  +        setDirty(true);
  +
  +    }
  +
  +    protected void setDirty(boolean flag)
  +    {
  +        dirty = flag;
  +
  +        notifyParent();
  +    }
  +
  +    protected void notifyParent()
  +    {
  +        if (getParentElement() != null)
  +        {
  +            getParentElement().dirtyFlagChanged(this);
  +        }
  +    }
   }
  
  
  
  1.1.2.3   +7 -0      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/Attic/RootElement.java
  
  Index: RootElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/Attic/RootElement.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- RootElement.java  26 Jan 2003 22:22:03 -0000      1.1.2.2
  +++ RootElement.java  28 Jan 2003 19:54:29 -0000      1.1.2.3
  @@ -67,6 +67,7 @@
   public class RootElement extends AbstractNamedTestElement
   {
   
  +
       public RootElement()
       {
       }
  @@ -84,4 +85,10 @@
           answer.add(TestPlan.class);
           return answer;
       }
  +
  +    protected void setDirty(boolean flag)
  +    {
  +        // do nothing
  +    }
  +
   }
  
  
  
  1.1.2.4   +16 -1     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java
  
  Index: TestElement.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- TestElement.java  26 Jan 2003 22:22:03 -0000      1.1.2.3
  +++ TestElement.java  28 Jan 2003 19:54:29 -0000      1.1.2.4
  @@ -110,6 +110,8 @@
   
       public void setProperty(String key, int value);
   
  +    public void propertyChanged(Property property);
  +
       public Object clone();
   
       /**
  @@ -136,4 +138,17 @@
       public TestElement getParentElement();
   
       public void accept(TestElementVisitor visitor);
  +
  +    public boolean isDirty();
  +
  +    /**
  +     * Clear the dirty flag.
  +     */
  +    public void resetDirty();
  +
  +    /**
  +     * Used by test elements to notify their parents when the dirty flag has 
changed.
  +     * @param childElement
  +     */
  +    public void dirtyFlagChanged(TestElement childElement);
   }
  
  
  
  1.1.2.4   +31 -4     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java
  
  Index: TestPlan.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestPlan.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- TestPlan.java     26 Jan 2003 22:22:03 -0000      1.1.2.3
  +++ TestPlan.java     28 Jan 2003 19:54:29 -0000      1.1.2.4
  @@ -83,11 +83,14 @@
       public final static String FUNCTIONAL_MODE = "functionalMode";
       public final static String USER_DEFINED_VARIABLES = "userDefinedVariables";
   
  +    private Set dirtyElements = new HashSet();
  +    private TestPlanObserver observer;
  +
       private List threadGroups = new LinkedList();
       private List configs = new LinkedList();
       private static TestPlan plan;
  -    private ElementProperty userDefinedVariables = new ElementProperty(new 
Arguments());
  -    private BooleanProperty functionalMode = new BooleanProperty(false);
  +    private ElementProperty userDefinedVariables = new ElementProperty(new 
Arguments(), this);
  +    private BooleanProperty functionalMode = new BooleanProperty(false, this);
   
   
       public TestPlan()
  @@ -103,10 +106,11 @@
       }
   
   
  -    public boolean isFunctionalMode() {
  +    public boolean isFunctionalMode()
  +    {
           return getFunctionalMode();
       }
  -    
  +
       public boolean getFunctionalMode()
       {
           return functionalMode.getBooleanValue();
  @@ -229,4 +233,27 @@
       {
           threadGroups.add(group);
       }
  +
  +
  +    public void setObserver(TestPlanObserver observer)
  +    {
  +        this.observer = observer;
  +    }
  +
  +
  +    protected void notifyParent()
  +    {
  +        // ignore the parent (RootElement) but notify the TestPlanObserver
  +        if (observer != null) {
  +            observer.dirtyChanged(this);
  +        }
  +    }
  +
  +    public static interface TestPlanObserver
  +    {
  +
  +        public void dirtyChanged(TestPlan element);
  +
  +    }
  +
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +10 -2     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/BooleanProperty.java
  
  Index: BooleanProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/BooleanProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- BooleanProperty.java      26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ BooleanProperty.java      28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -67,7 +70,12 @@
   
       public BooleanProperty(boolean booleanValue)
       {
  -        super(new Boolean(booleanValue));
  +        this(booleanValue, null);
  +    }
  +
  +    public BooleanProperty(boolean booleanValue, TestElement owner)
  +    {
  +        super(new Boolean(booleanValue), owner);
           this.booleanValue = booleanValue;
       }
   
  
  
  
  1.1.2.2   +6 -1      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/ElementProperty.java
  
  Index: ElementProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/ElementProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- ElementProperty.java      26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ ElementProperty.java      28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -71,6 +71,11 @@
           super(value);
       }
   
  +    public ElementProperty(Object value, TestElement owner)
  +    {
  +        super(value, owner);
  +    }
  +
       public TestElement getElement()
       {
           return (TestElement)getValue();
  
  
  
  1.1.2.2   +11 -3     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/IntProperty.java
  
  Index: IntProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/IntProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- IntProperty.java  26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ IntProperty.java  28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -65,9 +68,14 @@
       private int intValue;
   
   
  -    public IntProperty(int value)
  +    public IntProperty(int intValue)
  +    {
  +        this(intValue, null);
  +    }
  +
  +    public IntProperty(int value, TestElement owner)
       {
  -        super(new Integer(value));
  +        super(new Integer(value), owner);
           this.intValue = value;
       }
   
  
  
  
  1.1.2.2   +10 -2     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/LongProperty.java
  
  Index: LongProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/LongProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- LongProperty.java 26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ LongProperty.java 28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -67,7 +70,12 @@
   
       public LongProperty(long longValue)
       {
  -        super(new Long(longValue));
  +        this(longValue, null);
  +    }
  +
  +    public LongProperty(long longValue, TestElement owner)
  +    {
  +        super(new Long(longValue), owner);
           this.longValue = longValue;
       }
   
  
  
  
  1.1.2.2   +9 -1      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/ObjectProperty.java
  
  Index: ObjectProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/ObjectProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- ObjectProperty.java       26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ ObjectProperty.java       28 Jan 2003 19:54:29 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -65,6 +68,11 @@
       public ObjectProperty(Object value)
       {
           super(value);
  +    }
  +
  +    public ObjectProperty(Object value, TestElement owner)
  +    {
  +        super(value, owner);
       }
   
       public boolean isObject()
  
  
  
  1.1.2.2   +9 -1      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/PrimitiveProperty.java
  
  Index: PrimitiveProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/PrimitiveProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- PrimitiveProperty.java    26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ PrimitiveProperty.java    28 Jan 2003 19:54:30 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -65,6 +68,11 @@
       public PrimitiveProperty(Object value)
       {
           super(value);
  +    }
  +
  +    public PrimitiveProperty(Object value, TestElement owner)
  +    {
  +        super(value, owner);
       }
   
       public boolean isPrimitive()
  
  
  
  1.1.2.2   +24 -1     
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/Property.java
  
  Index: Property.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/Property.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- Property.java     26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ Property.java     28 Jan 2003 19:54:30 -0000      1.1.2.2
  @@ -57,6 +57,8 @@
   
   import java.io.*;
   
  +import org.apache.jmeter.testelement.TestElement;
  +
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
  @@ -66,6 +68,7 @@
   {
   
       private Object value;
  +    private TestElement owner;
   
   
       public Property(Object value)
  @@ -73,6 +76,12 @@
           this.value = value;
       }
   
  +    public Property(Object value, TestElement owner)
  +    {
  +        this.value = value;
  +        this.owner = owner;
  +    }
  +
       public Object getValue()
       {
           return value;
  @@ -80,7 +89,15 @@
   
       public void setValue(Object value)
       {
  +        boolean notify = false;
  +
  +        if (this.value == null || (this.value != null && ! 
this.value.equals(value))) {
  +            notify = true;
  +        }
           this.value = value;
  +        if (notify) {
  +            fireChanged();
  +        }
       }
   
       public boolean isPrimitive() {
  @@ -98,6 +115,12 @@
           } catch (CloneNotSupportedException e)
           {
               throw new InternalError("Object.clone failed");
  +        }
  +    }
  +
  +    protected void fireChanged() {
  +        if (owner != null) {
  +            owner.propertyChanged(this);
           }
       }
   }
  
  
  
  1.1.2.2   +9 -1      
jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/StringProperty.java
  
  Index: StringProperty.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/property/Attic/StringProperty.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- StringProperty.java       26 Jan 2003 22:22:03 -0000      1.1.2.1
  +++ StringProperty.java       28 Jan 2003 19:54:30 -0000      1.1.2.2
  @@ -55,6 +55,9 @@
   package org.apache.jmeter.testelement.property;
   
   
  +import org.apache.jmeter.testelement.TestElement;
  +
  +
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]";>Oliver Rossmueller</a>
    * @version $Revision$
  @@ -65,6 +68,11 @@
       public StringProperty(String value)
       {
           super(value);
  +    }
  +
  +    public StringProperty(String value, TestElement owner)
  +    {
  +        super(value, owner);
       }
   
       public void setValue(Object value)
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.2.3   +13 -8     
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.4.2.2
  retrieving revision 1.4.2.3
  diff -u -r1.4.2.2 -r1.4.2.3
  --- ProxyControlGui.java      26 Jan 2003 22:22:06 -0000      1.4.2.2
  +++ ProxyControlGui.java      28 Jan 2003 19:54:30 -0000      1.4.2.3
  @@ -107,10 +107,10 @@
                KeyListener,FocusListener
   {
   
  -     NamePanel namePanel;
  -     JTextField portField;
  -
  -     ProxyControl model;
  +     private NamePanel namePanel;
  +     private JTextField portField;
  +    private boolean isConfigured = false;
  +     private ProxyControl model;
   
        JTable excludeTable;
        PowerTableModel excludeModel;
  @@ -130,9 +130,6 @@
        private final static String INCLUDE_COL = 
JMeterUtils.getResString("patterns_to_include");
        private final static String EXCLUDE_COL = 
JMeterUtils.getResString("patterns_to_exclude");
   
  -     /****************************************
  -      * !ToDo (Constructor description)
  -      ***************************************/
        public ProxyControlGui()
        {
                namePanel = new NamePanel();
  @@ -140,6 +137,12 @@
                init();
        }
   
  +
  +    public boolean isConfigured()
  +    {
  +        return isConfigured;
  +    }
  +
        public JPopupMenu createPopupMenu(NamedTestElement element)
        {
                return MenuFactory.getDefaultTimerMenu();
  @@ -506,7 +509,9 @@
   
       public void setElement(TestElement element)
       {
  +        isConfigured = false;
           namePanel.setElement(element);
  +        isConfigured = true;
       }
   
   
  
  
  

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

Reply via email to