Apache JMeter

org.apache.jmeter.visualizers.gui
Class AbstractVisualizer

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.apache.jmeter.gui.AbstractJMeterGuiComponent
                      extended by org.apache.jmeter.visualizers.gui.AbstractListenerGui
                          extended by org.apache.jmeter.visualizers.gui.AbstractVisualizer
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, ChangeListener, JMeterGUIComponent, UnsharedComponent, Clearable, Printable, Visualizer
Direct Known Subclasses:
AssertionVisualizer, ComparisonVisualizer, DistributionGraphVisualizer, GraphVisualizer, MailerVisualizer, MonitorHealthVisualizer, RespTimeGraphVisualizer, SimpleDataWriter, SplineVisualizer, StatGraphVisualizer, StatVisualizer, SummaryReport, TableVisualizer, ViewResultsFullVisualizer

public abstract class AbstractVisualizer
extends AbstractListenerGui
implements Visualizer, ChangeListener, UnsharedComponent, Clearable

This is the base class for JMeter GUI components which can display test results in some way. It provides the following conveniences to developers:

For most developers, making a new visualizer is primarly for the purpose of either calculating new statistics on the sample results that other visualizers don't calculate, or displaying the results visually in a new and interesting way. Making a new visualizer for either of these purposes is easy - just extend this class and implement the add(SampleResult) method and display the results as you see fit. This AbstractVisualizer and the default ResultCollector handle logging and registering to receive SampleEvents for you - all you need to do is include the JPanel created by makeTitlePanel somewhere in your gui to allow users set the log file.

If you are doing more than that, you may need to extend ResultCollector as well and modify the configure(TestElement), modifyTestElement(TestElement), and createTestElement() methods to create and modify your alternate ResultCollector. For an example of this, see the MailerVisualizer.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  ResultCollector collector
           
protected  boolean isStats
           
 
Fields inherited from class org.apache.jmeter.gui.AbstractJMeterGuiComponent
namePanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
AbstractVisualizer()
           
 
Method Summary
 void clearGui()
          Provides a default implementation that resets the name field to the value of getStaticLabel(), reset comment and sets enabled to true.
 void configure(TestElement el)
          A newly created gui component can be initialized with the contents of a Test Element object by calling this method.
protected  void configureTestElement(AbstractListenerElement mc)
          This provides a convenience for extenders when they implement the JMeterGUIComponent.createTestElement() method.
 TestElement createTestElement()
          JMeter test components are separated into a model and a GUI representation.
protected  JCheckBox getErrorLoggingCheckbox()
          Gets the checkbox which selects whether or not only errors should be logged.
 String getFile()
          Gets the filename which has been entered in the FilePanel.
protected  Component getFilePanel()
          Gets the file panel which allows the user to save results to a file.
protected  ResultCollector getModel()
          Provides access to the ResultCollector model class for extending implementations.
 boolean isStats()
          This method is used to indicate a visualizer generates statistics.
protected  Container makeTitlePanel()
          Create a standard title section for JMeter components.
 void modifyTestElement(TestElement c)
          GUI components are responsible for populating TestElements they create with the data currently held in the GUI components.
 void setFile(String filename)
          Sets the filename which results will be saved to.
protected  void setModel(ResultCollector collector)
          Provides extending classes the opportunity to set the ResultCollector model for the Visualizer.
 void stateChanged(ChangeEvent e)
          Invoked when the target of the listener has changed its state.
 
Methods inherited from class org.apache.jmeter.visualizers.gui.AbstractListenerGui
createPopupMenu, getMenuCategories
 
Methods inherited from class org.apache.jmeter.gui.AbstractJMeterGuiComponent
configureTestElement, createTitleLabel, getComment, getDocAnchor, getName, getNamePanel, getPrintableComponent, getStaticLabel, isEnabled, makeBorder, makeScrollPane, makeScrollPane, setComment, setEnabled, setName
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.jmeter.visualizers.Visualizer
add
 
Methods inherited from interface org.apache.jmeter.samplers.Clearable
clearData
 
Methods inherited from interface org.apache.jmeter.gui.JMeterGUIComponent
getLabelResource
 

Field Detail

collector

protected ResultCollector collector

isStats

protected boolean isStats
Constructor Detail

AbstractVisualizer

public AbstractVisualizer()
Method Detail

isStats

public boolean isStats()
Description copied from interface: Visualizer
This method is used to indicate a visualizer generates statistics.

Specified by:
isStats in interface Visualizer
Returns:
true if visualiser generates statistics

getErrorLoggingCheckbox

protected JCheckBox getErrorLoggingCheckbox()
Gets the checkbox which selects whether or not only errors should be logged. Subclasses don't normally need to worry about this checkbox, because it is automatically added to the GUI in makeTitlePanel(), and the behavior is handled in this base class.

Returns:
the error logging checkbox

getModel

protected ResultCollector getModel()
Provides access to the ResultCollector model class for extending implementations. Using this method and setModel(ResultCollector) is only necessary if your visualizer requires a differently behaving ResultCollector. Using these methods will allow maximum reuse of the methods provided by AbstractVisualizer in this event.


getFilePanel

protected Component getFilePanel()
Gets the file panel which allows the user to save results to a file. Subclasses don't normally need to worry about this panel, because it is automatically added to the GUI in makeTitlePanel(), and the behavior is handled in this base class.

Returns:
the file panel allowing users to save results

setFile

public void setFile(String filename)
Sets the filename which results will be saved to. This will set the filename in the FilePanel. Subclasses don't normally need to call this method, because configuration of the FilePanel is handled in this base class.

Parameters:
filename - the new filename
See Also:
getFilePanel()

getFile

public String getFile()
Gets the filename which has been entered in the FilePanel. Subclasses don't normally need to call this method, because configuration of the FilePanel is handled in this base class.

Returns:
the current filename
See Also:
getFilePanel()

stateChanged

public void stateChanged(ChangeEvent e)
Invoked when the target of the listener has changed its state. This implementation assumes that the target is the FilePanel, and will update the result collector for the new filename.

Specified by:
stateChanged in interface ChangeListener
Parameters:
e - the event that has occurred

createTestElement

public TestElement createTestElement()
Description copied from interface: JMeterGUIComponent
JMeter test components are separated into a model and a GUI representation. The model holds the data and the GUI displays it. The GUI class is responsible for knowing how to create and initialize with data the model class that it knows how to display, and this method is called when new test elements are created.

Specified by:
createTestElement in interface JMeterGUIComponent
Returns:
the Test Element object that the GUI component represents.

modifyTestElement

public void modifyTestElement(TestElement c)
Description copied from interface: JMeterGUIComponent
GUI components are responsible for populating TestElements they create with the data currently held in the GUI components. This method should overwrite whatever data is currently in the TestElement as it is called after a user has filled out the form elements in the gui with new information.

Specified by:
modifyTestElement in interface JMeterGUIComponent
Parameters:
c - the TestElement to modify

configure

public void configure(TestElement el)
Description copied from class: AbstractJMeterGuiComponent
A newly created gui component can be initialized with the contents of a Test Element object by calling this method. The component is responsible for querying the Test Element object for the relevant information to display in its GUI.

AbstractJMeterGuiComponent provides a partial implementation of this method, setting the name of the component and its enabled status. Subclasses should override this method, performing their own configuration as needed, but also calling this super-implementation.

Specified by:
configure in interface JMeterGUIComponent
Overrides:
configure in class AbstractJMeterGuiComponent
Parameters:
el - the TestElement to configure

configureTestElement

protected void configureTestElement(AbstractListenerElement mc)
This provides a convenience for extenders when they implement the JMeterGUIComponent.createTestElement() method. This method will set the name, gui class, and test class for the created Test Element. It should be called by every extending class when creating Test Elements, as that will best assure consistent behavior.

Parameters:
mc - the TestElement being created.

makeTitlePanel

protected Container makeTitlePanel()
Create a standard title section for JMeter components. This includes the title for the component and the Name Panel allowing the user to change the name for the component. The AbstractVisualizer also adds the FilePanel allowing the user to save the results, and the error logging checkbox, allowing the user to choose whether or not only errors should be logged.

This method is typically added to the top of the component at the beginning of the component's init method.

Overrides:
makeTitlePanel in class AbstractJMeterGuiComponent
Returns:
a panel containing the component title, name panel, file panel, and error logging checkbox

setModel

protected void setModel(ResultCollector collector)
Provides extending classes the opportunity to set the ResultCollector model for the Visualizer. This is useful to allow maximum reuse of the methods from AbstractVisualizer.

Parameters:
collector -

clearGui

public void clearGui()
Description copied from class: AbstractJMeterGuiComponent
Provides a default implementation that resets the name field to the value of getStaticLabel(), reset comment and sets enabled to true. Your GUI may need more things cleared, in which case you should override, clear the extra fields, and still call super.clearGui().

Specified by:
clearGui in interface JMeterGUIComponent
Overrides:
clearGui in class AbstractJMeterGuiComponent

Apache JMeter

Copyright © 1998-2012 Apache Software Foundation. All Rights Reserved.