Class TagArrayEditor
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- adams.gui.core.BasePanel
-
- adams.gui.goe.TagArrayEditor
-
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,PropertyEditor
,Serializable
,Accessible
public class TagArrayEditor extends BasePanel implements PropertyEditor
Editor for Tag arrays.- Author:
- fracpete (fracpete at waikato dot ac dot nz)
- 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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description protected Set<ChangeListener>
m_ArrayChangeListeners
the change listeners (get notified whenever items get added/removed/updated).protected BaseButton
m_ButtonAdd
the button for adding a tag.protected BaseButton
m_ButtonCancel
the cancel button.protected BaseButton
m_ButtonEdit
the button for editing a tag.protected BaseButton
m_ButtonOK
the OK button.protected BaseButton
m_ButtonRemove
the button for removing the selected tag(s).protected TableModelListener
m_ModelListener
the listener for model updates.protected boolean
m_Modified
whether the content got modified.protected PropertyChangeSupport
m_Support
Handles property change notification.protected BaseTableWithButtons
m_Table
The list component displaying current values.protected TagTableModel
m_TableModel
the tags.protected TagTableModel
m_TableModelBackup
the backup.protected WindowAdapter
m_WindowAdapter
to catch the event when the user is closing the dialog via the "X".static String
NONE
if there are no elements in the list.-
Fields inherited from class adams.gui.core.BasePanel
m_FileChooser
-
Fields inherited from class javax.swing.JComponent
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
accessibleContext, 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
Constructors Constructor Description TagArrayEditor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addArrayChangeListener(ChangeListener l)
Adds the change listener.void
addPropertyChangeListener(PropertyChangeListener l)
Adds a PropertyChangeListener who will be notified of value changes.protected void
addTag()
Lets the user add a tag.protected void
apply()
Accepts the array.protected void
close()
Closes and disposes the window the GOE belongs to, if possible.protected PropertiesParameterPanel.PropertyType
convertType(TagDataType type)
Converts the tag data type into the type for the dialog.protected List<TagInfo>
determineTagInfos()
Determines the tag infos to choose from.protected void
editTag()
Lets the user edit a tag.protected Tag
enterTag(Tag tag, String title)
Displays dialog for entering a tag.protected void
finishInit()
Finalizes the initialization.void
firePropertyChange()
Fires a property change event.String
getAsText()
Gets the property value as text.Component
getCustomEditor()
A PropertyEditor may choose to make available a full custom Component that edits its property value.String
getJavaInitializationString()
Returns a fragment of Java code that can be used to set a property to match the editors current state.String[]
getTags()
If the property value must be one of a set of known tagged values, then this method should return an array of the tags.Object
getValue()
Gets the property value.protected void
initGUI()
Initializes the widget.protected void
initialize()
Initializes the members.boolean
isPaintable()
Determines whether this property editor is paintable.protected void
notifyArrayChangeListeners()
Notifies all change listeners that the array elements have changed.void
paintValue(Graphics gfx, Rectangle box)
Paint a representation of the value into a given area of screen real estate.void
removeArrayChangeListener(ChangeListener l)
Removes the change listener.void
removePropertyChangeListener(PropertyChangeListener l)
Removes a PropertyChangeListener.protected void
removeSelectedTags()
Removes the selected tags.protected void
restore()
Restores the values to the original ones.void
setAsText(String text)
Set the property value by parsing a given String.void
setValue(Object value)
Set (or change) the object that is to be edited.boolean
supportsCustomEditor()
Determines whether this property editor supports a custom editor.protected void
updateButtons()
Updates the state of the buttons.-
Methods inherited from class adams.gui.core.BasePanel
afterHide, afterShow, beforeHide, beforeShow, closeParent, getParentChild, getParentDialog, getParentFrame, getParentInternalFrame, getParentTitle, initFileChooser, main, printErrorMessage, printException, saveComponent, setEnabledCascade, setEnabledCascade, setParentTitle, setVisible
-
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, getBaseline, getBaselineResizeBehavior, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, 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, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, 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, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
NONE
public static final String NONE
if there are no elements in the list.- See Also:
- Constant Field Values
-
m_TableModel
protected TagTableModel m_TableModel
the tags.
-
m_TableModelBackup
protected TagTableModel m_TableModelBackup
the backup.
-
m_ModelListener
protected TableModelListener m_ModelListener
the listener for model updates.
-
m_Table
protected BaseTableWithButtons m_Table
The list component displaying current values.
-
m_ButtonAdd
protected BaseButton m_ButtonAdd
the button for adding a tag.
-
m_ButtonEdit
protected BaseButton m_ButtonEdit
the button for editing a tag.
-
m_ButtonRemove
protected BaseButton m_ButtonRemove
the button for removing the selected tag(s).
-
m_ButtonOK
protected BaseButton m_ButtonOK
the OK button.
-
m_ButtonCancel
protected BaseButton m_ButtonCancel
the cancel button.
-
m_WindowAdapter
protected WindowAdapter m_WindowAdapter
to catch the event when the user is closing the dialog via the "X".
-
m_Support
protected PropertyChangeSupport m_Support
Handles property change notification.
-
m_Modified
protected boolean m_Modified
whether the content got modified.
-
m_ArrayChangeListeners
protected Set<ChangeListener> m_ArrayChangeListeners
the change listeners (get notified whenever items get added/removed/updated).
-
-
Method Detail
-
initialize
protected void initialize()
Initializes the members.- Overrides:
initialize
in classBasePanel
-
finishInit
protected void finishInit()
Finalizes the initialization.- Overrides:
finishInit
in classBasePanel
-
updateButtons
protected void updateButtons()
Updates the state of the buttons.
-
setValue
public void setValue(Object value)
Set (or change) the object that is to be edited. Primitive types such as "int" must be wrapped as the corresponding object type such as "java.lang.Integer".- Specified by:
setValue
in interfacePropertyEditor
- Parameters:
value
- The new target object to be edited. Note that this object should not be modified by the PropertyEditor, rather the PropertyEditor should create a new object to hold any modified value.
-
getValue
public Object getValue()
Gets the property value.- Specified by:
getValue
in interfacePropertyEditor
- Returns:
- The value of the property. Primitive types such as "int" will be wrapped as the corresponding object type such as "java.lang.Integer".
-
isPaintable
public boolean isPaintable()
Determines whether this property editor is paintable.- Specified by:
isPaintable
in interfacePropertyEditor
- Returns:
- True if the class will honor the paintValue method.
-
paintValue
public void paintValue(Graphics gfx, Rectangle box)
Paint a representation of the value into a given area of screen real estate. Note that the propertyEditor is responsible for doing its own clipping so that it fits into the given rectangle.If the PropertyEditor doesn't honor paint requests (see isPaintable) this method should be a silent noop.
The given Graphics object will have the default font, color, etc of the parent container. The PropertyEditor may change graphics attributes such as font and color and doesn't need to restore the old values.
- Specified by:
paintValue
in interfacePropertyEditor
- Parameters:
gfx
- Graphics object to paint into.box
- Rectangle within graphics object into which we should paint.
-
getJavaInitializationString
public String getJavaInitializationString()
Returns a fragment of Java code that can be used to set a property to match the editors current state. This method is intended for use when generating Java code to reflect changes made through the property editor.The code fragment should be context free and must be a legal Java expression as specified by the JLS.
Specifically, if the expression represents a computation then all classes and static members should be fully qualified. This rule applies to constructors, static methods and non primitive arguments.
Caution should be used when evaluating the expression as it may throw exceptions. In particular, code generators must ensure that generated code will compile in the presence of an expression that can throw checked exceptions.
Example results are:
- Primitive expresssion:
2
- Class constructor:
new java.awt.Color(127,127,34)
- Static field:
java.awt.Color.orange
- Static method:
javax.swing.Box.createRigidArea(new java.awt.Dimension(0, 5))
- Specified by:
getJavaInitializationString
in interfacePropertyEditor
- Returns:
- a fragment of Java code representing an initializer for the
current value. It should not contain a semi-colon
('
;
') to end the expression.
- Primitive expresssion:
-
getAsText
public String getAsText()
Gets the property value as text.- Specified by:
getAsText
in interfacePropertyEditor
- Returns:
- The property value as a human editable string.
Returns null if the value can't be expressed as an editable string.
If a non-null value is returned, then the PropertyEditor should be prepared to parse that string back in setAsText().
-
setAsText
public void setAsText(String text) throws IllegalArgumentException
Set the property value by parsing a given String. May raise java.lang.IllegalArgumentException if either the String is badly formatted or if this kind of property can't be expressed as text.- Specified by:
setAsText
in interfacePropertyEditor
- Parameters:
text
- The string to be parsed.- Throws:
IllegalArgumentException
-
getTags
public String[] getTags()
If the property value must be one of a set of known tagged values, then this method should return an array of the tags. This can be used to represent (for example) enum values. If a PropertyEditor supports tags, then it should support the use of setAsText with a tag value as a way of setting the value and the use of getAsText to identify the current value.- Specified by:
getTags
in interfacePropertyEditor
- Returns:
- The tag values for this property. May be null if this property cannot be represented as a tagged value.
-
getCustomEditor
public Component getCustomEditor()
A PropertyEditor may choose to make available a full custom Component that edits its property value. It is the responsibility of the PropertyEditor to hook itself up to its editor Component itself and to report property value changes by firing a PropertyChange event.The higher-level code that calls getCustomEditor may either embed the Component in some larger property sheet, or it may put it in its own individual dialog, or ...
- Specified by:
getCustomEditor
in interfacePropertyEditor
- Returns:
- A java.awt.Component that will allow a human to directly edit the current property value. May be null if this is not supported.
-
supportsCustomEditor
public boolean supportsCustomEditor()
Determines whether this property editor supports a custom editor.- Specified by:
supportsCustomEditor
in interfacePropertyEditor
- Returns:
- True if the propertyEditor can provide a custom editor.
-
determineTagInfos
protected List<TagInfo> determineTagInfos()
Determines the tag infos to choose from.- Returns:
- the infos
-
convertType
protected PropertiesParameterPanel.PropertyType convertType(TagDataType type)
Converts the tag data type into the type for the dialog.- Parameters:
type
- the type to convert- Returns:
- the converted type
-
enterTag
protected Tag enterTag(Tag tag, String title)
Displays dialog for entering a tag.- Parameters:
tag
- the tag to entertitle
- the title for the dialog- Returns:
- the new tag if accepted, null otherwise
-
addTag
protected void addTag()
Lets the user add a tag.
-
editTag
protected void editTag()
Lets the user edit a tag.
-
removeSelectedTags
protected void removeSelectedTags()
Removes the selected tags.
-
apply
protected void apply()
Accepts the array.
-
restore
protected void restore()
Restores the values to the original ones.
-
close
protected void close()
Closes and disposes the window the GOE belongs to, if possible.
-
addPropertyChangeListener
public void addPropertyChangeListener(PropertyChangeListener l)
Adds a PropertyChangeListener who will be notified of value changes.- Specified by:
addPropertyChangeListener
in interfacePropertyEditor
- Overrides:
addPropertyChangeListener
in classContainer
- Parameters:
l
- a value of type 'PropertyChangeListener'
-
removePropertyChangeListener
public void removePropertyChangeListener(PropertyChangeListener l)
Removes a PropertyChangeListener.- Specified by:
removePropertyChangeListener
in interfacePropertyEditor
- Overrides:
removePropertyChangeListener
in classComponent
- Parameters:
l
- a value of type 'PropertyChangeListener'
-
firePropertyChange
public void firePropertyChange()
Fires a property change event.- See Also:
m_Support
-
addArrayChangeListener
public void addArrayChangeListener(ChangeListener l)
Adds the change listener. Gets notified whenever the array elements change.- Parameters:
l
- the listener to add
-
removeArrayChangeListener
public void removeArrayChangeListener(ChangeListener l)
Removes the change listener.- Parameters:
l
- the listener to remove
-
notifyArrayChangeListeners
protected void notifyArrayChangeListeners()
Notifies all change listeners that the array elements have changed.
-
-