com.threerings.config.swing
Class ConfigTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTree
                  extended by com.threerings.config.swing.ConfigTree
All Implemented Interfaces:
ConfigGroupListener<ManagedConfig>, ConfigUpdateListener<ManagedConfig>, ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class ConfigTree
extends JTree
implements ConfigGroupListener<ManagedConfig>, ConfigUpdateListener<ManagedConfig>

Displays a tree of configurations.

See Also:
Serialized Form

Nested Class Summary
protected static class ConfigTree.NodeTransfer
          Contains a node for transfer.
 
Nested classes/interfaces inherited from class javax.swing.JTree
JTree.AccessibleJTree, JTree.DropLocation, JTree.DynamicUtilTreeNode, JTree.EmptySelectionModel, JTree.TreeModelHandler, JTree.TreeSelectionRedirector
 
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  ChangeBlock _block
          Indicates that we should ignore any changes, because we're the one effecting them.
protected  HashSet<String> _expanded
          The set of paths currently expanded.
protected  ConfigGroup<ManagedConfig>[] _groups
          The configuration groups.
protected  ManagedConfig _lconfig
          The configuration that we're listening to, if any.
protected static Preferences _prefs
          The package preferences.
protected static DataFlavor LOCAL_NODE_TRANSFER_FLAVOR
          A data flavor that provides access to the actual transfer object.
protected static DataFlavor[] NODE_TRANSFER_FLAVORS
          The flavors available for node transfer.
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
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
  ConfigTree(ConfigGroup... groups)
          Creates a new config tree to display the configurations in the specified groups.
protected ConfigTree(ConfigGroup[] groups, boolean editable)
          Creates a new config tree to display the configurations in the specified group.
  ConfigTree(ConfigGroup group, boolean editable)
          Creates a new config tree to display the configurations in the specified group.
 
Method Summary
protected  void addExpanded(String name)
          Adds the named node to the expanded set and writes out the set if it has changed.
 void configAdded(ConfigEvent<ManagedConfig> event)
          Called when a configuration has been added to the group.
 void configRemoved(ConfigEvent<ManagedConfig> event)
          Called when a configuration has been removed from the group.
 void configUpdated(ConfigEvent<ManagedConfig> event)
          Called when a configuration has been updated.
 Transferable createClipboardTransferable()
          Creates a Transferable containing the selected node for the clipboard.
 void dispose()
          Releases the resources held by this tree.
 ConfigTreeNode getSelectedNode()
          Returns the selected node, or null for none.
protected  boolean removeExpanded(ConfigTreeNode node)
          Removes the specified node and all of its descendents from the expanded set.
protected  void removeExpanded(String name)
          Removes the named node from the expanded set and writes out the set if it has changed.
 void selectedConfigChanged()
          Notes that the selected node's configuration has changed.
protected  void selectedConfigUpdated()
          Called when the selected configuration has been modified by a source other than selectedConfigChanged().
 void setSelectedNode(String name)
          Selects a node by name (if it exists).
protected  void writeExpanded()
          Writes the set of expanded nodes out to the preferences.
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getDropLocation, getDropMode, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, 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, 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

_groups

protected ConfigGroup<ManagedConfig>[] _groups
The configuration groups.


_expanded

protected HashSet<String> _expanded
The set of paths currently expanded.


_block

protected ChangeBlock _block
Indicates that we should ignore any changes, because we're the one effecting them.


_lconfig

protected ManagedConfig _lconfig
The configuration that we're listening to, if any.


_prefs

protected static Preferences _prefs
The package preferences.


LOCAL_NODE_TRANSFER_FLAVOR

protected static final DataFlavor LOCAL_NODE_TRANSFER_FLAVOR
A data flavor that provides access to the actual transfer object.


NODE_TRANSFER_FLAVORS

protected static final DataFlavor[] NODE_TRANSFER_FLAVORS
The flavors available for node transfer.

Constructor Detail

ConfigTree

public ConfigTree(ConfigGroup... groups)
Creates a new config tree to display the configurations in the specified groups.


ConfigTree

public ConfigTree(ConfigGroup group,
                  boolean editable)
Creates a new config tree to display the configurations in the specified group.

Parameters:
editable - if true, the tree will allow editing the configurations.

ConfigTree

protected ConfigTree(ConfigGroup[] groups,
                     boolean editable)
Creates a new config tree to display the configurations in the specified group.

Parameters:
editable - if true, the tree will allow editing the configurations (only allowed for trees depicting a single group).
Method Detail

dispose

public void dispose()
Releases the resources held by this tree. This should be called when the tree is no longer needed.


createClipboardTransferable

public Transferable createClipboardTransferable()
Creates a Transferable containing the selected node for the clipboard.


getSelectedNode

public ConfigTreeNode getSelectedNode()
Returns the selected node, or null for none.


setSelectedNode

public void setSelectedNode(String name)
Selects a node by name (if it exists).


selectedConfigChanged

public void selectedConfigChanged()
Notes that the selected node's configuration has changed.


configAdded

public void configAdded(ConfigEvent<ManagedConfig> event)
Description copied from interface: ConfigGroupListener
Called when a configuration has been added to the group.

Specified by:
configAdded in interface ConfigGroupListener<ManagedConfig>

configRemoved

public void configRemoved(ConfigEvent<ManagedConfig> event)
Description copied from interface: ConfigGroupListener
Called when a configuration has been removed from the group.

Specified by:
configRemoved in interface ConfigGroupListener<ManagedConfig>

configUpdated

public void configUpdated(ConfigEvent<ManagedConfig> event)
Description copied from interface: ConfigUpdateListener
Called when a configuration has been updated.

Specified by:
configUpdated in interface ConfigUpdateListener<ManagedConfig>

selectedConfigUpdated

protected void selectedConfigUpdated()
Called when the selected configuration has been modified by a source other than selectedConfigChanged().


addExpanded

protected void addExpanded(String name)
Adds the named node to the expanded set and writes out the set if it has changed.


removeExpanded

protected boolean removeExpanded(ConfigTreeNode node)
Removes the specified node and all of its descendents from the expanded set.

Returns:
whether or not any names were actually removed.

removeExpanded

protected void removeExpanded(String name)
Removes the named node from the expanded set and writes out the set if it has changed.


writeExpanded

protected void writeExpanded()
Writes the set of expanded nodes out to the preferences.