Package jadex.rules.tools.stateviewer
Class OAVTreeModel
- java.lang.Object
-
- jadex.rules.tools.stateviewer.OAVTreeModel
-
- All Implemented Interfaces:
javax.swing.tree.TreeModel
- Direct Known Subclasses:
ObjectInspectorTreeModelTest
public class OAVTreeModel extends java.lang.Object implements javax.swing.tree.TreeModel
Swing Tree model for an OAV state. Enables displaying an oav state in a swing tree.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
OAVTreeModel.AttributeNode
A node representing an attribute value.static class
OAVTreeModel.OAVTreeCellRenderer
OAV tree cell renderer displays right icons.class
OAVTreeModel.ObjectInspectorNode
TreeModel node for java object inspectionclass
OAVTreeModel.ObjectNode
A node representing an object.class
OAVTreeModel.RootNode
The root node containing the nodes for the root objects of the state.
-
Field Summary
Fields Modifier and Type Field Description protected CopyState
copy
The local copy of the state (synchronized to swing thread).protected static boolean
enableObjectInspection
flag to indicate if java objects should be inspectable in the tree TO DO: make configurable via GUI?protected static javax.swing.UIDefaults
icons
The image icons.protected java.util.List
inspectors
list for all created Attribute inspector nodesprotected java.util.Set
listeners
The listeners.protected java.util.Map
nodes
Nodes for objects to allow fine-tuned tree redraw (object-id -> {node1, node2, ...}).protected boolean
notify
The pending notification flag.protected OAVTreeModel.RootNode
root
The root node.protected static java.util.List
timerList
The list of timers to update the object inspector tree nodes
-
Constructor Summary
Constructors Constructor Description OAVTreeModel(IOAVState state)
Create new OAV tree model.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static void
addRefreshTimer(javax.swing.Timer t)
Add a timer to the static refresh timer listvoid
addTreeModelListener(javax.swing.event.TreeModelListener l)
Add a listener to the model.void
dispose()
Dispose the model and remove all listeners.protected void
fireTreeStructureChanged(java.lang.Object[] treePath)
Regenerate subtree if a node was replacedjava.lang.Object
getChild(java.lang.Object parent, int index)
Get the given child of a node.int
getChildCount(java.lang.Object parent)
Get the number of children of the given node.protected int
getIndexForChild(java.util.List children, java.lang.Object child)
Get the index for a child in children list, beginning with index=0protected int
getIndexForChild(java.util.List children, java.lang.Object child, int start)
Returns the FIRST occurrence of child in given children list.int
getIndexOfChild(java.lang.Object parent, java.lang.Object child)
Get the index of a given child.protected int
getNextNodeUUID()
Generate a unique id for ObjectNode'sjava.lang.Object
getRoot()
Get the root node of the tree.protected static boolean
isInspectable(java.lang.Class clazz, boolean inspectObjectClass)
Decide if java object should be inspectable.protected static boolean
isInspectable(java.lang.Object obj)
Decide if java object should be inspectable.boolean
isLeaf(java.lang.Object node)
Check if a node is a leaf node.protected void
refreshInspectorNodes()
Refresh all displayed attributesprotected static void
removeRefreshTimer(javax.swing.Timer t)
Remove a timer from the static refresh timer listvoid
removeTreeModelListener(javax.swing.event.TreeModelListener l)
Remove a listener from the model.static void
setRefreshDelay(int millis)
Sets the refresh delay for the ObjectInspector refresh A value equal or lower to 0 disables the refresh and stop the timersprotected boolean
testInspectorNodesListEquals(java.util.List l1, java.util.List l2)
Tests if two lists of Inspector nodes (e.g.void
valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)
Called by user changes (when the tree is editable).
-
-
-
Field Detail
-
enableObjectInspection
protected static final boolean enableObjectInspection
flag to indicate if java objects should be inspectable in the tree TO DO: make configurable via GUI?- See Also:
- Constant Field Values
-
icons
protected static final javax.swing.UIDefaults icons
The image icons.
-
timerList
protected static java.util.List timerList
The list of timers to update the object inspector tree nodes
-
root
protected OAVTreeModel.RootNode root
The root node.
-
copy
protected CopyState copy
The local copy of the state (synchronized to swing thread).
-
listeners
protected java.util.Set listeners
The listeners.
-
notify
protected boolean notify
The pending notification flag.
-
nodes
protected java.util.Map nodes
Nodes for objects to allow fine-tuned tree redraw (object-id -> {node1, node2, ...}). Because the state is a (possibly cyclic) graph, there may be more than one node for a single object!
-
inspectors
protected java.util.List inspectors
list for all created Attribute inspector nodes
-
-
Constructor Detail
-
OAVTreeModel
public OAVTreeModel(IOAVState state)
Create new OAV tree model.- Parameters:
id
- The root object id.state
- The OAV state.showempty
- Flag, if empty attributes should be shown.
-
-
Method Detail
-
getRoot
public java.lang.Object getRoot()
Get the root node of the tree.- Specified by:
getRoot
in interfacejavax.swing.tree.TreeModel
-
getChildCount
public int getChildCount(java.lang.Object parent)
Get the number of children of the given node.- Specified by:
getChildCount
in interfacejavax.swing.tree.TreeModel
-
getChild
public java.lang.Object getChild(java.lang.Object parent, int index)
Get the given child of a node.- Specified by:
getChild
in interfacejavax.swing.tree.TreeModel
-
getIndexOfChild
public int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
Get the index of a given child.- Specified by:
getIndexOfChild
in interfacejavax.swing.tree.TreeModel
-
isLeaf
public boolean isLeaf(java.lang.Object node)
Check if a node is a leaf node.- Specified by:
isLeaf
in interfacejavax.swing.tree.TreeModel
-
addTreeModelListener
public void addTreeModelListener(javax.swing.event.TreeModelListener l)
Add a listener to the model.- Specified by:
addTreeModelListener
in interfacejavax.swing.tree.TreeModel
-
removeTreeModelListener
public void removeTreeModelListener(javax.swing.event.TreeModelListener l)
Remove a listener from the model.- Specified by:
removeTreeModelListener
in interfacejavax.swing.tree.TreeModel
-
valueForPathChanged
public void valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)
Called by user changes (when the tree is editable).- Specified by:
valueForPathChanged
in interfacejavax.swing.tree.TreeModel
-
getNextNodeUUID
protected int getNextNodeUUID()
Generate a unique id for ObjectNode's- Returns:
- synchronized call to System.currentTimeMillis();
-
fireTreeStructureChanged
protected void fireTreeStructureChanged(java.lang.Object[] treePath)
Regenerate subtree if a node was replaced- Parameters:
treePath
- The Path to the node that was changed
-
testInspectorNodesListEquals
protected boolean testInspectorNodesListEquals(java.util.List l1, java.util.List l2)
Tests if two lists of Inspector nodes (e.g. children) are semantically equals- Parameters:
l1
- list to testl2
- list to test- Returns:
- true if the lists are the same or contains the semantically same objects in the same order
-
getIndexForChild
protected int getIndexForChild(java.util.List children, java.lang.Object child)
Get the index for a child in children list, beginning with index=0
-
getIndexForChild
protected int getIndexForChild(java.util.List children, java.lang.Object child, int start)
Returns the FIRST occurrence of child in given children list. Be sure to remove the child from the list or to save the index to find additional occurrences of the child in later searches.- Parameters:
children
- List to search for the child.child
- The child to search for.- Returns:
- the FIRST index for the child in the children list
-
refreshInspectorNodes
protected void refreshInspectorNodes()
Refresh all displayed attributes- Parameters:
oldRoot
-
-
dispose
public void dispose()
Dispose the model and remove all listeners.
-
isInspectable
protected static boolean isInspectable(java.lang.Object obj)
Decide if java object should be inspectable.
-
isInspectable
protected static boolean isInspectable(java.lang.Class clazz, boolean inspectObjectClass)
Decide if java object should be inspectable. This method test if clazz.isAssignableFrom([String|Number|Character|])
-
setRefreshDelay
public static void setRefreshDelay(int millis)
Sets the refresh delay for the ObjectInspector refresh A value equal or lower to 0 disables the refresh and stop the timers
-
addRefreshTimer
protected static void addRefreshTimer(javax.swing.Timer t)
Add a timer to the static refresh timer list- Parameters:
t
-
-
removeRefreshTimer
protected static void removeRefreshTimer(javax.swing.Timer t)
Remove a timer from the static refresh timer list- Parameters:
t
-
-
-