weka.gui
Class GenericArrayEditor

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.GenericArrayEditor
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyEditor, java.io.Serializable

public class GenericArrayEditor
extends javax.swing.JPanel
implements java.beans.PropertyEditor

A PropertyEditor for arrays of objects that themselves have property editors.

Version:
$Revision: 1.12 $
Author:
Len Trigg (trigg@cs.waikato.ac.nz)
See Also:
Serialized Form

Nested Class Summary
private  class GenericArrayEditor.EditorListCellRenderer
           
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.JButton m_AddBut
          Click to add the current object configuration to the array
private  javax.swing.JButton m_DeleteBut
          Click this to delete the selected array values
private  java.lang.Class m_ElementClass
          The class of objects allowed in the array
private  java.beans.PropertyEditor m_ElementEditor
          The property editor for the class we are editing
private  javax.swing.JList m_ElementList
          The list component displaying current values
private  java.awt.event.ActionListener m_InnerActionListener
          Listens to buttons being pressed and taking the appropriate action
private  javax.swing.event.ListSelectionListener m_InnerSelectionListener
          Listens to list items being selected and takes appropriate action
private  javax.swing.JLabel m_Label
          The label for when we can't edit that type
private  javax.swing.DefaultListModel m_ListModel
          The defaultlistmodel holding our data
private  java.beans.PropertyChangeSupport m_Support
          Handles property change notification
 
Fields inherited from class javax.swing.JPanel
 
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.Container
 
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
GenericArrayEditor()
          Sets up the array editor.
 
Method Summary
 void addPropertyChangeListener(java.beans.PropertyChangeListener l)
          Adds a PropertyChangeListener who will be notified of value changes.
 java.lang.String getAsText()
          Returns null as we don't support getting/setting values as text.
 java.awt.Component getCustomEditor()
          Returns the array editing component.
 java.lang.String getJavaInitializationString()
          Supposedly returns an initialization string to create a classifier identical to the current one, including it's state, but this doesn't appear possible given that the initialization string isn't supposed to contain multiple statements.
 java.lang.String[] getTags()
          Returns null as we don't support getting values as tags.
 java.lang.Object getValue()
          Gets the current object array.
 boolean isPaintable()
          Returns true to indicate that we can paint a representation of the string array
static void main(java.lang.String[] args)
          Tests out the array editor from the command line.
 void paintValue(java.awt.Graphics gfx, java.awt.Rectangle box)
          Paints a representation of the current classifier.
 void removePropertyChangeListener(java.beans.PropertyChangeListener l)
          Removes a PropertyChangeListener.
 void setAsText(java.lang.String text)
          Returns null as we don't support getting/setting values as text.
 void setValue(java.lang.Object o)
          Sets the current object array.
 boolean supportsCustomEditor()
          Returns true because we do support a custom editor.
private  void updateEditorType(java.lang.Object o)
          Updates the type of object being edited, so attempts to find an appropriate propertyeditor.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, 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
 

Field Detail

m_Support

private java.beans.PropertyChangeSupport m_Support
Handles property change notification


m_Label

private javax.swing.JLabel m_Label
The label for when we can't edit that type


m_ElementList

private javax.swing.JList m_ElementList
The list component displaying current values


m_ElementClass

private java.lang.Class m_ElementClass
The class of objects allowed in the array


m_ListModel

private javax.swing.DefaultListModel m_ListModel
The defaultlistmodel holding our data


m_ElementEditor

private java.beans.PropertyEditor m_ElementEditor
The property editor for the class we are editing


m_DeleteBut

private javax.swing.JButton m_DeleteBut
Click this to delete the selected array values


m_AddBut

private javax.swing.JButton m_AddBut
Click to add the current object configuration to the array


m_InnerActionListener

private java.awt.event.ActionListener m_InnerActionListener
Listens to buttons being pressed and taking the appropriate action


m_InnerSelectionListener

private javax.swing.event.ListSelectionListener m_InnerSelectionListener
Listens to list items being selected and takes appropriate action

Constructor Detail

GenericArrayEditor

public GenericArrayEditor()
Sets up the array editor.

Method Detail

updateEditorType

private void updateEditorType(java.lang.Object o)
Updates the type of object being edited, so attempts to find an appropriate propertyeditor.

Parameters:
o - a value of type 'Object'

setValue

public void setValue(java.lang.Object o)
Sets the current object array.

Specified by:
setValue in interface java.beans.PropertyEditor
Parameters:
o - an object that must be an array.

getValue

public java.lang.Object getValue()
Gets the current object array.

Specified by:
getValue in interface java.beans.PropertyEditor
Returns:
the current object array

getJavaInitializationString

public java.lang.String getJavaInitializationString()
Supposedly returns an initialization string to create a classifier identical to the current one, including it's state, but this doesn't appear possible given that the initialization string isn't supposed to contain multiple statements.

Specified by:
getJavaInitializationString in interface java.beans.PropertyEditor
Returns:
the java source code initialisation string

isPaintable

public boolean isPaintable()
Returns true to indicate that we can paint a representation of the string array

Specified by:
isPaintable in interface java.beans.PropertyEditor
Returns:
true

paintValue

public void paintValue(java.awt.Graphics gfx,
                       java.awt.Rectangle box)
Paints a representation of the current classifier.

Specified by:
paintValue in interface java.beans.PropertyEditor
Parameters:
gfx - the graphics context to use
box - the area we are allowed to paint into

getAsText

public java.lang.String getAsText()
Returns null as we don't support getting/setting values as text.

Specified by:
getAsText in interface java.beans.PropertyEditor
Returns:
null

setAsText

public void setAsText(java.lang.String text)
Returns null as we don't support getting/setting values as text.

Specified by:
setAsText in interface java.beans.PropertyEditor
Parameters:
text - the text value
Throws:
java.lang.IllegalArgumentException - as we don't support getting/setting values as text.

getTags

public java.lang.String[] getTags()
Returns null as we don't support getting values as tags.

Specified by:
getTags in interface java.beans.PropertyEditor
Returns:
null

supportsCustomEditor

public boolean supportsCustomEditor()
Returns true because we do support a custom editor.

Specified by:
supportsCustomEditor in interface java.beans.PropertyEditor
Returns:
true

getCustomEditor

public java.awt.Component getCustomEditor()
Returns the array editing component.

Specified by:
getCustomEditor in interface java.beans.PropertyEditor
Returns:
a value of type 'java.awt.Component'

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener l)
Adds a PropertyChangeListener who will be notified of value changes.

Specified by:
addPropertyChangeListener in interface java.beans.PropertyEditor
Parameters:
l - a value of type 'PropertyChangeListener'

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener l)
Removes a PropertyChangeListener.

Specified by:
removePropertyChangeListener in interface java.beans.PropertyEditor
Parameters:
l - a value of type 'PropertyChangeListener'

main

public static void main(java.lang.String[] args)
Tests out the array editor from the command line.

Parameters:
args - ignored