edu.cmu.minorthird.util.gui
Class Viewer

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
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
ComponentViewer, ControlledViewer, MessageViewer, ParallelViewer, SplitViewer, TransformedViewer

public abstract class Viewer
extends javax.swing.JPanel

Visualize an object, and obey certain rules for propogating events.

Specifically, a Viewer has a superview, which is also a viewer, and displays some 'content'. The canReceive(), clearContent(), and receiveContent() methods are used for displaying content. Viewers also send signals via the sendSignal() method. Signals are passed up to a superview, its superview, and so on, until a Viewer is found that canHandle() that signal, at which point the signal is trapped, and processed.

Viewers are intended to be used for linked display components.

Author:
William cohen
See Also:
Serialized Form

Nested Class Summary
protected static interface 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
protected  java.util.Map namedSubViews
          Maps String 'names' of subviews to viewers.
protected static int OBJECT_SELECTED
           
protected static int OBJECT_UPDATED
           
protected static int SET_CONTENT
           
protected static int 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
Viewer()
           
Viewer(java.lang.Object content)
           
 
Method Summary
protected abstract  boolean canHandle(int signal, java.lang.Object argument, java.util.ArrayList senders)
          Offer to handle a signal.
abstract  boolean canReceive(java.lang.Object obj)
          See if proposed content is displayable.
abstract  void clearContent()
          Called when no content should be displayed.
protected static java.awt.GridBagConstraints fillerGBC()
          Useful default case for a GridBagConstraint.
 java.lang.Object getContent()
          Get the object being displayed, as determined by the last call to setContent().
 Viewer getNamedSubView(java.lang.String name)
          Retrieve a subview by name.
 java.lang.Object getSerializableContent()
           
 java.util.Set getSubViewNames()
          Provide a set of subview names
 Viewer getSuperView()
          Get Viewer in which this viewer is contained.
 java.lang.Object getVisibleContent()
          Get the object being displayed as the user sees it.
protected abstract  void handle(int signal, java.lang.Object argument, java.util.ArrayList senders)
          Handle a signal from a subview.
protected abstract  void initialize()
          Called at creation time.
protected  void monitorSelections(javax.swing.JList jlist)
          Add a list selection listener which sends the appropriate viewer signal.
protected  void monitorSelections(javax.swing.JList jlist, Viewer.Transform transformer)
          Add a list selection listener which sends the appropriate viewer signal.
protected  void monitorSelections(javax.swing.JTable jtable, int colIndex)
          Add a list selection listener which sends the appropriate viewer signal.
protected  void monitorSelections(javax.swing.JTable jtable, int colIndex, Viewer.Transform transformer)
          Add a list selection listener which sends the appropriate viewer signal.
abstract  void receiveContent(java.lang.Object obj)
          Called when new content obtained.
protected  void sendSignal(int signal, java.lang.Object argument)
          Send a signal.
 void setContent(java.lang.Object content)
          Change the object being displayed by this viewer.
 void setContent(java.lang.Object content, boolean forceUpdate)
          Change the object being displayed by this viewer.
 void setSuperView(Viewer superView)
          Declare this viewer to be the only subview of superView.
 void setSuperView(Viewer superView, java.lang.String title)
          Declare this viewer to be a subview of superView.
 
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

SET_CONTENT

protected static final int SET_CONTENT
See Also:
Constant Field Values

TEXT_MESSAGE

protected static final int TEXT_MESSAGE
See Also:
Constant Field Values

OBJECT_SELECTED

protected static final int OBJECT_SELECTED
See Also:
Constant Field Values

OBJECT_UPDATED

protected static final int OBJECT_UPDATED
See Also:
Constant Field Values

namedSubViews

protected java.util.Map namedSubViews
Maps String 'names' of subviews to viewers.

Constructor Detail

Viewer

public Viewer()

Viewer

public Viewer(java.lang.Object content)
Method Detail

setSuperView

public final void setSuperView(Viewer superView)
Declare this viewer to be the only subview of superView.


setSuperView

public final void setSuperView(Viewer superView,
                               java.lang.String title)
Declare this viewer to be a subview of superView.


getSuperView

public final Viewer getSuperView()
Get Viewer in which this viewer is contained.


setContent

public final void setContent(java.lang.Object content)
Change the object being displayed by this viewer.


setContent

public final void setContent(java.lang.Object content,
                             boolean forceUpdate)
Change the object being displayed by this viewer. If forceUpdate is false, do not force the display to be changed.


getContent

public final java.lang.Object getContent()
Get the object being displayed, as determined by the last call to setContent().


getVisibleContent

public java.lang.Object getVisibleContent()
Get the object being displayed as the user sees it.


getSerializableContent

public java.lang.Object getSerializableContent()

sendSignal

protected final void sendSignal(int signal,
                                java.lang.Object argument)
Send a signal.


initialize

protected abstract void initialize()
Called at creation time. Initialize the layout of this view.


receiveContent

public abstract void receiveContent(java.lang.Object obj)
Called when new content obtained. So load it into the viewer.


clearContent

public abstract void clearContent()
Called when no content should be displayed.


canReceive

public abstract boolean canReceive(java.lang.Object obj)
See if proposed content is displayable.


handle

protected abstract void handle(int signal,
                               java.lang.Object argument,
                               java.util.ArrayList senders)
Handle a signal from a subview.


canHandle

protected abstract boolean canHandle(int signal,
                                     java.lang.Object argument,
                                     java.util.ArrayList senders)
Offer to handle a signal.


getSubViewNames

public java.util.Set getSubViewNames()
Provide a set of subview names


getNamedSubView

public Viewer getNamedSubView(java.lang.String name)
Retrieve a subview by name.


fillerGBC

protected static java.awt.GridBagConstraints fillerGBC()
Useful default case for a GridBagConstraint.


monitorSelections

protected void monitorSelections(javax.swing.JList jlist,
                                 Viewer.Transform transformer)
Add a list selection listener which sends the appropriate viewer signal. The transformer is used to re-map the selected value.


monitorSelections

protected void monitorSelections(javax.swing.JList jlist)
Add a list selection listener which sends the appropriate viewer signal.


monitorSelections

protected void monitorSelections(javax.swing.JTable jtable,
                                 int colIndex,
                                 Viewer.Transform transformer)
Add a list selection listener which sends the appropriate viewer signal. The transformer is used to re-map the selected value.


monitorSelections

protected void monitorSelections(javax.swing.JTable jtable,
                                 int colIndex)
Add a list selection listener which sends the appropriate viewer signal.