com.threerings.editor.swing
Class ObjectPanel

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 com.samskivert.swing.CollapsiblePanel
                      extended by com.threerings.editor.swing.BasePropertyEditor
                          extended by com.threerings.editor.swing.ObjectPanel
All Implemented Interfaces:
ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, ChangeListener

public class ObjectPanel
extends BasePropertyEditor
implements ActionListener, ChangeListener

Allows editing an object of a known class.

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
protected  JComboBox _box
          The type box.
protected  EditorContext _ctx
          Provides access to common services.
protected  Object _lvalue
          The last non-null value selected.
protected  Object _outer
          The outer object reference.
protected  EditorPanel _panel
          The editor panel.
protected  Class<?>[] _types
          The list of available types.
protected  Object[] _values
          Stored values for each type.
 
Fields inherited from class com.threerings.editor.swing.BasePropertyEditor
_collapseIcon, _expandIcon, _highlight, _highlighted, _highlightIcon, _msgmgr, _msgs, BASE_BACKGROUND, DEFAULT_BACKGROUND, PANEL_BUTTON_SIZE, SHADE_DECREMENT
 
Fields inherited from class com.samskivert.swing.CollapsiblePanel
_content, _downIcon, _trigger, _upIcon
 
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
ObjectPanel(EditorContext ctx, String tlabel, Class<?>[] types, Property[] ancestors, Object outer)
          Creates a new object panel.
ObjectPanel(EditorContext ctx, String tlabel, Class<?>[] types, Property[] ancestors, Object outer, boolean omitColumns)
          Creates a new object panel.
 
Method Summary
 void actionPerformed(ActionEvent event)
           
protected  String getMousePath(Point pt)
          Returns the path of the property under the mouse cursor relative to this property.
protected  int getTypeIndex(Object value)
          Returns the index of the specified value's type, or -1 if it doesn't match any of the types.
 Object getValue()
          Returns the current value of the object being edited.
protected  Object newInstance(Class<?> type)
          Creates a new instance of the specified type.
 void setOuter(Object outer)
          Sets the outer object to use when instantiating inner classes (does not affect the current value).
 void setValue(Object value)
          Sets the value of the object being edited.
 void stateChanged(ChangeEvent event)
           
 
Methods inherited from class com.threerings.editor.swing.BasePropertyEditor
addChangeListener, copyPropertyPath, createButton, darkenColor, fireStateChanged, getBackgroundColor, getColor, getColor, getColor, getDarkerBackground, getLabel, getLabel, getLabel, getLabel, getLabels, getLabels, getLabels, getMousePath, getPropertyColor, loadIcon, makeCollapsible, removeChangeListener, updateBorder
 
Methods inherited from class com.samskivert.swing.CollapsiblePanel
getContent, isCollapsed, setCollapsed, setGap, setTrigger, setTriggerContainer, setTriggerContainer, setTriggerContainer
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, removePropertyChangeListener, 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

_ctx

protected EditorContext _ctx
Provides access to common services.


_box

protected JComboBox _box
The type box.


_panel

protected EditorPanel _panel
The editor panel.


_outer

protected Object _outer
The outer object reference.


_types

protected Class<?>[] _types
The list of available types.


_values

protected Object[] _values
Stored values for each type.


_lvalue

protected Object _lvalue
The last non-null value selected.

Constructor Detail

ObjectPanel

public ObjectPanel(EditorContext ctx,
                   String tlabel,
                   Class<?>[] types,
                   Property[] ancestors,
                   Object outer)
Creates a new object panel.

Parameters:
tlabel - the translatable label to use for the type chooser.
types - the selectable subtypes.
ancestors - the ancestor properties from which constraints are inherited.
outer - the outer object to use when instantiating inner classes.

ObjectPanel

public ObjectPanel(EditorContext ctx,
                   String tlabel,
                   Class<?>[] types,
                   Property[] ancestors,
                   Object outer,
                   boolean omitColumns)
Creates a new object panel.

Parameters:
tlabel - the translatable label to use for the type chooser.
types - the selectable subtypes.
ancestors - the ancestor properties from which constraints are inherited.
outer - the outer object to use when instantiating inner classes.
omitColumns - if true, do not add editors for the properties flagged as columns.
Method Detail

setOuter

public void setOuter(Object outer)
Sets the outer object to use when instantiating inner classes (does not affect the current value).


setValue

public void setValue(Object value)
Sets the value of the object being edited.


getValue

public Object getValue()
Returns the current value of the object being edited.


actionPerformed

public void actionPerformed(ActionEvent event)
Specified by:
actionPerformed in interface ActionListener
Overrides:
actionPerformed in class BasePropertyEditor

stateChanged

public void stateChanged(ChangeEvent event)
Specified by:
stateChanged in interface ChangeListener

getMousePath

protected String getMousePath(Point pt)
Description copied from class: BasePropertyEditor
Returns the path of the property under the mouse cursor relative to this property.

Overrides:
getMousePath in class BasePropertyEditor
Parameters:
pt - the location of the mouse cursor.

getTypeIndex

protected int getTypeIndex(Object value)
Returns the index of the specified value's type, or -1 if it doesn't match any of the types.


newInstance

protected Object newInstance(Class<?> type)
                      throws Exception
Creates a new instance of the specified type.

Throws:
Exception