net.sf.taverna.zaria
Class ZBasePane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by net.sf.taverna.zaria.ZPane
                  extended by net.sf.taverna.zaria.ZBasePane
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, ZTreeNode
Direct Known Subclasses:
WorkbenchZBasePane

public abstract class ZBasePane
extends ZPane

A base ZPane implementation, this is always the root of the ZTreeNode heirarchy (or should be for sane uses). We need an additional layer here as the swap component method relies on having a parent, without the extra 'invisible' parent here we couldn't swap out the user visible top level UI component.

Author:
Tom Oinn
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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
ZBasePane()
          Construct a new ZBasePane, inserting a default ZBlankComponent as the solitary child
 
Method Summary
 void configure(org.jdom.Element e)
          Automatically intializes the repository with any named components that aren't already there.
 java.util.List<javax.swing.Action> getActions()
          No actions, the ZBasePane is effectively invisible
abstract  javax.swing.JComponent getComponent(java.lang.Class theClass)
          Given a Class object from an SPI construct a JComponent.
 org.jdom.Element getElement()
          Build current state of this node in the form of a JDOM element
 java.lang.String[] getKnownSPINames()
          Get known SPIs to be used with the ZRavenComponent
abstract  javax.swing.JMenuItem getMenuItem(java.lang.Class theClass)
          Given a Class object from an SPI produce an appropriate JMenuItem.
 java.util.List<ZRavenComponent> getRavenComponents()
          Enumerate all visible ZRavenComponent panes within the current layout
 SpiRegistry getRegistryFor(java.lang.String spiName)
          Create or return a cached reference to an SpiRegistry for the specified SPI name
 Repository getRepository()
          Get the Raven repository associated with this ZBasePane
 javax.swing.Action getToggleEditAction()
          Get an Action object which can toggle the editable state of the ZBasePane
 java.util.List<ZTreeNode> getZChildren()
          Single element list consiting only of the child item
 void lockFrame()
          Lock the parent frame, showing an infinite progress display message
 void setEditable(boolean b)
          Call setEditable on the single child
 void setKnownSPINames(java.lang.String[] spis)
          Set the array of known SPIs
 void setRepository(Repository r)
          Set the Raven Repository object used to discover SPI implementations for the ZRavenComponent instances within the layout
 void swap(ZTreeNode oldComponent, ZTreeNode newComponent)
          Only a single child so always swap it out and replace with the new component
 void unlockFrame()
          Unlock the parent frame
 
Methods inherited from class net.sf.taverna.zaria.ZPane
getFrame, getRoot, getToolbarComponents, getZChildCount, getZParent, isEditable, isZLeaf, isZRoot
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.taverna.zaria.ZTreeNode
discard
 

Constructor Detail

ZBasePane

public ZBasePane()
Construct a new ZBasePane, inserting a default ZBlankComponent as the solitary child

Method Detail

configure

public void configure(org.jdom.Element e)
Automatically intializes the repository with any named components that aren't already there.


getActions

public java.util.List<javax.swing.Action> getActions()
No actions, the ZBasePane is effectively invisible


getComponent

public abstract javax.swing.JComponent getComponent(java.lang.Class theClass)
Given a Class object from an SPI construct a JComponent. Typically the SPI itself will point to a factory pattern although it may be directly linked to the implementation classes (which is why we're using the SpiRegistry rather than the more elegant InstanceRegistry). This method will always be extended, the only reason to avoid making this entire class abstract is for testing purposes (not a very good reason really)


getElement

public org.jdom.Element getElement()
Description copied from interface: ZTreeNode
Build current state of this node in the form of a JDOM element


getKnownSPINames

public java.lang.String[] getKnownSPINames()
Get known SPIs to be used with the ZRavenComponent


getMenuItem

public abstract javax.swing.JMenuItem getMenuItem(java.lang.Class theClass)
Given a Class object from an SPI produce an appropriate JMenuItem. By default this method doesn't do much, it just returns a textual menu item with the classname in but it's expected that this will be extended by any implementing class to produce something sensible. I don't want to make this method any more specialized to avoid dependencies on the potential range of SPI interfaces.


getRavenComponents

public java.util.List<ZRavenComponent> getRavenComponents()
Enumerate all visible ZRavenComponent panes within the current layout


getRegistryFor

public SpiRegistry getRegistryFor(java.lang.String spiName)
Create or return a cached reference to an SpiRegistry for the specified SPI name


getRepository

public Repository getRepository()
Get the Raven repository associated with this ZBasePane


getToggleEditAction

public javax.swing.Action getToggleEditAction()
Get an Action object which can toggle the editable state of the ZBasePane


getZChildren

public java.util.List<ZTreeNode> getZChildren()
Single element list consiting only of the child item

Returns:
List of child nodes

lockFrame

public void lockFrame()
Lock the parent frame, showing an infinite progress display message


setEditable

public void setEditable(boolean b)
Call setEditable on the single child

Specified by:
setEditable in interface ZTreeNode
Overrides:
setEditable in class ZPane

setKnownSPINames

public void setKnownSPINames(java.lang.String[] spis)
Set the array of known SPIs


setRepository

public void setRepository(Repository r)
Set the Raven Repository object used to discover SPI implementations for the ZRavenComponent instances within the layout

Parameters:
r -

swap

public void swap(ZTreeNode oldComponent,
                 ZTreeNode newComponent)
Only a single child so always swap it out and replace with the new component

Parameters:
oldComponent - the ZTreeNode to remove as a child
newComponent - the ZTreeNode to insert in its place

unlockFrame

public void unlockFrame()
Unlock the parent frame