edu.cmu.minorthird.util.gui
Class TypeSelector

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 edu.cmu.minorthird.util.gui.Viewer
                      extended by edu.cmu.minorthird.util.gui.ComponentViewer
                          extended by edu.cmu.minorthird.util.gui.TypeSelector
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class TypeSelector
extends ComponentViewer

Allows user to select among possible instantiations of a particular type, and edit bean properties of these instantiations. Specifically, this lets the user recursively edit objects as follows. A "property" P of an object x is defined by the existence two methods, a getter method Type x.getP() and a setter method x.setP(Type newValue).. Properties can be edited by the user if Type is either boolean, int, double or String, or if Type is one of the validSubclasses passed to the root constructor.

Double-valued properties with names that contain the string "Fraction" are visualized specially--it's assumed that their values are between 0 and 1.0. String-valued properties with names that contain "Filename" are also visualized specially.

If P is a String-valued property and a method x.getAllowedPValues() exists, it will be used to compute possible values for P. The getAllowedPValues method should return an Object array.

See Also:
Serialized Form

Nested Class Summary
static class TypeSelector.AbstractSample
           
 class TypeSelector.HelpViewer
           
 class TypeSelector.PropertyEditor
          Allows properties of an object to be modified in a GUI.
static class TypeSelector.SampleInner
           
static class TypeSelector.SampleOuter
           
 
Nested classes/interfaces inherited from class edu.cmu.minorthird.util.gui.Viewer
Viewer.Transform
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class edu.cmu.minorthird.util.gui.Viewer
namedSubViews, OBJECT_SELECTED, OBJECT_UPDATED, SET_CONTENT, TEXT_MESSAGE
 
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
TypeSelector(java.lang.Class[] validSubclasses, java.lang.Class rootClass)
           
TypeSelector(java.lang.Class[] validSubclasses, java.lang.String[] inLineClasses, java.lang.String[] advancedParams, java.lang.String configFilename, java.lang.Class rootClass)
           
TypeSelector(java.lang.Class[] validSubclasses, java.lang.String configFilename, java.lang.Class rootClass)
           
 
Method Summary
 javax.swing.JComponent BoxComponent(java.lang.Object o)
           
 javax.swing.JComponent componentFor(java.lang.Object o)
           
 void createPE(java.lang.Class type)
           
 javax.swing.JComponent InLineComponent(java.lang.Object o)
           
static void main(java.lang.String[] args)
           
 java.lang.String shortenedClassName(java.lang.Class item)
          Returns the shortened version of the class name
 
Methods inherited from class edu.cmu.minorthird.util.gui.ComponentViewer
canHandle, canReceive, clearContent, handle, initialize, receiveContent
 
Methods inherited from class edu.cmu.minorthird.util.gui.Viewer
fillerGBC, getContent, getNamedSubView, getSerializableContent, getSubViewNames, getSuperView, getVisibleContent, monitorSelections, monitorSelections, monitorSelections, monitorSelections, sendSignal, setContent, setContent, setSuperView, setSuperView
 
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
 

Constructor Detail

TypeSelector

public TypeSelector(java.lang.Class[] validSubclasses,
                    java.lang.Class rootClass)

TypeSelector

public TypeSelector(java.lang.Class[] validSubclasses,
                    java.lang.String configFilename,
                    java.lang.Class rootClass)

TypeSelector

public TypeSelector(java.lang.Class[] validSubclasses,
                    java.lang.String[] inLineClasses,
                    java.lang.String[] advancedParams,
                    java.lang.String configFilename,
                    java.lang.Class rootClass)
Parameters:
validSubclasses - array of all classes that can be manipulated by (a) selecting them in a TypeSelector, and (b) editing their properties. This array is inherited by all typeSelectors that are created, recursively, from this typeSelector.
inLineClasses - array of classes to be displayed inLine
configFilename - optional name of file containing names of additional classes to consider valid. File may be on classpath.
rootClass - the class of objects that will be selected by this typeSelector.
Method Detail

shortenedClassName

public java.lang.String shortenedClassName(java.lang.Class item)
Returns the shortened version of the class name


componentFor

public javax.swing.JComponent componentFor(java.lang.Object o)
Specified by:
componentFor in class ComponentViewer

BoxComponent

public javax.swing.JComponent BoxComponent(java.lang.Object o)

InLineComponent

public javax.swing.JComponent InLineComponent(java.lang.Object o)

createPE

public void createPE(java.lang.Class type)

main

public static void main(java.lang.String[] args)