edu.wisc.ssec.mcidasv.ui
Class McvComponentHolder

java.lang.Object
  extended by ucar.unidata.collab.SharableImpl
      extended by ucar.unidata.collab.PropertiedThing
          extended by ucar.unidata.ui.ComponentHolder
              extended by ucar.unidata.idv.ui.IdvComponentHolder
                  extended by edu.wisc.ssec.mcidasv.ui.McvComponentHolder
All Implemented Interfaces:
PropertyChangeListener, EventListener, Sharable

public class McvComponentHolder
extends IdvComponentHolder

McIDAS-V needs its own ComponentHolder merely to associate ViewManagers with their parent ComponentHolders. This association is later used in McIDASVViewPanel to create a "hierarchical name" for each ViewManager.

Instead of having something like "Panel 1" appearing in the layer controls, we now have "ComponentHolder Name>Panel 1". Note: ComponentHolder names always double as tab names! McV also intercepts ComponentHolder renaming and updates the layer controls instantly.


Field Summary
private  JComponent cached
           
static String CATEGORY_DESCRIPTION
          IDV friendly description of a dynamic XML skin.
static String TYPE_DYNAMIC_SKIN
          Used to distinguish a dynamic skin from other things.
private  UIManager uiManager
          Kept around to avoid annoying casting.
 
Fields inherited from class ucar.unidata.idv.ui.IdvComponentHolder
TYPE_CHOOSERS, TYPE_DEFAULT, TYPE_SKIN
 
Fields inherited from class ucar.unidata.ui.ComponentHolder
ATTR_NAME, BORDER_NAMES, BORDERS, displayBtn, header, isRemoved, nameFld, parent
 
Fields inherited from class ucar.unidata.collab.PropertiedThing
propertiesDialog
 
Constructor Summary
McvComponentHolder()
          Default constructor for serialization.
McvComponentHolder(IntegratedDataViewer idv, Object obj)
          Fairly typical constructor.
 
Method Summary
 Element createXmlNode(Document doc)
          Overridden so that we can (one day) do the required extra work to write out the XML for this skin.
 JComponent doMakeContents()
          Overridden so that McV can do the required extra work if this holder is holding a dynamic XML skin.
 void doRemove()
          Lets the IDV take care of the details, but does null out the local reference to the UIManager.
 String getCategory()
          Overridden so that McV can return a more accurate category if this holder is holding a dynamic skin.
 String getTypeName()
          Overridden so that McV can return a more accurate description if this holder is holding a dynamic skin.
 JComponent makeDynamicSkin()
          Build the UI component using the XML skin contained by this holder.
protected  JComponent makeSkin()
           If the object being held in this component holder is a skin, calling this method will create a component based upon the skin.
 void setAsActiveTab()
           Tell this component holder's component group that the tab corresponding to this holder should become the active tab.
 void setIdv(IntegratedDataViewer idv)
          Mostly used to ensure that the local reference to the UI manager is valid when deserializing.
 void setName(String value)
           Merely sets the name of this component holder to the contents of value.
 
Methods inherited from class ucar.unidata.idv.ui.IdvComponentHolder
displayControlHasInitialized, getIcon, getIdv, getName, getObject, getPopupMenuItems, getType, getViewManagers, initWith, removeDisplayControl, setObject, setType, setViewManagers, undockControl
 
Methods inherited from class ucar.unidata.ui.ComponentHolder
applyProperties, clearContents, doMakeHeader, getBeingShown, getBorder, getBorderLayoutLocation, getContents, getHierachicalName, getInternalFrame, getInternalFrameShown, getLayoutRect, getParent, getPropertiesComponents, getRoot, getShowHeader, makeTree, print, removeDisplayComponent, setBorder, setBorder, setBorderLayoutLocation, setCategory, setInternalFrameShown, setLayoutRect, setParent, setShowHeader, setState, showPopup, toString, wrapContents
 
Methods inherited from class ucar.unidata.collab.PropertiedThing
addPropertyChangeListener, doApplyProperties, firePropertyChange, firePropertyChange, getPropertyListeners, getPropertyTabs, isShowing, propertyChange, removePropertyChangeListener, showProperties, showProperties
 
Methods inherited from class ucar.unidata.collab.SharableImpl
applySharableProperties, doShare, doShare, doShareExternal, doShareInternal, getReceiveShareTime, getSharablePropertiesComponent, getShareGroup, getSharing, getUniqueId, initSharable, receiveShareData, removeSharable, setReceiveShareTime, setShareGroup, setSharing, setUniqueId, showSharableDialog
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CATEGORY_DESCRIPTION

public static final String CATEGORY_DESCRIPTION
IDV friendly description of a dynamic XML skin.

See Also:
Constant Field Values

TYPE_DYNAMIC_SKIN

public static final String TYPE_DYNAMIC_SKIN
Used to distinguish a dynamic skin from other things.

See Also:
Constant Field Values

uiManager

private UIManager uiManager
Kept around to avoid annoying casting.


cached

private JComponent cached
Constructor Detail

McvComponentHolder

public McvComponentHolder()
Default constructor for serialization.


McvComponentHolder

public McvComponentHolder(IntegratedDataViewer idv,
                          Object obj)
Fairly typical constructor.

Parameters:
idv - Reference to the main IDV object.
obj - object being held in this component holder.
Method Detail

createXmlNode

public Element createXmlNode(Document doc)
Overridden so that we can (one day) do the required extra work to write out the XML for this skin.

Overrides:
createXmlNode in class IdvComponentHolder
Parameters:
doc - Parent document we'll use for XML generation.
Returns:
XML representation of what is being held.

doMakeContents

public JComponent doMakeContents()
Overridden so that McV can do the required extra work if this holder is holding a dynamic XML skin.

Overrides:
doMakeContents in class IdvComponentHolder
Returns:
Contents of this holder as a UI component.

doRemove

public void doRemove()
Lets the IDV take care of the details, but does null out the local reference to the UIManager.

Overrides:
doRemove in class IdvComponentHolder

getCategory

public String getCategory()
Overridden so that McV can return a more accurate category if this holder is holding a dynamic skin.

Overrides:
getCategory in class IdvComponentHolder
Returns:
Category name for the type of thing we're holding.

getTypeName

public String getTypeName()
Overridden so that McV can return a more accurate description if this holder is holding a dynamic skin.

Overrides:
getTypeName in class IdvComponentHolder
Returns:
The description of what is being held.

makeSkin

protected JComponent makeSkin()

If the object being held in this component holder is a skin, calling this method will create a component based upon the skin.

Overridden so that McV can tell the UIManager to associate the skin's ViewManagers with this component holder. That association is used to build the hierarchical names in the ViewPanel.

Overrides:
makeSkin in class IdvComponentHolder
Returns:
The component represented by this holder's skin.

setIdv

public void setIdv(IntegratedDataViewer idv)
Mostly used to ensure that the local reference to the UI manager is valid when deserializing.

Overrides:
setIdv in class IdvComponentHolder
Parameters:
idv - Main IDV reference!

setName

public void setName(String value)

Merely sets the name of this component holder to the contents of value.

Overridden so that McV can tell the ViewPanel to update upon a name change.

Overrides:
setName in class ComponentHolder
Parameters:
value - New name of this component holder.

makeDynamicSkin

public JComponent makeDynamicSkin()
Build the UI component using the XML skin contained by this holder.

Returns:
UI Component specified by the skin contained in this holder.

setAsActiveTab

public void setAsActiveTab()

Tell this component holder's component group that the tab corresponding to this holder should become the active tab.