You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/05/14 19:29:55 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/gui/tree JMeterTreeNode.java
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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org