org.openide.windows
Class CloneableTopComponent

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--org.openide.windows.TopComponent
                          |
                          +--org.openide.windows.CloneableTopComponent
All Implemented Interfaces:
Accessible, Externalizable, ImageObserver, MenuContainer, Serializable, TopComponent.Cloneable
Direct Known Subclasses:
CloneableEditor, HtmlBrowser.BrowserComponent

public abstract class CloneableTopComponent
extends TopComponent
implements Externalizable, TopComponent.Cloneable

A top component which may be cloned. Typically cloning is harmless, i.e. the data contents (if any) of the component are the same, and the new component is merely a different presentation. Also, a list of all cloned components is kept.

See Also:
Serialized Form

Inner Class Summary
static class CloneableTopComponent.Ref
          Keeps track of a group of sister clones.
 
Inner classes inherited from class org.openide.windows.TopComponent
TopComponent.Cloneable, TopComponent.NodeName, TopComponent.Registry
 
Inner classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
Component.AccessibleAWTComponent
 
Field Summary
static CloneableTopComponent.Ref EMPTY
          Empty clone-sister list.
 
Fields inherited from class org.openide.windows.TopComponent
CLOSE_EACH, CLOSE_LAST
 
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
CloneableTopComponent()
          Create a cloneable top component.
CloneableTopComponent(DataObject obj)
          Create a cloneable top component associated with a data object.
 
Method Summary
 boolean canClose(Workspace workspace, boolean last)
          Called when this component is about to close.
 Object clone()
          Clone the top component and register the clone.
 TopComponent cloneComponent()
          Clone the top component and register the clone.
 CloneableTopComponent cloneTopComponent()
          Clone the top component and register the clone.
protected  boolean closeLast()
          Called when the last component in a clone group is closing.
protected  CloneableTopComponent createClonedObject()
          Called from clone() to actually create a new component from this one.
 CloneableTopComponent.Ref getReference()
          Get a list of all components which are clone-sisters of this one.
 void readExternal(ObjectInput oi)
          Deserialize this top component.
 void setReference(CloneableTopComponent.Ref another)
          Changes the reference to which this components belongs.
 void writeExternal(ObjectOutput oo)
          Serialize this top component.
 
Methods inherited from class org.openide.windows.TopComponent
close, close, closeNotify, componentActivated, componentDeactivated, getAccessibleContext, getActivatedNodes, getCloseOperation, getHelpCtx, getIcon, getRegistry, getSystemActions, getUndoRedo, isOpened, isOpened, open, open, openNotify, requestFocus, requestVisible, setActivatedNodes, setCloseOperation, setIcon, setName, writeReplace
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getUIClassID, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, 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, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY

public static final CloneableTopComponent.Ref EMPTY
Empty clone-sister list.
Constructor Detail

CloneableTopComponent

public CloneableTopComponent()
Create a cloneable top component.

CloneableTopComponent

public CloneableTopComponent(DataObject obj)
Create a cloneable top component associated with a data object.
Parameters:
obj - the data object
See Also:
TopComponent.TopComponent(DataObject)
Method Detail

clone

public final Object clone()
Clone the top component and register the clone.
Overrides:
clone in class Object
Returns:
the new component

cloneTopComponent

public final CloneableTopComponent cloneTopComponent()
Clone the top component and register the clone. Simply calls createClonedObject () and registers the component to Ref.
Returns:
the new cloneable top component

cloneComponent

public final TopComponent cloneComponent()
Clone the top component and register the clone.
Specified by:
cloneComponent in interface TopComponent.Cloneable
Returns:
the new component

createClonedObject

protected CloneableTopComponent createClonedObject()
Called from clone() to actually create a new component from this one. The default implementation only clones the object by calling Object.clone(). Subclasses may leave this as is, assuming they have no special needs for the cloned data besides copying it from one object to the other. If they do, the superclass method should be called, and the returned object modified appropriately.
Returns:
a copy of this object

getReference

public final CloneableTopComponent.Ref getReference()
Get a list of all components which are clone-sisters of this one.
Returns:
the clone registry for this component's group

setReference

public final void setReference(CloneableTopComponent.Ref another)
Changes the reference to which this components belongs.
Parameters:
another - the new reference this component should belong

canClose

public boolean canClose(Workspace workspace,
                        boolean last)
Called when this component is about to close. The default implementation just unregisters the clone from its clone list.

If this is the last component in its clone group, then closeLast() is called to clean up.

Overrides:
canClose in class TopComponent
Returns:
true if there are still clone sisters left, or this was the last in its group but closeLast() returned true

closeLast

protected boolean closeLast()
Called when the last component in a clone group is closing. The default implementation just returns true. Subclasses may specify some hooks to run.
Returns:
true if the component is ready to be closed, false to cancel

readExternal

public void readExternal(ObjectInput oi)
                  throws IOException,
                         ClassNotFoundException
Description copied from class: TopComponent
Deserialize this top component. Subclasses wishing to store state must call the super method, then read from the stream.
Specified by:
readExternal in interface Externalizable
Overrides:
readExternal in class TopComponent
Following copied from class: org.openide.windows.TopComponent
Parameters:
in - the stream to deserialize from

writeExternal

public void writeExternal(ObjectOutput oo)
                   throws IOException
Description copied from class: TopComponent
Serialize this top component. Subclasses wishing to store state must call the super method, then write to the stream.
Specified by:
writeExternal in interface Externalizable
Overrides:
writeExternal in class TopComponent
Following copied from class: org.openide.windows.TopComponent
Parameters:
out - the stream to serialize to


Built on December 12 2001.  |  Portions Copyright 1997-2001 Sun Microsystems, Inc. All rights reserved.