|
org.openide.nodes 6.7.31 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.beans.FeatureDescriptor org.openide.nodes.Node
public abstract class Node
A node represents one element in a hierarchy of objects (beans). It provides all methods that are needed for communication between the IDE and the bean.
The node has three purposes:
Frequently nodes are created to represent DataObject
s.
But they may also represent anything to be displayed to the user or manipulated programmatically,
even if they have no data directly stored behind them; for example, a control panel or debugger
breakpoint.
There are two listeners in this class: PropertyChangeListener
and NodeListener
(which extends PropertyChangeListener
). The first
is designed to listen on properties that can be returned from
getPropertySets()
, the later for listening on changes in the
node itself (including the name, children, parent, set of properties,
icons, etc.). Be sure to distinguish between these two.
The node is cloneable. When a node is cloned, it is initialized with an empty set of listeners and no parent. The display name and short description are copied to the new node. The set of properties is shared.
Implements Lookup.Provider
since 3.11.
Nested Class Summary | |
---|---|
static interface |
Node.Cookie
Marker interface for all cookies. |
static interface |
Node.Handle
Serializable node reference. |
static class |
Node.IndexedProperty
Description of an indexed property and operations on it. |
static class |
Node.Property
Description of a Bean property on a node, and operations on it. |
static class |
Node.PropertySet
Class that represents one set of properties. |
Field Summary | |
---|---|
static Node |
EMPTY
An empty leaf node. |
static String |
PROP_COOKIE
Property for a node's cookie set. |
static String |
PROP_DISPLAY_NAME
Property for node display name. |
static String |
PROP_ICON
Property for the normal (closed) icon of a node. |
static String |
PROP_LEAF
Property saying whether the Node is Leaf |
static String |
PROP_NAME
Property for internal (not displayable) name of a node. |
static String |
PROP_OPENED_ICON
Property for the opened icon of a node. |
static String |
PROP_PARENT_NODE
Property for a node's parent. |
static String |
PROP_PROPERTY_SETS
Property for a node's list of property sets. |
static String |
PROP_SHORT_DESCRIPTION
Property for short description of a node. |
Constructor Summary | |
---|---|
protected |
Node(Children h)
Creates a new node with a given hierarchy of children. |
protected |
Node(Children h,
Lookup lookup)
Creates a new node with a given hierarchy of children and a lookup providing content for getCookie(java.lang.Class) and getLookup() methods. |
Method Summary | |
---|---|
void |
addNodeListener(NodeListener l)
Add a listener to changes in the node's intrinsic properties (name, cookies, etc.). |
void |
addPropertyChangeListener(PropertyChangeListener l)
Add a listener to the node's computed Bean properties. |
abstract boolean |
canCopy()
Test whether this node permits copying. |
abstract boolean |
canCut()
Test whether this node permits cutting. |
abstract boolean |
canDestroy()
Test whether this node can be deleted. |
abstract boolean |
canRename()
Test whether this node can be renamed. |
abstract Transferable |
clipboardCopy()
Called when a node is to be copied to the clipboard. |
abstract Transferable |
clipboardCut()
Called when a node is to be cut to the clipboard. |
protected Object |
clone()
Implements Object.clone() to behave correctly if cloning is desired. |
abstract Node |
cloneNode()
Clone the node. |
void |
destroy()
Remove the node from its parent and deletes it. |
abstract Transferable |
drag()
Called when a drag is started with this node. |
boolean |
equals(Object obj)
Compares for equaliness. |
protected void |
fireCookieChange()
Fires a change event for PROP_COOKIE . |
protected void |
fireDisplayNameChange(String o,
String n)
Allow subclasses that override the getDisplayName method to fire the changes of the name by itself. |
protected void |
fireIconChange()
Fire a change event for PROP_ICON . |
protected void |
fireNameChange(String o,
String n)
Allow subclasses that override the getName method to fire the changes of the name by itself. |
protected void |
fireNodeDestroyed()
To all node listeners fire node destroyed notification. |
protected void |
fireOpenedIconChange()
Fire a change event for PROP_OPENED_ICON . |
protected void |
firePropertyChange(String name,
Object o,
Object n)
Fire a property change event. |
protected void |
firePropertySetsChange(Node.PropertySet[] o,
Node.PropertySet[] n)
Fires a (Bean) property change event (for PROP_PROPERTY_SETS ). |
protected void |
fireShortDescriptionChange(String o,
String n)
Allow subclasses that override the getShortDescription method to fire the changes of the description by itself. |
SystemAction[] |
getActions()
Deprecated. Use getActions (false) instead. |
Action[] |
getActions(boolean context)
Get the set of actions that are associated with this node. |
Children |
getChildren()
Get the list of children. |
SystemAction[] |
getContextActions()
Deprecated. Use getActions (true) instead. |
JPopupMenu |
getContextMenu()
Make a context menu for this node. |
Node.Cookie |
getCookie(Class type)
Get a cookie for this node. |
abstract Component |
getCustomizer()
Get the customizer component. |
SystemAction |
getDefaultAction()
Deprecated. Use getPreferredAction() instead. |
abstract PasteType |
getDropType(Transferable t,
int action,
int index)
Determine if there is a paste operation that can be performed on provided transferable. |
abstract Node.Handle |
getHandle()
Obtain handle for this node (for serialization). |
abstract HelpCtx |
getHelpCtx()
Get context help associated with this node. |
String |
getHtmlDisplayName()
Return a variant of the display name containing HTML markup conforming to the limited subset of font-markup HTML supported by the lightweight HTML renderer org.openide.awt.HtmlRenderer
(font color, bold, italic and strikethrough supported; font
colors can be UIManager color keys if they are prefixed with
a ! character, i.e. |
abstract Image |
getIcon(int type)
Find an icon for this node (in the closed state). |
Lookup |
getLookup()
Obtains a Lookup represeting additional content of this Node. |
abstract NewType[] |
getNewTypes()
Get the new types that can be created in this node. |
abstract Image |
getOpenedIcon(int type)
Find an icon for this node (in the open state). |
Node |
getParentNode()
Get the parent node. |
abstract PasteType[] |
getPasteTypes(Transferable t)
Determine which paste operations are allowed when a given transferable is in the clipboard. |
Action |
getPreferredAction()
Gets the preferred action for this node. |
abstract Node.PropertySet[] |
getPropertySets()
Get the list of property sets for this node. |
abstract boolean |
hasCustomizer()
Test whether there is a customizer for this node. |
protected boolean |
hasPropertyChangeListener()
Allows to figure out, whether the node has any PropertyChangeListeners attached. |
boolean |
isLeaf()
Test whether the node is a leaf, or may contain children. |
void |
removeNodeListener(NodeListener l)
Remove a node listener. |
void |
removePropertyChangeListener(PropertyChangeListener l)
Remove a Bean property change listener. |
protected void |
setChildren(Children ch)
Allows to change Children of the node. |
void |
setDisplayName(String s)
Set the display name. |
void |
setName(String s)
Set the system name. |
void |
setShortDescription(String s)
Set the short description of the node. |
String |
toString()
|
Methods inherited from class java.beans.FeatureDescriptor |
---|
attributeNames, getDisplayName, getName, getShortDescription, getValue, isExpert, isHidden, isPreferred, setExpert, setHidden, setPreferred, setValue |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final Node EMPTY
public static final String PROP_DISPLAY_NAME
public static final String PROP_NAME
public static final String PROP_SHORT_DESCRIPTION
public static final String PROP_ICON
public static final String PROP_OPENED_ICON
public static final String PROP_PARENT_NODE
public static final String PROP_PROPERTY_SETS
public static final String PROP_COOKIE
public static final String PROP_LEAF
Constructor Detail |
---|
protected Node(Children h) throws IllegalStateException
h
- the children to use for this node
IllegalStateException
- if the children object is already in use by
a different nodeprotected Node(Children h, Lookup lookup) throws IllegalStateException
getCookie(java.lang.Class)
and getLookup()
methods.
As the lookup needs to be constucted before Node's constructor is called, it might not be obvious how to add Node or other objects into it without type casting. Here is the recommended suggestion that uses public/private pair of constructors:
public MyNode(Children ch, FileObject file) { this(ch, file, new InstanceContent()); } /** A private constructor that takes an InstanceContent and * uses it as internals for the Node lookup and also allow us * to modify the content, for example by adding a reference * to the node itself or any other object we want to represent. * * @param ch children we wish to use * @param file sample object we wish to have in lookup * @param content the content created by the first constructor */ private MyNode(Children ch, FileObject file, InstanceContent content) { super(ch, new AbstractLookup(content)); // adds the node to our own lookup content.add (this); // adds aditional items to the lookup content.add (file); }
h
- the children to use for this nodelookup
- the lookup to provide content of getLookup()
and also getCookie(java.lang.Class)
IllegalStateException
- if the children object is already in use by
a different nodeMethod Detail |
---|
protected Object clone() throws CloneNotSupportedException
Object.clone()
to behave correctly if cloning is desired.
But Cloneable
is not declared by default.
The default implementation checks whether the child list implements
Cloneable
, and if so, it clones the children.
If the child list does not support cloning, Children.LEAF
is used
instead for the children. The parent of this node is set to null
and an empty set
of listeners is attached to the node.
CloneNotSupportedException
- if the children cannot be cloned
in spite of implementing Cloneable
public abstract Node cloneNode()
public void setName(String s)
setName
in class FeatureDescriptor
s
- the new name
IllegalArgumentException
- if the new name cannot represent
a valid node namepublic void setDisplayName(String s)
setDisplayName
in class FeatureDescriptor
s
- the new namepublic void setShortDescription(String s)
This description may be used for tool tips, etc.
setShortDescription
in class FeatureDescriptor
s
- the new descriptionpublic abstract Image getIcon(int type)
type
- constant from BeanInfo
public abstract Image getOpenedIcon(int type)
type
- constant from BeanInfo
public abstract HelpCtx getHelpCtx()
getHelpCtx
in interface HelpCtx.Provider
null
or HelpCtx.DEFAULT_HELP
)public final Children getChildren()
protected final void setChildren(Children ch)
ch
- New children to be set on the node.public final boolean isLeaf()
true
if the children list is actually Children.LEAF
public final Node getParentNode()
null
if this node is the root of a hierarchypublic abstract boolean canRename()
FeatureDescriptor.getName()
to obtain the current name and
setName(java.lang.String)
to change it.
true
if the node can be renamedpublic abstract boolean canDestroy()
true
if canpublic void destroy() throws IOException
children's lock
, and removes
the node from its parent (if any). Also fires a property change.
This may be overridden by subclasses to do any additional cleanup.
IOException
- if something failspublic abstract Node.PropertySet[] getPropertySets()
public abstract Transferable clipboardCopy() throws IOException
IOException
- when the
copy cannot be performedpublic abstract Transferable clipboardCut() throws IOException
IOException
- when the
cut cannot be performedpublic abstract Transferable drag() throws IOException
IOException
- if a drag cannot be startedpublic abstract boolean canCopy()
true
if sopublic abstract boolean canCut()
true
if sopublic abstract PasteType[] getPasteTypes(Transferable t)
t
- the transferable in the clipboard
public abstract PasteType getDropType(Transferable t, int action, int index)
t
- the transferableaction
- the drag'n'drop action to do DnDConstants.ACTION_MOVE, ACTION_COPY, ACTION_LINKindex
- index between children the drop occured at or -1 if not specified
public abstract NewType[] getNewTypes()
public Action[] getActions(boolean context)
By default this method delegates to the deprecated getActions or getContextActions method depending on the value of suplied argument.
It is supposed to be overridden by subclasses accordingly.
context
- whether to find actions for context meaning or for the
node itself
public SystemAction[] getActions()
context menu
.
By default returns the actions in NodeOp.getDefaultActions()
.
public SystemAction[] getContextActions()
For example, right-clicking on a parent node in a hierarchical view (such as
the normal Explorer) should use getActions
. However, if this node
is serving as the parent of a (say) a window tab full of icons (e.g., in
explorer.view.IconView
), and the users right-clicks on
the empty space in this pane, then this method should be used to get
the appropriate actions for a popup menu.
Note that in the Windows UI system, e.g., these action sets are quite different.
getActions(boolean)
.public SystemAction getDefaultAction()
getPreferredAction()
instead.
null
indicating there should be none default actionpublic Action getPreferredAction()
getActions(boolean)
.
In case it is, the popup menu created from those actions
is encouraged to highlight the preferred action.
Override in subclasses accordingly.
null
if there is nonepublic final JPopupMenu getContextMenu()
getActions(boolean)
.
public abstract boolean hasCustomizer()
getCustomizer()
.
true
if there is a customizerpublic abstract Component getCustomizer()
null
if there is no customizerpublic Node.Cookie getCookie(Class type)
The set of cookies can change. If a node changes its set of
cookies, it fires a property change event with PROP_COOKIE
.
If the Node was constructed with a Lookup
in constructor
than this method delegates to the provided lookup object.
type
- the representation class of the cookie
null
if this node has no such cookieLookup
public final Lookup getLookup()
getLookup
in interface Lookup.Provider
public String getHtmlDisplayName()
org.openide.awt.HtmlRenderer
(font color, bold, italic and strikethrough supported; font
colors can be UIManager color keys if they are prefixed with
a ! character, i.e. <font color='!controlShadow'>).
Enclosing <html> tags are not needed. If returning non-null, HTML
markup characters that should be literally renderered must be
escaped (> becomes > and so forth).
This method should return either an HTML display name or null; it should not return the non-HTML display name.
Note there is no property corresponding to the HTML display name -
if it should change, a change in the display name should be fired; this
should not be a mechanism for returning anything other than a marked
up version of the return value of getDisplayName
.
HtmlRenderer
public abstract Node.Handle getHandle()
Node.Handle.getNode()
used after
deserialization to obtain the original node.
null
if this node is not persistablepublic final void addNodeListener(NodeListener l)
The listener is not notified about changes in subnodes until the
method getChildren().getNodes()
is called.
l
- the listener to addpublic final void removeNodeListener(NodeListener l)
l
- the listenerpublic final void addPropertyChangeListener(PropertyChangeListener l)
l
- the listenerprotected final boolean hasPropertyChangeListener()
public final void removePropertyChangeListener(PropertyChangeListener l)
l
- the listenerprotected final void firePropertyChange(String name, Object o, Object n)
name
- name of changed property (from getPropertySets()
); may be nullo
- old value; may be nulln
- new value; may be nullPropertyChangeEvent
protected final void fireNameChange(String o, String n)
protected final void fireDisplayNameChange(String o, String n)
protected final void fireShortDescriptionChange(String o, String n)
protected final void fireIconChange()
PROP_ICON
.
protected final void fireOpenedIconChange()
PROP_OPENED_ICON
.
protected final void fireNodeDestroyed()
protected final void firePropertySetsChange(Node.PropertySet[] o, Node.PropertySet[] n)
PROP_PROPERTY_SETS
).
o
- the old setn
- the new setprotected final void fireCookieChange()
PROP_COOKIE
.
The old and new values are set to null.
public boolean equals(Object obj)
obj
- object to compare
==
or is filter node of this nodepublic String toString()
|
org.openide.nodes 6.7.31 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |