sebb        2005/05/14 10:29:55

  Modified:    src/core/org/apache/jmeter/testbeans/gui TestBeanGUI.java
               src/core/org/apache/jmeter/gui/tree JMeterTreeNode.java
  Log:
  Implement GUI_CLASS for TestBean Gui classes
  
  Revision  Changes    Path
  1.21      +36 -4     
jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
  
  Index: TestBeanGUI.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- TestBeanGUI.java  14 May 2005 16:50:51 -0000      1.20
  +++ TestBeanGUI.java  14 May 2005 17:29:55 -0000      1.21
  @@ -18,6 +18,7 @@
   
   import java.awt.BorderLayout;
   import java.awt.Component;
  +import java.beans.BeanDescriptor;
   import java.beans.BeanInfo;
   import java.beans.Customizer;
   import java.beans.IntrospectionException;
  @@ -35,14 +36,20 @@
   
   import org.apache.commons.collections.LRUMap;
   import org.apache.jmeter.assertions.Assertion;
  +import org.apache.jmeter.assertions.gui.AbstractAssertionGui;
   import org.apache.jmeter.config.ConfigElement;
  +import org.apache.jmeter.config.gui.AbstractConfigGui;
   import org.apache.jmeter.control.Controller;
  +import org.apache.jmeter.control.gui.AbstractControllerGui;
   import org.apache.jmeter.gui.AbstractJMeterGuiComponent;
   import org.apache.jmeter.gui.JMeterGUIComponent;
   import org.apache.jmeter.gui.util.MenuFactory;
   import org.apache.jmeter.processor.PostProcessor;
   import org.apache.jmeter.processor.PreProcessor;
  +import org.apache.jmeter.processor.gui.AbstractPostProcessorGui;
  +import org.apache.jmeter.processor.gui.AbstractPreProcessorGui;
   import org.apache.jmeter.samplers.Sampler;
  +import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
   import org.apache.jmeter.testbeans.BeanInfoSupport;
   import org.apache.jmeter.testbeans.TestBean;
   import org.apache.jmeter.testelement.TestElement;
  @@ -50,8 +57,10 @@
   import org.apache.jmeter.testelement.property.JMeterProperty;
   import org.apache.jmeter.testelement.property.PropertyIterator;
   import org.apache.jmeter.timers.Timer;
  +import org.apache.jmeter.timers.gui.AbstractTimerGui;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.visualizers.Visualizer;
  +import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
   import org.apache.jorphan.logging.LoggingManager;
   import org.apache.log.Logger;
   
  @@ -342,46 +351,69 @@
      public Collection getMenuCategories()
      {
         List menuCategories = new LinkedList();
  +       BeanDescriptor bd = beanInfo.getBeanDescriptor();
   
         // We don't want to show expert beans in the menus unless we're
         // in expert mode:
  -      if (beanInfo.getBeanDescriptor().isExpert()
  +      if (bd.isExpert()
               && !JMeterUtils.isExpertMode()) { return null; }
   
  +       int matches=0; // How many classes can we assign from?
         // TODO: there must be a nicer way...
         if (Assertion.class.isAssignableFrom(testBeanClass))
         {
            menuCategories.add(MenuFactory.ASSERTIONS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractAssertionGui.class.getName());
  +              matches++;
         }
         if (ConfigElement.class.isAssignableFrom(testBeanClass))
         {
            menuCategories.add(MenuFactory.CONFIG_ELEMENTS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractConfigGui.class.getName());
  +              matches++;
         }
         if (Controller.class.isAssignableFrom(testBeanClass))
         {
            menuCategories.add(MenuFactory.CONTROLLERS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractControllerGui.class.getName());
  +              matches++;
         }
         if (Visualizer.class.isAssignableFrom(testBeanClass))
         {
            menuCategories.add(MenuFactory.LISTENERS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractVisualizer.class.getName());
  +              matches++;
         }
         if (PostProcessor.class.isAssignableFrom(testBeanClass))
         {
            menuCategories.add(MenuFactory.POST_PROCESSORS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractPostProcessorGui.class.getName());
  +              matches++;
         }
         if (PreProcessor.class.isAssignableFrom(testBeanClass))
         {
  +              matches++;
            menuCategories.add(MenuFactory.PRE_PROCESSORS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractPreProcessorGui.class.getName());
         }
         if (Sampler.class.isAssignableFrom(testBeanClass))
         {
  +              matches++;
            menuCategories.add(MenuFactory.SAMPLERS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractSamplerGui.class.getName());
         }
         if (Timer.class.isAssignableFrom(testBeanClass))
         {
  +              matches++;
            menuCategories.add(MenuFactory.TIMERS);
  +              
bd.setValue(TestElement.GUI_CLASS,AbstractTimerGui.class.getName());
         }
  -      return menuCategories;
  +       if (matches == 0) {
  +               log.error("Could not assign GUI class to 
"+testBeanClass.getName());
  +       } else if (matches > 1) {// may be impossible, but no harm in 
checking ...
  +               log.error("More than 1 GUI class found for 
"+testBeanClass.getName());
  +      }
  +       return menuCategories;
      }
   
      private void init()
  
  
  
  1.25      +14 -3     
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.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- JMeterTreeNode.java       5 Mar 2004 13:18:37 -0000       1.24
  +++ JMeterTreeNode.java       14 May 2005 17:29:55 -0000      1.25
  @@ -85,7 +85,18 @@
                       Image img= Introspector.getBeanInfo(
                           getTestElement().getClass())
                               .getIcon(BeanInfo.ICON_COLOR_16x16);
  -                    if (img == null) return null;
  +                                     // If icon has not been defined, then 
use GUI_CLASS property
  +                    if (img == null) {//
  +                                             Object clazz = 
Introspector.getBeanInfo(
  +                                     getTestElement().getClass())
  +                                     
.getBeanDescriptor().getValue(TestElement.GUI_CLASS);
  +                                             if (clazz == null) {
  +                                                     log.error("Can't obtain 
GUI class for "
  +                                                                     
+getTestElement().getClass().getName());
  +                                                     return null;
  +                                             }
  +                             return 
GUIFactory.getIcon(Class.forName((String) clazz));
  +                    }
                       return new ImageIcon(img);
                   }
                   catch (IntrospectionException e1)
  
  
  

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

Reply via email to