edu.mit.ai.psg.ui.outliner
Class OutlineRendererCaching

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
Direct Known Subclasses:
CallOutlineRendererCaching, ObjectRenderer

public class OutlineRendererCaching
extends OutlineRendererDefault

Renderer which caches object, label, and tool tip text for better performance; useful when computing text isn't trivial, e.g., if it involves long computation or formatting.

To tailor rendering: This class overrides OutlineRendererDefault.getObjectText(edu.mit.ai.psg.ui.outliner.OutlineNode), OutlineRendererDefault.getLabelText(edu.mit.ai.psg.ui.outliner.OutlineNode), and OutlineRendererDefault.getToolTipText(edu.mit.ai.psg.ui.outliner.OutlineNode) to cache results of calling OutlineRendererDefault.computeObjectText(edu.mit.ai.psg.ui.outliner.OutlineNode), OutlineRendererDefault.computeLabelText(edu.mit.ai.psg.ui.outliner.OutlineNode), and OutlineRendererDefault.computeToolTipText(edu.mit.ai.psg.ui.outliner.OutlineNode), respectively. Thus, to customize rendering, derived classes should override OutlineRendererDefault.computeObjectText(edu.mit.ai.psg.ui.outliner.OutlineNode), OutlineRendererDefault.computeLabelText(edu.mit.ai.psg.ui.outliner.OutlineNode), or OutlineRendererDefault.computeToolTipText(edu.mit.ai.psg.ui.outliner.OutlineNode). To tailor caching: Caches are HashMapCaches so they don't prevent the garbage collector from collecting keys nor text. Cache entries for an outline node are decached When a new node is inserted (i.e., during rerendering), so text will be recomputed in case it has changed.

Individual caches can also be tailored or disabled at initialization by overriding makeObjectTextCache(), makeLabelTextCache(), or makeToolTipTextCache(). If a cache is null, the corresponding compute...Text will be called each time the text is needed, as in OutlineRendererDefault.

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
 
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
OutlineRendererCaching(OutlineMaker outlineMakr)
           
 
Method Summary
protected  void decacheLabelText(OutlineNode node)
          remove cache entry for this node, e.g., when rerendering node object
protected  void decacheObjectText(OutlineNode node)
          remove cache entry for this node, e.g., when rerendering node object
protected  void decacheToolTipText(OutlineNode node)
          remove cache entry for this node, e.g., when rerendering node object
 String getLabelText(OutlineNode node)
          caches result of OutlineRendererDefault.computeLabelText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getLabelTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
protected  Object getLabelTextCacheKey(OutlineNode node)
          get key for caching node label text: node.getLabel() Derived classes may override this to return node if text depends on state in node.
 String getObjectText(OutlineNode node)
          caches result of OutlineRendererDefault.computeObjectText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getObjectTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
protected  Object getObjectTextCacheKey(OutlineNode node)
          get key for caching node object text: node.getObject() Derived classes may override this to return node if text depends on state in node.
 String getToolTipText(OutlineNode node)
          caches result of OutlineRendererDefault.computeToolTipText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getToolTipTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
protected  Object getToolTipTextCacheKey(OutlineNode node)
          get key for caching node tool tip text: returns null since default tooltip is same for all nodes.
protected  Map makeLabelTextCache()
          For initializing cache for label text; override returning null to disable cache.
protected  Map makeObjectTextCache()
          For initializing cache for object text; override returning null to disable cache.
protected  Map makeToolTipTextCache()
          For initializing cache for tool tip text; override returning null to disable cache.
 void notifyInserted(OutlineModel model, OutlineNode child, int index)
          notified after model inserts (adds) new child into parent at index; decaches old text in case new text is updated.
 
Methods inherited from class edu.mit.ai.psg.ui.outliner.OutlineRendererDefault
addPopupMenuItems, addPopupMenuTitle, computeLabelText, computeLabelText, computeObjectText, computeObjectText, computeToolTipText, equals, getLabelComponent, getObjectComponent, getOutlineMaker, getTreeCellRendererComponent, isShowing, makeChildOutlineNodes, makeNoteOutlineNode, makeOutlineNode, 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
 

Constructor Detail

OutlineRendererCaching

public OutlineRendererCaching(OutlineMaker outlineMakr)
Method Detail

makeLabelTextCache

protected Map makeLabelTextCache()
For initializing cache for label text; override returning null to disable cache. Returns new HashMapCache(1)

makeObjectTextCache

protected Map makeObjectTextCache()
For initializing cache for object text; override returning null to disable cache. Returns new HashMapCache(1)

makeToolTipTextCache

protected Map makeToolTipTextCache()
For initializing cache for tool tip text; override returning null to disable cache. Returns new HashMapCache(1)

getLabelText

public String getLabelText(OutlineNode node)
caches result of OutlineRendererDefault.computeLabelText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getLabelTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
Overrides:
getLabelText in class OutlineRendererDefault

getObjectText

public String getObjectText(OutlineNode node)
caches result of OutlineRendererDefault.computeObjectText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getObjectTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
Overrides:
getObjectText in class OutlineRendererDefault

getToolTipText

public String getToolTipText(OutlineNode node)
caches result of OutlineRendererDefault.computeToolTipText(edu.mit.ai.psg.ui.outliner.OutlineNode) on key from getToolTipTextCacheKey(edu.mit.ai.psg.ui.outliner.OutlineNode).
Overrides:
getToolTipText in class OutlineRendererDefault

getLabelTextCacheKey

protected Object getLabelTextCacheKey(OutlineNode node)
get key for caching node label text: node.getLabel() Derived classes may override this to return node if text depends on state in node.

getObjectTextCacheKey

protected Object getObjectTextCacheKey(OutlineNode node)
get key for caching node object text: node.getObject() Derived classes may override this to return node if text depends on state in node.

getToolTipTextCacheKey

protected Object getToolTipTextCacheKey(OutlineNode node)
get key for caching node tool tip text: returns null since default tooltip is same for all nodes. Derived classes may override this to return node.getObject() or node if tooltip differs by object or node, respectively. if text depends on state in node.

decacheLabelText

protected void decacheLabelText(OutlineNode node)
remove cache entry for this node, e.g., when rerendering node object

decacheObjectText

protected void decacheObjectText(OutlineNode node)
remove cache entry for this node, e.g., when rerendering node object

decacheToolTipText

protected void decacheToolTipText(OutlineNode node)
remove cache entry for this node, e.g., when rerendering node object

notifyInserted

public void notifyInserted(OutlineModel model,
                           OutlineNode child,
                           int index)
notified after model inserts (adds) new child into parent at index; decaches old text in case new text is updated.
Overrides:
notifyInserted in class OutlineRendererDefault

Copyright (c) 1996-1999
Massachusetts Institute of Technology

Feedback: jeva-feedback@ai.mit.edu