edu.mit.ai.psg.jexa
Class BeanRenderer

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--edu.mit.ai.psg.ui.outliner.OutlineRendererDefault
                          |
                          +--edu.mit.ai.psg.ui.outliner.OutlineRendererCaching
                                |
                                +--edu.mit.ai.psg.jexa.ObjectRenderer
                                      |
                                      +--edu.mit.ai.psg.jexa.BeanRenderer

public class BeanRenderer
extends ObjectRenderer

BeanRenderer: displays an object's JavaBean properties (uncovered using java.beans.Introspector and elements of arrays.

See Also:
Serialized Form

Inner classes inherited from class edu.mit.ai.psg.ui.outliner.OutlineRendererDefault
OutlineRendererDefault.OutlineText
 
Inner classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Field Summary
static int maxChildIndex
          max number of child outline nodes to create for arrays or indexed properties.
 
Fields inherited from class edu.mit.ai.psg.jexa.ObjectRenderer
defaultFont
 
Fields inherited from class edu.mit.ai.psg.ui.outliner.OutlineRendererDefault
defaultToolTipText, labelComponent, myOutlineMaker, objectComponent
 
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
 
Constructor Summary
BeanRenderer(OutlineMaker outlineMaker)
           
 
Method Summary
static Method findInvokeableMethod(Method method, Class targetClass)
          Find a Method which can be invoked or null if none found; used to get the value of the property described by a descriptor, Returns null if method is null, so it's easy to use as
static void initialize(OutlineMaker outlineMaker)
          Call initialize to install instance in outliner for any instance of java.lang.Object (called by Jexa())
 List makeChildOutlineNodes(OutlineNode outlineNode)
          Uses java.beans.Introspector to display properties of objects when viewed as a JavaBean.
static PropertyDescriptor[] sortDescriptorsByReadMethodOrder(PropertyDescriptor[] descriptors, Class objClass)
          Introspector keeps properties in a hashtable which obfuscates the order.
 
Methods inherited from class edu.mit.ai.psg.jexa.ObjectRenderer
addFieldOutlineNodes, addPopupMenuTitle, computeLabelText, computeObjectText, isPublicToTopLevel, makeOutlineNode
 
Methods inherited from class edu.mit.ai.psg.ui.outliner.OutlineRendererCaching
decacheLabelText, decacheObjectText, decacheToolTipText, getLabelText, getLabelTextCacheKey, getObjectText, getObjectTextCacheKey, getToolTipText, getToolTipTextCacheKey, makeLabelTextCache, makeObjectTextCache, makeToolTipTextCache, notifyInserted
 
Methods inherited from class edu.mit.ai.psg.ui.outliner.OutlineRendererDefault
addPopupMenuItems, computeLabelText, computeObjectText, computeToolTipText, equals, getLabelComponent, getObjectComponent, getOutlineMaker, getTreeCellRendererComponent, isShowing, makeNoteOutlineNode, makeOutlineNode, notifyRemoving, paint, toString
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getUIClassID, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, processComponentKeyEvent, processFocusEvent, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setCursor, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hide, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, transferFocus
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

maxChildIndex

public static int maxChildIndex
max number of child outline nodes to create for arrays or indexed properties. 20 by default.
Constructor Detail

BeanRenderer

public BeanRenderer(OutlineMaker outlineMaker)
Method Detail

makeChildOutlineNodes

public List makeChildOutlineNodes(OutlineNode outlineNode)
Uses java.beans.Introspector to display properties of objects when viewed as a JavaBean. (java.beans.Introspector defaults to creating property descriptors for the object's public no-arg get- or is- methods.) Also shows elements of arrays.
Overrides:
makeChildOutlineNodes in class ObjectRenderer

sortDescriptorsByReadMethodOrder

public static PropertyDescriptor[] sortDescriptorsByReadMethodOrder(PropertyDescriptor[] descriptors,
                                                                    Class objClass)
Introspector keeps properties in a hashtable which obfuscates the order. Restore to order as returned by objClass.getMethods (which should reflect order in source code), using each property's read method (or indexed read method). Properties that do not have either read method are omitted, so returned array may be shorter than input array.

findInvokeableMethod

public static Method findInvokeableMethod(Method method,
                                          Class targetClass)
Find a Method which can be invoked or null if none found; used to get the value of the property described by a descriptor, Returns null if method is null, so it's easy to use as
.  method = findInvokeableMethod(propertyDescriptor.getReadMethod(),
.                                objectClass)

(Note that java.beans.Introspector defaults to creating property descriptors for the object's public no-arg get- or is- methods, and returning the reflection of these methods as the read methods for the descriptors. However, if a public method is declared in a non-public class, its reflection will not be invokeable (throws IllegalAccessException). If the object also implements a public interface with a method of the same signature, then the property may be read through the reflection of the interface method, so that is returned instead. Nested classes and interfaces are considered public only if they and all their enclosing classes or interfaces are public.)


initialize

public static void initialize(OutlineMaker outlineMaker)
Call initialize to install instance in outliner for any instance of java.lang.Object (called by Jexa())

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-feedback@ai.mit.edu