? debuggerjpda/prototypes
Index: debuggercore/src/org/netbeans/modules/debugger/ui/models/SessionsTableModel.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/models/SessionsTableModel.java,v
retrieving revision 1.1
diff -u -r1.1 SessionsTableModel.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/models/SessionsTableModel.java 22 Dec 2004 14:48:43 -0000 1.1
+++ debuggercore/src/org/netbeans/modules/debugger/ui/models/SessionsTableModel.java 13 Jan 2005 12:18:31 -0000
@@ -36,12 +36,12 @@
public SessionsTableModel () {
- Session session = DebuggerManager.getDebuggerManager ().
- getCurrentSession ();
- session.addPropertyChangeListener (
- Session.PROP_CURRENT_LANGUAGE,
- this
- );
+// Session session = DebuggerManager.getDebuggerManager ().
+// getCurrentSession ();
+// session.addPropertyChangeListener (
+// Session.PROP_CURRENT_LANGUAGE,
+// this
+// );
}
public Object getValueAt (Object row, String columnID) throws
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/BreakpointsView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/BreakpointsView.java,v
retrieving revision 1.6
diff -u -r1.6 BreakpointsView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/BreakpointsView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/BreakpointsView.java 13 Jan 2005 12:18:31 -0000
@@ -46,8 +46,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("BreakpointsView");
add (tree, "Center"); //NOI18N
}
@@ -76,10 +75,12 @@
}
public String getName () {
- return NbBundle.getMessage (BreakpointsView.class, "CTL_Breakpoints_view");
+ return NbBundle.getMessage
+ (BreakpointsView.class, "CTL_Breakpoints_view");
}
public String getToolTipText () {
- return NbBundle.getMessage (BreakpointsView.class, "CTL_Breakpoints_view_tooltip");// NOI18N
+ return NbBundle.getMessage
+ (BreakpointsView.class, "CTL_Breakpoints_view_tooltip");// NOI18N
}
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/CallStackView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/CallStackView.java,v
retrieving revision 1.6
diff -u -r1.6 CallStackView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/CallStackView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/CallStackView.java 13 Jan 2005 12:18:31 -0000
@@ -46,8 +46,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("CallStackView");
add (tree, "Center"); //NOI18N
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/LocalsView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/LocalsView.java,v
retrieving revision 1.6
diff -u -r1.6 LocalsView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/LocalsView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/LocalsView.java 13 Jan 2005 12:18:31 -0000
@@ -46,8 +46,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("LocalsView");
add (tree, "Center"); //NOI18N
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/SessionsView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/SessionsView.java,v
retrieving revision 1.6
diff -u -r1.6 SessionsView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/SessionsView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/SessionsView.java 13 Jan 2005 12:18:31 -0000
@@ -49,8 +49,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("SessionsView");
add (tree, "Center"); //NOI18N
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/ThreadsView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/ThreadsView.java,v
retrieving revision 1.6
diff -u -r1.6 ThreadsView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/ThreadsView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/ThreadsView.java 13 Jan 2005 12:18:32 -0000
@@ -47,8 +47,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("ThreadsView");
add (tree, "Center"); //NOI18N
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/ViewModelListener.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/ViewModelListener.java,v
retrieving revision 1.4
diff -u -r1.4 ViewModelListener.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/ViewModelListener.java 7 Jan 2005 09:33:05 -0000 1.4
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/ViewModelListener.java 13 Jan 2005 12:18:32 -0000
@@ -27,6 +27,7 @@
import org.netbeans.api.debugger.DebuggerEngine;
import org.netbeans.api.debugger.DebuggerManager;
import org.netbeans.api.debugger.DebuggerManagerAdapter;
+import org.netbeans.spi.viewmodel.Model;
import org.netbeans.spi.viewmodel.Models;
import org.netbeans.spi.viewmodel.ColumnModel;
import org.netbeans.spi.viewmodel.TableModelFilter;
@@ -35,6 +36,7 @@
import org.netbeans.spi.viewmodel.NodeModel;
import org.netbeans.spi.viewmodel.NodeModelFilter;
import org.netbeans.spi.viewmodel.TableModel;
+import org.netbeans.spi.viewmodel.TreeExpansionModel;
import org.netbeans.spi.viewmodel.TreeModel;
import org.netbeans.spi.viewmodel.TreeModelFilter;
import org.netbeans.spi.viewmodel.TreeModelListener;
@@ -76,11 +78,7 @@
);
Models.setModelsToView (
view,
- Models.EMPTY_TREE_MODEL,
- Models.EMPTY_NODE_MODEL,
- Models.EMPTY_TABLE_MODEL,
- Models.EMPTY_NODE_ACTIONS_PROVIDER,
- Collections.EMPTY_LIST
+ Models.EMPTY_MODEL
);
}
@@ -89,67 +87,35 @@
}
private void updateModel () {
- TreeModel tm = (TreeModel) loadModel (TreeModel.class);
- if (tm == null)
- tm = Models.EMPTY_TREE_MODEL;
- List l = loadModels (NodeModel.class);
- l.add (new EmptyModel ());
-
- if (verbose) {
- System.out.println ("");
- System.out.println (viewType + " models:");
+ DebuggerManager dm = DebuggerManager.getDebuggerManager ();
+ DebuggerEngine e = dm.getCurrentEngine ();
+ ArrayList l = new ArrayList ();
+ if (e != null) {
+ l.addAll (e.lookup (viewType, TreeModel.class));
+ l.addAll (e.lookup (viewType, TreeModelFilter.class));
+ l.addAll (e.lookup (viewType, TreeExpansionModel.class));
+ l.addAll (e.lookup (viewType, NodeModel.class));
+ l.addAll (e.lookup (viewType, NodeModelFilter.class));
+ l.addAll (e.lookup (viewType, TableModel.class));
+ l.addAll (e.lookup (viewType, TableModelFilter.class));
+ l.addAll (e.lookup (viewType, NodeActionsProvider.class));
+ l.addAll (e.lookup (viewType, NodeActionsProviderFilter.class));
+ l.addAll (e.lookup (viewType, ColumnModel.class));
+ l.addAll (e.lookup (viewType, Model.class));
}
+ l.addAll (dm.lookup (viewType, TreeModel.class));
+ l.addAll (dm.lookup (viewType, TreeModelFilter.class));
+ l.addAll (dm.lookup (viewType, TreeExpansionModel.class));
+ l.addAll (dm.lookup (viewType, NodeModel.class));
+ l.addAll (dm.lookup (viewType, NodeModelFilter.class));
+ l.addAll (dm.lookup (viewType, TableModel.class));
+ l.addAll (dm.lookup (viewType, TableModelFilter.class));
+ l.addAll (dm.lookup (viewType, NodeActionsProvider.class));
+ l.addAll (dm.lookup (viewType, NodeActionsProviderFilter.class));
+ l.addAll (dm.lookup (viewType, ColumnModel.class));
+ l.addAll (dm.lookup (viewType, Model.class));
- Models.setModelsToView (
- view,
- Models.createCompoundTreeModel (
- tm,
- loadModels (TreeModelFilter.class)
- ),
- Models.createCompoundNodeModel (
- Models.createCompoundNodeModel (
- l
- ),
- loadModels (NodeModelFilter.class)
- ),
- Models.createCompoundTableModel (
- Models.createCompoundTableModel (
- loadModels (TableModel.class)
- ),
- loadModels (TableModelFilter.class)
- ),
- Models.createCompoundNodeActionsProvider (
- Models.createCompoundNodeActionsProvider (
- loadModels (NodeActionsProvider.class)
- ),
- loadModels (NodeActionsProviderFilter.class)
- ),
- loadModels (ColumnModel.class)
- );
-
- }
-
- private Object loadModel (Class modelType) {
- DebuggerEngine e = DebuggerManager.getDebuggerManager ().
- getCurrentEngine ();
- Object m = null;
- if (e != null)
- m = e.lookupFirst (viewType, modelType);
- if (m == null)
- m = DebuggerManager.getDebuggerManager ().
- lookupFirst (viewType, modelType);
- return m;
- }
-
- private List loadModels (Class modelType) {
- DebuggerEngine e = DebuggerManager.getDebuggerManager ().
- getCurrentEngine ();
- List l = new ArrayList ();
- if (e != null)
- l.addAll (e.lookup (viewType, modelType));
- l.addAll (DebuggerManager.getDebuggerManager ().
- lookup (viewType, modelType));
- return l;
+ Models.setModelsToView (view, Models.createCompoundModel (l));
}
Index: debuggercore/src/org/netbeans/modules/debugger/ui/views/WatchesView.java
===================================================================
RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/ui/views/WatchesView.java,v
retrieving revision 1.6
diff -u -r1.6 WatchesView.java
--- debuggercore/src/org/netbeans/modules/debugger/ui/views/WatchesView.java 4 Aug 2004 11:53:42 -0000 1.6
+++ debuggercore/src/org/netbeans/modules/debugger/ui/views/WatchesView.java 13 Jan 2005 12:18:32 -0000
@@ -46,8 +46,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("WatchesView");
add (tree, "Center"); //NOI18N
}
Index: debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelNode.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelNode.java,v
retrieving revision 1.15
diff -u -r1.15 TreeModelNode.java
--- debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelNode.java 7 Jan 2005 09:33:05 -0000 1.15
+++ debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelNode.java 13 Jan 2005 12:18:35 -0000
@@ -18,6 +18,7 @@
import java.beans.PropertyEditor;
import java.lang.IllegalAccessException;
import java.lang.ref.WeakReference;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -25,8 +26,10 @@
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.KeyStroke;
+import javax.swing.SwingUtilities;
import org.netbeans.spi.viewmodel.ColumnModel;
+import org.netbeans.spi.viewmodel.Models;
import org.netbeans.spi.viewmodel.UnknownTypeException;
import org.openide.nodes.AbstractNode;
@@ -47,7 +50,7 @@
// variables ...............................................................
- private CompoundModel model;
+ private Models.CompoundModel model;
private TreeModelRoot treeModelRoot;
private Object object;
@@ -63,9 +66,9 @@
* Creates root of call stack for given producer.
*/
public TreeModelNode (
- CompoundModel model,
- TreeModelRoot treeModelRoot,
- Object object
+ final Models.CompoundModel model,
+ final TreeModelRoot treeModelRoot,
+ final Object object
) {
super (
createChildren (model, treeModelRoot, object),
@@ -94,7 +97,7 @@
}
private static Children createChildren (
- CompoundModel model,
+ Models.CompoundModel model,
TreeModelRoot treeModelRoot,
Object object
) {
@@ -114,46 +117,6 @@
}
}
-// public String getName () {
-// try {
-// if (name == null) {
-// name = model.getDisplayName (object);
-// if (name == null)
-// throw new NullPointerException (
-// "Model: " + model + ".getDisplayName (" + object +
-// ") = null!"
-// );
-// }
-// return name;
-// } catch (UnknownTypeException e) {
-// e.printStackTrace ();
-// System.out.println (model);
-// System.out.println ();
-// return object.toString ();
-// } catch (final ComputingException ex) {
-// name = "";
-// RequestProcessor.getDefault ().post (new Runnable () {
-// public void run () {
-// name = (String) ex.getValue ();
-// if (name == null) {
-// name = "?";
-// throw new NullPointerException (
-// "Model: " + model + ".getDisplayName (" + object +
-// ") = null!"
-// );
-// }
-// setName (name);
-// setDisplayName (name);
-// }
-// });
-// return "";
-// }
-// }
-//
-// public String getDisplayName () {
-// return getName ();
-// }
-
public String getShortDescription () {
if (shortDescription == null) {
RequestProcessor.getDefault ().post (new Runnable () {
@@ -312,14 +275,14 @@
private static final class TreeModelChildren extends Children.Keys {
private boolean initialezed = false;
- private CompoundModel model;
+ private Models.CompoundModel model;
private TreeModelRoot treeModelRoot;
private Object object;
private WeakHashMap objectToNode = new WeakHashMap ();
TreeModelChildren (
- CompoundModel model,
+ Models.CompoundModel model,
TreeModelRoot treeModelRoot,
Object object
) {
@@ -352,6 +315,7 @@
System.out.println ();
}
setKeys (new Object [0]);
+ return;
}
}
});
@@ -359,7 +323,7 @@
void refreshChildren (int count) {
try {
- Object[] ch = model.getChildren (
+ final Object[] ch = model.getChildren (
object,
0,
count
@@ -382,6 +346,18 @@
}
objectToNode = newObjectToNode;
setKeys (ch);
+
+ SwingUtilities.invokeLater (new Runnable () {
+ public void run () {
+ int i, k = ch.length;
+ for (i = 0; i < k; i++)
+ try {
+ if (model.isExpanded (ch [i]))
+ treeModelRoot.getTreeTable ().expandNode (ch [i]);
+ } catch (UnknownTypeException ex) {
+ }
+ }
+ });
} catch (UnknownTypeException e) {
setKeys (new Object [0]);
if (!(object instanceof String)) {
Index: debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelRoot.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelRoot.java,v
retrieving revision 1.7
diff -u -r1.7 TreeModelRoot.java
--- debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelRoot.java 26 Dec 2004 21:06:31 -0000 1.7
+++ debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeModelRoot.java 13 Jan 2005 12:18:35 -0000
@@ -18,6 +18,7 @@
import java.util.Iterator;
import java.util.WeakHashMap;
import javax.swing.SwingUtilities;
+import org.netbeans.spi.viewmodel.Models;
import org.netbeans.spi.viewmodel.TreeModel;
import org.netbeans.spi.viewmodel.TreeModelListener;
@@ -38,15 +39,21 @@
// variables ...............................................................
- private CompoundModel model;
+ private Models.CompoundModel model;
private TreeModelNode rootNode;
private WeakHashMap objectToNode = new WeakHashMap ();
+ private TreeTable treeTable;
- public TreeModelRoot (CompoundModel model) {
+ public TreeModelRoot (Models.CompoundModel model, TreeTable treeTable) {
this.model = model;
+ this.treeTable = treeTable;
model.addTreeModelListener (this);
}
+
+ public TreeTable getTreeTable () {
+ return treeTable;
+ }
public TreeModelNode getRootNode () {
if (rootNode == null)
@@ -58,7 +65,7 @@
objectToNode.put (o, new WeakReference (n));
}
- private TreeModelNode findNode (Object o) {
+ TreeModelNode findNode (Object o) {
WeakReference wr = (WeakReference) objectToNode.get (o);
if (wr == null) return null;
return (TreeModelNode) wr.get ();
Index: debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java,v
retrieving revision 1.12
diff -u -r1.12 TreeTable.java
--- debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java 7 Jan 2005 09:33:06 -0000 1.12
+++ debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java 13 Jan 2005 12:18:36 -0000
@@ -23,6 +23,7 @@
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeExpansionEvent;
@@ -35,6 +36,7 @@
import org.netbeans.spi.viewmodel.Models;
import org.netbeans.spi.viewmodel.ColumnModel;
+import org.netbeans.spi.viewmodel.UnknownTypeException;
import org.openide.explorer.ExplorerActions;
import org.openide.explorer.ExplorerManager;
@@ -61,13 +63,15 @@
* @author Jan Jancura
*/
public class TreeTable extends JPanel implements
-ExplorerManager.Provider, PropertyChangeListener {
+ExplorerManager.Provider, PropertyChangeListener, TreeExpansionListener {
private ExplorerManager explorerManager;
private MyTreeTable treeTable;
private Node.Property[] columns;
private List expandedPaths = new ArrayList ();
private TreeModelRoot currentTreeModelRoot;
+ private Models.CompoundModel model;
+
private ExplorerActions explorerActions = new ExplorerActions ();
{explorerActions.setConfirmDelete (false);}
@@ -83,9 +87,11 @@
treeTable.setHorizontalScrollBarPolicy
(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add (treeTable, "Center"); //NOI18N
+ treeTable.getTree ().addTreeExpansionListener (this);
}
- public void setModel (CompoundModel model) {
+ public void setModel (Models.CompoundModel model) {
+ this.model = model;
// 1) destroy old model
if (currentTreeModelRoot != null)
@@ -107,7 +113,8 @@
columns = createColumns (model);
treeTable.setProperties (columns);
-
+ treeTable.setToolTipText ("tttttttttttttttttttttttt");
+ setToolTipText ("aaaaaaaaaaaaaaaaaaaaa");
// try {
// treeTable.setToolTipText (model.getShortDescription (
// model.getRoot ()
@@ -118,7 +125,7 @@
// }
// 5) set root node for given model
- currentTreeModelRoot = new TreeModelRoot (model);
+ currentTreeModelRoot = new TreeModelRoot (model, this);
getExplorerManager ().setRootContext (
currentTreeModelRoot.getRootNode ()
);
@@ -130,7 +137,16 @@
final List backupPath = new ArrayList(expandedPaths);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
- treeTable.expandNodes (backupPath);
+ if (backupPath.size () == 0)
+ try {
+ expandDefault (
+ TreeTable.this.model.getChildren
+ (TreeTable.this.model.getRoot (), 0, 0));
+ } catch (UnknownTypeException ex) {
+
+ }
+ else
+ treeTable.expandNodes (backupPath);
}
});
if (ep.size () > 0) expandedPaths = ep;
@@ -159,6 +175,24 @@
}
}
+ /**
+ * Called whenever an item in the tree has been expanded.
+ */
+ public void treeExpanded (TreeExpansionEvent event) {
+ TreeModelNode tmn = (TreeModelNode) Visualizer.findNode
+ (event.getPath ().getLastPathComponent ());
+ model.nodeExpanded (tmn.getObject ());
+ }
+
+ /**
+ * Called whenever an item in the tree has been collapsed.
+ */
+ public void treeCollapsed (TreeExpansionEvent event) {
+ TreeModelNode tmn = (TreeModelNode) Visualizer.findNode
+ (event.getPath ().getLastPathComponent ());
+ model.nodeCollapsed (tmn.getObject ());
+ }
+
private boolean equalNodes () {
Node[] ns1 = TopComponent.getRegistry ().getCurrentNodes ();
Node[] ns2 = getExplorerManager ().getSelectedNodes ();
@@ -171,7 +205,7 @@
return true;
}
- private Node.Property[] createColumns (CompoundModel model) {
+ private Node.Property[] createColumns (Models.CompoundModel model) {
ColumnModel[] cs = model.getColumns ();
int i, k = cs.length;
Node.Property[] columns = new Column [k];
@@ -240,6 +274,16 @@
}
}
+ private void expandDefault (Object[] nodes) {
+ int i, k = nodes.length;
+ for (i = 0; i < k; i++)
+ try {
+ if (model.isExpanded (nodes [i]))
+ expandNode (nodes [i]);
+ } catch (UnknownTypeException ex) {
+ }
+ }
+
/** Requests focus for the tree component. Overrides superclass method. */
public boolean requestFocusInWindow () {
super.requestFocusInWindow ();
@@ -257,7 +301,21 @@
TopComponent.getRegistry ().removePropertyChangeListener (this);
getExplorerManager ().removePropertyChangeListener (this);
}
+
+ public boolean isExpanded (Object node) {
+ Node n = currentTreeModelRoot.findNode (node);
+ return treeTable.isExpanded (n);
+ }
+
+ public void expandNode (Object node) {
+ Node n = currentTreeModelRoot.findNode (node);
+ treeTable.expandNode (n);
+ }
+ public void collapseNode (Object node) {
+ Node n = currentTreeModelRoot.findNode (node);
+ treeTable.collapseNode (n);
+ }
private static class MyTreeTable extends TreeTableView {
MyTreeTable () {
@@ -268,6 +326,10 @@
JTable getTable () {
return treeTable;
+ }
+
+ JTree getTree () {
+ return tree;
}
public List getExpandedPaths () {
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/ColumnModel.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/ColumnModel.java,v
retrieving revision 1.4
diff -u -r1.4 ColumnModel.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/ColumnModel.java 13 Jul 2004 15:38:30 -0000 1.4
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/ColumnModel.java 13 Jan 2005 12:18:38 -0000
@@ -24,7 +24,7 @@
*
* @author Jan Jancura
*/
-public abstract class ColumnModel {
+public abstract class ColumnModel implements Model {
/**
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/Models.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/Models.java,v
retrieving revision 1.10
diff -u -r1.10 Models.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/Models.java 7 Jan 2005 09:33:06 -0000 1.10
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/Models.java 13 Jan 2005 12:18:45 -0000
@@ -27,7 +27,6 @@
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
-import org.netbeans.modules.viewmodel.CompoundModel;
import org.netbeans.modules.viewmodel.TreeModelNode;
import org.netbeans.modules.viewmodel.TreeTable;
@@ -54,11 +53,12 @@
*/
public final class Models {
- public static final TreeModel EMPTY_TREE_MODEL = new EmptyTreeModel ();
- public static final NodeModel EMPTY_NODE_MODEL = new EmptyNodeModel ();
- public static final TableModel EMPTY_TABLE_MODEL = new EmptyTableModel ();
- public static final NodeActionsProvider EMPTY_NODE_ACTIONS_PROVIDER =
- new EmptyNodeActionsProvider ();
+ /**
+ * Empty model - returns default root node with no children.
+ */
+ public static CompoundModel EMPTY_MODEL = createCompoundModel
+ (new ArrayList ());
+
public static int MULTISELECTION_TYPE_EXACTLY_ONE = 1;
public static int MULTISELECTION_TYPE_ALL = 2;
@@ -85,23 +85,10 @@
* @return new instance of complete model
*/
public static JComponent createView (
- TreeModel treeModel,
- NodeModel nodeModel,
- TableModel tableModel,
- NodeActionsProvider nodeActionsProvider,
- List columnModels
+ CompoundModel compoundModel
) {
TreeTable tt = new TreeTable ();
- if (treeModel != null) {
- CompoundModel cm = new CompoundModel (
- treeModel,
- nodeModel,
- nodeActionsProvider,
- columnModels,
- tableModel
- );
- tt.setModel (cm);
- }
+ tt.setModel (compoundModel);
return tt;
}
@@ -117,65 +104,116 @@
*/
public static void setModelsToView (
final JComponent view,
- TreeModel treeModel,
- NodeModel nodeModel,
- TableModel tableModel,
- NodeActionsProvider nodeActionsProvider,
- List columnModels
+ final CompoundModel compoundModel
) {
- if (verbose) {
- System.out.println (" TreeModel:");
- if (treeModel instanceof CompoundTreeModel)
- System.out.println (((CompoundTreeModel) treeModel).toString (" "));
- else
- System.out.println (" " + treeModel);
-
- System.out.println (" NodeModel:");
- if (nodeModel instanceof CompoundNodeModel)
- System.out.println (((CompoundNodeModel) nodeModel).toString (" "));
- else
- if (nodeModel instanceof DelegatingNodeModel)
- System.out.println (((DelegatingNodeModel) nodeModel).toString (" "));
- else
- System.out.println (" " + nodeModel);
-
- System.out.println (" NodeActionsProvider:");
- if (nodeActionsProvider instanceof CompoundNodeActionsProvider)
- System.out.println (((CompoundNodeActionsProvider) nodeActionsProvider).toString (" "));
- else
- if (nodeActionsProvider instanceof DelegatingNodeActionsProvider)
- System.out.println (((DelegatingNodeActionsProvider) nodeActionsProvider).toString (" "));
- else
- System.out.println (" " + nodeActionsProvider);
-
- System.out.println (" ColumnModels:");
- int i, k = columnModels.size ();
- for (i = 0; i < k; i++)
- System.out.println (" " + columnModels.get (i));
-
- System.out.println (" TableModel:");
- if (tableModel instanceof CompoundTableModel)
- System.out.println (((CompoundTableModel) tableModel).toString (" "));
- else
- if (tableModel instanceof DelegatingTableModel)
- System.out.println (((DelegatingTableModel) tableModel).toString (" "));
- else
- System.out.println (" " + tableModel);
- }
- final CompoundModel cm = new CompoundModel (
- treeModel,
- nodeModel,
- nodeActionsProvider,
- columnModels,
- tableModel
- );
+ if (verbose)
+ System.out.println (compoundModel);
SwingUtilities.invokeLater (new Runnable () {
public void run () {
- ((TreeTable) view).setModel (cm);
+ ((TreeTable) view).setModel (compoundModel);
}
});
}
+ public static CompoundModel createCompoundModel (List models) {
+ List treeModels = new ArrayList ();
+ List treeModelFilters = new ArrayList ();
+ List treeExpansionModels = new ArrayList ();
+ List nodeModels = new ArrayList ();
+ List nodeModelFilters = new ArrayList ();
+ List tableModels = new ArrayList ();
+ List tableModelFilters = new ArrayList ();
+ List nodeActionsProviders = new ArrayList ();
+ List nodeActionsProviderFilters = new ArrayList ();
+ List columnModels = new ArrayList ();
+
+ // 1) sort models
+ Iterator it = models.iterator ();
+ while (it.hasNext ()) {
+ Object model = it.next ();
+ if (model instanceof TreeModel)
+ treeModels.add (model);
+ if (model instanceof TreeModelFilter)
+ treeModelFilters.add (model);
+ if (model instanceof TreeExpansionModel)
+ treeExpansionModels.add (model);
+ if (model instanceof NodeModel)
+ nodeModels.add (model);
+ if (model instanceof NodeModelFilter)
+ nodeModelFilters.add (model);
+ if (model instanceof TableModel)
+ tableModels.add (model);
+ if (model instanceof TableModelFilter)
+ tableModelFilters.add (model);
+ if (model instanceof NodeActionsProvider)
+ nodeActionsProviders.add (model);
+ if (model instanceof NodeActionsProviderFilter)
+ nodeActionsProviderFilters.add (model);
+ if (model instanceof ColumnModel)
+ columnModels.add (model);
+ }
+
+ if (treeModels.isEmpty ()) treeModels.add (new EmptyTreeModel ());
+
+ return new CompoundModel (
+ createCompoundTreeModel (
+ new DelegatingTreeModel (treeModels),
+ treeModelFilters
+ ),
+ new DelegatingTreeExpansionModel (treeExpansionModels),
+ createCompoundNodeModel (
+ new DelegatingNodeModel (nodeModels),
+ nodeModelFilters
+ ),
+ createCompoundNodeActionsProvider (
+ new DelegatingNodeActionsProvider (nodeActionsProviders),
+ nodeActionsProviderFilters
+ ),
+ columnModels,
+ createCompoundTableModel (
+ new DelegatingTableModel (tableModels),
+ tableModelFilters
+ )
+ );
+ }
+
+ /**
+ * Returns {@link javax.swing.Action} for given parameters.
+ *
+ * @param displayName a display name for action
+ * @param node a node the action should by applied to
+ * @param performer a performer for action
+ *
+ * @return a new instance of {@link javax.swing.Action} for given parameters
+ */
+ public static Action createAction (
+ String displayName,
+ ActionPerformer performer,
+ int multiselectionType
+ ) {
+ return new ActionSupport (
+ displayName,
+ performer,
+ multiselectionType
+ );
+ }
+
+ /**
+ * Returns implementation of tree view features for given view.
+ *
+ * @param view a view created by this Models class
+ * @throws UnsupportedOperationException in the case that given
+ * view is not tree view
+ * @return implementation of tree view features
+ */
+ public static TreeFeatures treeFeatures (JComponent view)
+ throws UnsupportedOperationException {
+ return new TreeFeatures (view);
+ }
+
+
+ // private methods .........................................................
+
/**
* Creates {@link org.netbeans.spi.viewmodel.TreeModel} for given TreeModel and
* {@link org.netbeans.spi.viewmodel.TreeModelFilter}.
@@ -185,7 +223,7 @@
*
* @returns compund tree model
*/
- public static TreeModel createCompoundTreeModel (
+ private static TreeModel createCompoundTreeModel (
TreeModel originalTreeModel,
List treeModelFilters
) {
@@ -208,7 +246,7 @@
*
* @returns compund tree model
*/
- public static NodeModel createCompoundNodeModel (
+ private static NodeModel createCompoundNodeModel (
NodeModel originalNodeModel,
List treeNodeModelFilters
) {
@@ -231,7 +269,7 @@
*
* @returns compund table model
*/
- public static TableModel createCompoundTableModel (
+ private static TableModel createCompoundTableModel (
TableModel originalTableModel,
List tableModelFilters
) {
@@ -254,7 +292,7 @@
*
* @returns compund node actions provider
*/
- public static NodeActionsProvider createCompoundNodeActionsProvider (
+ private static NodeActionsProvider createCompoundNodeActionsProvider (
NodeActionsProvider originalNodeActionsProvider,
List nodeActionsProviderFilters
) {
@@ -268,117 +306,6 @@
return nap;
}
-// /**
-// * Creates one {@link org.netbeans.spi.viewmodel.TableModel}
-// * from given array of TableModels. TableModel asks all underlaying
-// * models for each concrete parameter, and returns first returned value.
-// *
-// * @param originalTableModels a array of original table models
-// */
-// public static TableModel createCompoundTableModel (
-// TableModel[] originalTableModels
-// ) {
-// return new DelegatingTableModel (
-// originalTableModels
-// );
-// }
-
- /**
- * Creates one {@link org.netbeans.spi.viewmodel.TableModel}
- * from given list of TableModels. TableModel asks all underlaying
- * models for each concrete parameter, and returns first returned value.
- *
- * @param originalTableModels a list of original table models
- */
- public static TableModel createCompoundTableModel (
- List originalTableModels
- ) {
- return new DelegatingTableModel (
- originalTableModels
- );
- }
-
-// /**
-// * Creates one {@link org.netbeans.spi.viewmodel.NodeModel}
-// * from given array of NodeModels. NodeModel asks all underlaying
-// * models for each concrete parameter, and returns first returned value.
-// *
-// * @param originalNodeModels a array of original node models
-// */
-// public static NodeModel createCompoundNodeModel (
-// NodeModel[] originalNodeModels
-// ) {
-// return new DelegatingNodeModel (
-// originalNodeModels
-// );
-// }
-
- /**
- * Creates one {@link org.netbeans.spi.viewmodel.NodeModel}
- * from given list of NodeModels. NodeModel asks all underlaying
- * models for each concrete parameter, and returns first returned value.
- *
- * @param originalNodeModels a list of original node models
- */
- public static NodeModel createCompoundNodeModel (
- List originalNodeModels
- ) {
- return new DelegatingNodeModel (
- originalNodeModels
- );
- }
-
-// /**
-// * Creates one {@link org.netbeans.spi.viewmodel.NodeActionsProvider}
-// * from given array of NodeActionsProviders. NodeActionsProvider asks all underlaying
-// * models for each concrete parameter, and returns first returned value.
-// *
-// * @param originalNodeActionsProviders a array of original node action providers
-// */
-// public static NodeActionsProvider createCompoundNodeActionsProvider (
-// NodeActionsProvider[] originalNodeActionsProviders
-// ) {
-// return new DelegatingNodeActionsProvider (
-// originalNodeActionsProviders
-// );
-// }
-
- /**
- * Creates one {@link org.netbeans.spi.viewmodel.NodeActionsProvider}
- * from given list of NodeActionsProviders. NodeActionsProvider asks all underlaying
- * models for each concrete parameter, and returns first returned value.
- *
- * @param originalNodeActionsProviders a list of original node action providers
- */
- public static NodeActionsProvider createCompoundNodeActionsProvider (
- List originalNodeActionsProviders
- ) {
- return new DelegatingNodeActionsProvider (
- originalNodeActionsProviders
- );
- }
-
- /**
- * Returns {@link javax.swing.Action} for given parameters.
- *
- * @param displayName a display name for action
- * @param node a node the action should by applied to
- * @param performer a performer for action
- *
- * @return a new instance of {@link javax.swing.Action} for given parameters
- */
- public static Action createAction (
- String displayName,
- ActionPerformer performer,
- int multiselectionType
- ) {
- return new ActionSupport (
- displayName,
- performer,
- multiselectionType
- );
- }
-
// innerclasses ............................................................
@@ -809,6 +736,188 @@
n + " " + model;
}
}
+
+ /**
+ * Creates one {@link org.netbeans.spi.viewmodel.TreeModel}
+ * from given list of TreeModels. DelegatingTreeModel asks all underlaying
+ * models for each concrete parameter, and returns first returned value.
+ *
+ * @author Jan Jancura
+ */
+ final static class DelegatingTreeModel implements TreeModel {
+
+ private TreeModel[] models;
+ private HashMap classNameToModel = new HashMap ();
+
+
+ /**
+ * Creates new instance of DelegatingTreeModel for given list of
+ * TableModels.
+ *
+ * @param models a list of TableModels
+ */
+ DelegatingTreeModel (List models) {
+ this (convert (models));
+ }
+
+ private static TreeModel[] convert (List l) {
+ TreeModel[] models = new TreeModel [l.size ()];
+ return (TreeModel[]) l.toArray (models);
+ }
+
+ /**
+ * Creates new instance of DelegatingTreeModel for given array of
+ * TableModels.
+ *
+ * @param models a array of TreeModel
+ */
+ DelegatingTreeModel (TreeModel[] models) {
+ this.models = models;
+ }
+
+ /**
+ * Returns the root node of the tree or null, if the tree is empty.
+ *
+ * @return the root node of the tree or null
+ */
+ public Object getRoot () {
+ return models [0].getRoot ();
+ }
+
+ /**
+ * Returns children for given parent on given indexes.
+ *
+ * @param parent a parent of returned nodes
+ * @param from a start index
+ * @param to a end index
+ *
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve children for given node type
+ *
+ * @return children for given parent on given indexes
+ */
+ public Object[] getChildren (Object node, int from, int to)
+ throws UnknownTypeException {
+ TreeModel model = (TreeModel) classNameToModel.get (
+ node.getClass ().getName ()
+ );
+ if (model != null)
+ try {
+ return model.getChildren (node, from, to);
+ } catch (UnknownTypeException e) {
+ }
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ try {
+ Object[] v = models [i].getChildren (node, from, to);
+ classNameToModel.put (node.getClass ().getName (), models [i]);
+ return v;
+ } catch (UnknownTypeException e) {
+ }
+ }
+ throw new UnknownTypeException (node);
+ }
+
+ /**
+ * Returns number of children for given node.
+ *
+ * @param node the parent node
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve children for given node type
+ *
+ * @return true if node is leaf
+ * @since 1.1
+ */
+ public int getChildrenCount (Object node)
+ throws UnknownTypeException {
+ TreeModel model = (TreeModel) classNameToModel.get (
+ node.getClass ().getName ()
+ );
+ if (model != null)
+ try {
+ return model.getChildrenCount (node);
+ } catch (UnknownTypeException e) {
+ }
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ try {
+ int result = models [i].getChildrenCount (node);
+ classNameToModel.put (node.getClass ().getName (), models [i]);
+ return result;
+ } catch (UnknownTypeException e) {
+ }
+ }
+ throw new UnknownTypeException (node);
+ }
+
+ /**
+ * Returns true if node is leaf.
+ *
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve dchildren for given node type
+ * @return true if node is leaf
+ */
+ public boolean isLeaf (Object node) throws UnknownTypeException {
+ TreeModel model = (TreeModel) classNameToModel.get (
+ node.getClass ().getName ()
+ );
+ if (model != null)
+ try {
+ return model.isLeaf (node);
+ } catch (UnknownTypeException e) {
+ }
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ try {
+ boolean result = models [i].isLeaf (node);
+ classNameToModel.put (node.getClass ().getName (), models [i]);
+ return result;
+ } catch (UnknownTypeException e) {
+ }
+ }
+ throw new UnknownTypeException (node);
+ }
+
+ /**
+ * Registers given listener.
+ *
+ * @param l the listener to add
+ */
+ public void addTreeModelListener (TreeModelListener l) {
+ int i, k = models.length;
+ for (i = 0; i < k; i++)
+ models [i].addTreeModelListener (l);
+ }
+
+ /**
+ * Unregisters given listener.
+ *
+ * @param l the listener to remove
+ */
+ public void removeTreeModelListener (TreeModelListener l) {
+ int i, k = models.length;
+ for (i = 0; i < k; i++)
+ models [i].removeTreeModelListener (l);
+ }
+
+ public String toString () {
+ return super.toString () + "\n" + toString (" ");
+ }
+
+ public String toString (String n) {
+ int i, k = models.length - 1;
+ if (k == -1) return "";
+ StringBuffer sb = new StringBuffer ();
+ for (i = 0; i < k; i++) {
+ sb.append (n);
+ sb.append (models [i]);
+ sb.append ('\n');
+ }
+ sb.append (n);
+ sb.append (models [i]);
+ return new String (sb);
+ }
+ }
/**
* Creates {@link org.netbeans.spi.viewmodel.NodeActionsProvider}
@@ -1086,20 +1195,132 @@
}
/**
- * Creates one {@link org.netbeans.spi.viewmodel.NodeModel}
- * from given list of NodeModels. DelegatingNodeModel asks all underlaying
+ * Creates one {@link org.netbeans.spi.viewmodel.TableModel}
+ * from given list of TableModels. DelegatingTableModel asks all underlaying
* models for each concrete parameter, and returns first returned value.
*
* @author Jan Jancura
*/
- static final class DelegatingNodeModel implements NodeModel {
+ final static class DelegatingTreeExpansionModel
+ implements TreeExpansionModel {
- private NodeModel[] models;
+ private TreeExpansionModel[] models;
private HashMap classNameToModel = new HashMap ();
/**
- * Creates new instance of DelegatingNodeModel for given list of
+ * Creates new instance of DelegatingTableModel for given list of
+ * TableModels.
+ *
+ * @param models a list of TableModels
+ */
+ DelegatingTreeExpansionModel (List models) {
+ this (convert (models));
+ }
+
+ private static TreeExpansionModel[] convert (List l) {
+ TreeExpansionModel[] models = new TreeExpansionModel [l.size ()];
+ return (TreeExpansionModel[]) l.toArray (models);
+ }
+
+ /**
+ * Creates new instance of DelegatingTableModel for given array of
+ * TableModels.
+ *
+ * @param models a array of TableModels
+ */
+ DelegatingTreeExpansionModel (TreeExpansionModel[] models) {
+ this.models = models;
+ }
+
+ /**
+ * Defines default state (collapsed, expanded) of given node.
+ *
+ * @param node a node
+ * @return default state (collapsed, expanded) of given node
+ */
+ public boolean isExpanded (Object node)
+ throws UnknownTypeException {
+ TreeExpansionModel model = (TreeExpansionModel)
+ classNameToModel.get (
+ node.getClass ().getName ()
+ );
+ if (model != null)
+ try {
+ return model.isExpanded (node);
+ } catch (UnknownTypeException e) {
+ }
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ try {
+ boolean result = models [i].isExpanded (node);
+ classNameToModel.put (node.getClass ().getName (), models [i]);
+ return result;
+ } catch (UnknownTypeException e) {
+ }
+ }
+ throw new UnknownTypeException (node);
+ }
+
+
+ /**
+ * Called when given node is expanded.
+ *
+ * @param node a expanded node
+ */
+ public void nodeExpanded (Object node) {
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ models [i].nodeExpanded (node);
+ }
+ }
+
+ /**
+ * Called when given node is collapsed.
+ *
+ * @param node a collapsed node
+ */
+ public void nodeCollapsed (Object node) {
+ int i, k = models.length;
+ for (i = 0; i < k; i++) {
+ models [i].nodeCollapsed (node);
+ }
+ }
+
+ public String toString () {
+ return super.toString () + "\n" + toString (" ");
+ }
+
+ public String toString (String n) {
+ int i, k = models.length - 1;
+ if (k == -1) return "";
+ StringBuffer sb = new StringBuffer ();
+ for (i = 0; i < k; i++) {
+ sb.append (n);
+ sb.append (models [i]);
+ sb.append ('\n');
+ }
+ sb.append (n);
+ sb.append (models [i]);
+ return new String (sb);
+ }
+ }
+
+ /**
+ * Creates one {@link org.netbeans.spi.viewmodel.NodeModel}
+ * from given list of NodeModels. DelegatingNodeModel asks all underlaying
+ * models for each concrete parameter, and returns first returned value.
+ *
+ * @author Jan Jancura
+ */
+ static final class DelegatingNodeModel implements NodeModel {
+
+ private NodeModel[] models;
+ private HashMap classNameToModel = new HashMap ();
+
+
+ /**
+ * Creates new instance of DelegatingNodeModel for given list of
* NodeModels.
*
* @param models a list of NodeModels
@@ -1662,6 +1883,326 @@
int i, k = models.length;
for (i = 0; i < k; i++)
models [i].removeTreeModelListener (l);
+ }
+ }
+
+ /**
+ * Implements set of tree view features.
+ */
+ public static class TreeFeatures {
+
+ private JComponent view;
+
+ private TreeFeatures (JComponent view) {
+ this.view = view;
+ }
+
+ /**
+ * Returns true
if given node is expanded in given view.
+ *
+ * @param view a view created by this Models class
+ * @param node a node to be checked
+ * @return true
if given node is expanded in given view
+ */
+ public boolean isExpanded (
+ Object node
+ ) {
+ return ((TreeTable) view).isExpanded (node);
+ }
+
+ /**
+ * Expands given list of nodes in given view.
+ *
+ * @param view a view created by this Models class
+ * @param node a list of nodes to be expanded
+ */
+ public void expandNode (
+ Object node
+ ) {
+ ((TreeTable) view).expandNode (node);
+ }
+
+ /**
+ * Collapses given node in given view.
+ *
+ * @param view a view created by this Models class
+ * @param node a node to be expanded
+ */
+ public void collapseNode (
+ Object node
+ ) {
+ ((TreeTable) view).collapseNode (node);
+ }
+ }
+
+ /**
+ * Default implemetation of {@link CompoundModel}. It delegates all
+ * functionality to given instanceo of
+ * {@link org.netbeans.spi.viewmodel.TreeModel},
+ * {@link org.netbeans.spi.viewmodel.NodeModel} and
+ * {@link org.netbeans.spi.viewmodel.NodeActionsProvider}.
+ *
+ * @author Jan Jancura
+ */
+ public static final class CompoundModel implements TreeModel,
+ NodeModel, NodeActionsProvider, TableModel, TreeExpansionModel {
+
+ private TreeModel treeModel;
+ private NodeModel nodeModel;
+ private NodeActionsProvider nodeActionsProvider;
+ private ColumnModel[] columnModels;
+ private TableModel tableModel;
+ private TreeExpansionModel treeExpansionModel;
+
+
+ // init ....................................................................
+
+ /**
+ * Creates a new instance of {@link CompoundModel} for given models.
+ *
+ * @param treeModel a tree model to delegate on
+ * @param nodeModel a node model to delegate on
+ * @param nodeActionsProvider a node actions provider to delegate on
+ * @param nodeActionsProvider a columns modeol to delegate on
+ */
+ public CompoundModel (
+ TreeModel treeModel,
+ TreeExpansionModel treeExpansionModel,
+ NodeModel nodeModel,
+ NodeActionsProvider nodeActionsProvider,
+ List columnModels,
+ TableModel tableModel
+ ) {
+ if (treeModel == null) throw new NullPointerException ();
+ if (treeModel == null) throw new NullPointerException ();
+ if (nodeModel == null) throw new NullPointerException ();
+ if (tableModel == null) throw new NullPointerException ();
+ if (nodeActionsProvider == null) throw new NullPointerException ();
+
+ this.treeModel = treeModel;
+ this.treeExpansionModel = treeExpansionModel;
+ this.nodeModel = nodeModel;
+ this.tableModel = tableModel;
+ this.nodeActionsProvider = nodeActionsProvider;
+ this.columnModels = (ColumnModel[]) columnModels.toArray (
+ new ColumnModel [columnModels.size ()]
+ );
+ }
+
+
+ // TreeModel ...............................................................
+
+ /**
+ * Returns the root node of the tree or null, if the tree is empty.
+ *
+ * @return the root node of the tree or null
+ */
+ public Object getRoot () {
+ return treeModel.getRoot ();
+ }
+
+ /**
+ * Returns children for given parent on given indexes.
+ *
+ * @param parent a parent of returned nodes
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve dchildren for given node type
+ *
+ * @return children for given parent on given indexes
+ */
+ public Object[] getChildren (Object parent, int from, int to)
+ throws UnknownTypeException {
+ return treeModel.getChildren (parent, from, to);
+ }
+
+ /**
+ * Returns number of children for given node.
+ *
+ * @param node the parent node
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve children for given node type
+ *
+ * @return true if node is leaf
+ */
+ public int getChildrenCount (Object node) throws UnknownTypeException {
+ return treeModel.getChildrenCount (node);
+ }
+
+ /**
+ * Returns true if node is leaf.
+ *
+ * @throws UnknownTypeException if this TreeModel implementation is not
+ * able to resolve dchildren for given node type
+ * @return true if node is leaf
+ */
+ public boolean isLeaf (Object node) throws UnknownTypeException {
+ return treeModel.isLeaf (node);
+ }
+
+
+ // NodeModel ...............................................................
+
+ /**
+ * Returns display name for given node.
+ *
+ * @throws UnknownTypeException if this NodeModel implementation is not
+ * able to resolve display name for given node type
+ * @return display name for given node
+ */
+ public String getDisplayName (Object node) throws UnknownTypeException {
+ return nodeModel.getDisplayName (node);
+ }
+
+ /**
+ * Returns tooltip for given node.
+ *
+ * @throws UnknownTypeException if this NodeModel implementation is not
+ * able to resolve tooltip for given node type
+ * @return tooltip for given node
+ */
+ public String getShortDescription (Object node)
+ throws UnknownTypeException {
+ return nodeModel.getShortDescription (node);
+ }
+
+ /**
+ * Returns icon for given node.
+ *
+ * @throws ComputingException if the icon resolving process
+ * is time consuming, and the value will be updated later
+ * @throws UnknownTypeException if this NodeModel implementation is not
+ * able to resolve icon for given node type
+ * @return icon for given node
+ */
+ public String getIconBase (Object node)
+ throws UnknownTypeException {
+ return nodeModel.getIconBase (node);
+ }
+
+
+ // NodeActionsProvider .....................................................
+
+ /**
+ * Performs default action for given node.
+ *
+ * @throws UnknownTypeException if this NodeActionsProvider implementation
+ * is not able to resolve actions for given node type
+ * @return display name for given node
+ */
+ public void performDefaultAction (Object node) throws UnknownTypeException {
+ nodeActionsProvider.performDefaultAction (node);
+ }
+
+ /**
+ * Returns set of actions for given node.
+ *
+ * @throws UnknownTypeException if this NodeActionsProvider implementation
+ * is not able to resolve actions for given node type
+ * @return display name for given node
+ */
+ public Action[] getActions (Object node) throws UnknownTypeException {
+ return nodeActionsProvider.getActions (node);
+ }
+
+
+ // ColumnsModel ............................................................
+
+ /**
+ * Returns sorted array of
+ * {@link org.netbeans.spi.viewmodel.ColumnModel}s.
+ *
+ * @return sorted array of ColumnModels
+ */
+ public ColumnModel[] getColumns () {
+ return columnModels;
+ }
+
+
+ // TableModel ..............................................................
+
+ public Object getValueAt (Object node, String columnID) throws
+ UnknownTypeException {
+ return tableModel.getValueAt (node, columnID);
+ }
+
+ public boolean isReadOnly (Object node, String columnID) throws
+ UnknownTypeException {
+ return tableModel.isReadOnly (node, columnID);
+ }
+
+ public void setValueAt (Object node, String columnID, Object value) throws
+ UnknownTypeException {
+ tableModel.setValueAt (node, columnID, value);
+ }
+
+
+ // TreeExpansionModel ......................................................
+
+ /**
+ * Defines default state (collapsed, expanded) of given node.
+ *
+ * @param node a node
+ * @return default state (collapsed, expanded) of given node
+ */
+ public boolean isExpanded (Object node) throws UnknownTypeException {
+ if (treeExpansionModel == null) return false;
+ return treeExpansionModel.isExpanded (node);
+ }
+
+ /**
+ * Called when given node is expanded.
+ *
+ * @param node a expanded node
+ */
+ public void nodeExpanded (Object node) {
+ if (treeExpansionModel != null)
+ treeExpansionModel.nodeExpanded (node);
+ }
+
+ /**
+ * Called when given node is collapsed.
+ *
+ * @param node a collapsed node
+ */
+ public void nodeCollapsed (Object node) {
+ if (treeExpansionModel != null)
+ treeExpansionModel.nodeCollapsed (node);
+ }
+
+
+ // listeners ...............................................................
+
+ /**
+ * Registers given listener.
+ *
+ * @param l the listener to add
+ */
+ public void addTreeModelListener (TreeModelListener l) {
+ treeModel.addTreeModelListener (l);
+ nodeModel.addTreeModelListener (l);
+ nodeActionsProvider.addTreeModelListener (l);
+ tableModel.addTreeModelListener (l);
+ }
+
+ /**
+ * Unregisters given listener.
+ *
+ * @param l the listener to remove
+ */
+ public void removeTreeModelListener (TreeModelListener l) {
+ treeModel.removeTreeModelListener (l);
+ nodeModel.removeTreeModelListener (l);
+ nodeActionsProvider.removeTreeModelListener (l);
+ tableModel.removeTreeModelListener (l);
+ }
+
+ public String toString () {
+ return super.toString () +
+ "\n TreeModel = " + treeModel +
+ "\n NodeModel = " + nodeModel +
+ "\n TableModel = " + tableModel +
+ "\n NodeActionsProvider = " + nodeActionsProvider +
+ "\n ColumnsModel = " + columnModels;
}
}
}
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProvider.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProvider.java,v
retrieving revision 1.2
diff -u -r1.2 NodeActionsProvider.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProvider.java 31 Mar 2004 07:26:33 -0000 1.2
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProvider.java 13 Jan 2005 12:18:45 -0000
@@ -22,7 +22,7 @@
*
* @author Jan Jancura
*/
-public interface NodeActionsProvider {
+public interface NodeActionsProvider extends Model {
/**
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProviderFilter.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProviderFilter.java,v
retrieving revision 1.3
diff -u -r1.3 NodeActionsProviderFilter.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProviderFilter.java 11 Jun 2004 11:48:30 -0000 1.3
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeActionsProviderFilter.java 13 Jan 2005 12:18:45 -0000
@@ -23,7 +23,7 @@
*
* @author Jan Jancura
*/
-public interface NodeActionsProviderFilter {
+public interface NodeActionsProviderFilter extends Model {
/**
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModel.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModel.java,v
retrieving revision 1.3
diff -u -r1.3 NodeModel.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModel.java 7 Jan 2005 09:33:07 -0000 1.3
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModel.java 13 Jan 2005 12:18:45 -0000
@@ -20,7 +20,7 @@
*
* @author Jan Jancura
*/
-public interface NodeModel {
+public interface NodeModel extends Model {
/**
* Returns display name for given node.
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModelFilter.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModelFilter.java,v
retrieving revision 1.4
diff -u -r1.4 NodeModelFilter.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModelFilter.java 7 Jan 2005 09:33:07 -0000 1.4
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/NodeModelFilter.java 13 Jan 2005 12:18:45 -0000
@@ -20,7 +20,7 @@
*
* @author Jan Jancura
*/
-public interface NodeModelFilter {
+public interface NodeModelFilter extends Model {
/**
* Returns filterred display name for given node. You should not
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModel.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModel.java,v
retrieving revision 1.3
diff -u -r1.3 TableModel.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModel.java 7 Jan 2005 09:33:07 -0000 1.3
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModel.java 13 Jan 2005 12:18:46 -0000
@@ -23,7 +23,7 @@
*
* @author Jan Jancura
*/
-public interface TableModel {
+public interface TableModel extends Model {
/**
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModelFilter.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModelFilter.java,v
retrieving revision 1.4
diff -u -r1.4 TableModelFilter.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModelFilter.java 7 Jan 2005 09:33:07 -0000 1.4
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TableModelFilter.java 13 Jan 2005 12:18:46 -0000
@@ -25,7 +25,7 @@
*
* @author Jan Jancura
*/
-public interface TableModelFilter {
+public interface TableModelFilter extends Model {
/**
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModel.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModel.java,v
retrieving revision 1.5
diff -u -r1.5 TreeModel.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModel.java 7 Jan 2005 09:33:07 -0000 1.5
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModel.java 13 Jan 2005 12:18:46 -0000
@@ -20,7 +20,7 @@
*
* @author Jan Jancura
*/
-public interface TreeModel {
+public interface TreeModel extends Model {
/**
* Constant for root node. This root node should be used if root node
Index: debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModelFilter.java
===================================================================
RCS file: /cvs/debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModelFilter.java,v
retrieving revision 1.5
diff -u -r1.5 TreeModelFilter.java
--- debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModelFilter.java 7 Jan 2005 09:33:07 -0000 1.5
+++ debuggercore/viewmodel/src/org/netbeans/spi/viewmodel/TreeModelFilter.java 13 Jan 2005 12:18:46 -0000
@@ -21,7 +21,7 @@
*
* @author Jan Jancura
*/
-public interface TreeModelFilter {
+public interface TreeModelFilter extends Model {
/**
Index: debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeActionsProvider
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeActionsProvider,v
retrieving revision 1.8
diff -u -r1.8 org.netbeans.spi.viewmodel.NodeActionsProvider
--- debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeActionsProvider 3 Jan 2005 15:33:50 -0000 1.8
+++ debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeActionsProvider 13 Jan 2005 12:18:49 -0000
@@ -1,4 +1,3 @@
org.netbeans.modules.debugger.jpda.ui.models.WatchesActionsProvider
-org.netbeans.modules.debugger.jpda.ui.FixedWatchesManager
org.netbeans.modules.debugger.jpda.ui.models.VariablesActionsProvider
org.netbeans.modules.debugger.jpda.ui.models.VariablesTreeModelFilterSI
Index: debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModel
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModel,v
retrieving revision 1.5
diff -u -r1.5 org.netbeans.spi.viewmodel.NodeModel
--- debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModel 3 Jan 2005 15:33:50 -0000 1.5
+++ debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModel 13 Jan 2005 12:18:49 -0000
@@ -1,3 +1,2 @@
org.netbeans.modules.debugger.jpda.ui.models.WatchesNodeModel
-org.netbeans.modules.debugger.jpda.ui.FixedWatchesManager
org.netbeans.modules.debugger.jpda.ui.models.VariablesTreeModelFilterSI
Index: debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModelFilter
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModelFilter,v
retrieving revision 1.3
diff -u -r1.3 org.netbeans.spi.viewmodel.NodeModelFilter
--- debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModelFilter 1 Apr 2004 13:49:50 -0000 1.3
+++ debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.NodeModelFilter 13 Jan 2005 12:18:49 -0000
@@ -1 +1,2 @@
org.netbeans.modules.debugger.jpda.ui.models.VariablesTreeModelFilter
+org.netbeans.modules.debugger.jpda.ui.FixedWatchesManager
\ No newline at end of file
Index: debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.TableModel
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.TableModel,v
retrieving revision 1.6
diff -u -r1.6 org.netbeans.spi.viewmodel.TableModel
--- debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.TableModel 3 Jan 2005 15:33:50 -0000 1.6
+++ debuggerjpda/ui/src/META-INF/debugger/netbeans-JPDASession/WatchesView/org.netbeans.spi.viewmodel.TableModel 13 Jan 2005 12:18:49 -0000
@@ -1,3 +1,2 @@
org.netbeans.modules.debugger.jpda.ui.models.VariablesTreeModelFilterSI
-org.netbeans.modules.debugger.jpda.ui.models.VariablesTableModel
-org.netbeans.modules.debugger.jpda.ui.FixedWatchesManager
\ No newline at end of file
+org.netbeans.modules.debugger.jpda.ui.models.VariablesTableModel
\ No newline at end of file
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/FixedWatchesManager.java
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/FixedWatchesManager.java,v
retrieving revision 1.11
diff -u -r1.11 FixedWatchesManager.java
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/FixedWatchesManager.java 7 Jan 2005 09:33:24 -0000 1.11
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/FixedWatchesManager.java 13 Jan 2005 12:18:50 -0000
@@ -26,18 +26,20 @@
import java.util.*;
/**
- * Manages lifecycle and presentation of fixed watches. Should be registered as an action provider in both
+ * Manages lifecycle and presentation of fixed watches. Should be
+ * registered as an action provider in both
* locals and watches views and as a tree model filter in the watches view.
*
* @author Jan Jancura, Maros Sandor
*/
public class FixedWatchesManager implements TreeModelFilter,
-NodeActionsProvider, NodeActionsProviderFilter, TableModel, NodeModel {
+NodeActionsProviderFilter, NodeModelFilter {
public static final String FIXED_WATCH =
"org/netbeans/modules/debugger/resources/watchesView/FixedWatch";
private final Action DELETE_ACTION = Models.createAction (
- loc("CTL_DeleteFixedWatch_Label"),
+ NbBundle.getBundle (FixedWatchesManager.class).getString
+ ("CTL_DeleteFixedWatch_Label"),
new Models.ActionPerformer () {
public boolean isEnabled (Object node) {
return true;
@@ -58,7 +60,8 @@
);
};
private final Action CREATE_FIXED_WATCH_ACTION = Models.createAction (
- loc("CTL_CreateFixedWatch_Label"),
+ NbBundle.getBundle (FixedWatchesManager.class).getString
+ ("CTL_CreateFixedWatch_Label"),
new Models.ActionPerformer () {
public boolean isEnabled (Object node) {
return true;
@@ -73,59 +76,14 @@
);
- private List fixedWatches;
+ private Map fixedWatches = new HashMap ();
private HashSet listeners;
- private ContextProvider contextProvider; // not used at the moment
+ private ContextProvider contextProvider;
public FixedWatchesManager (ContextProvider contextProvider) {
this.contextProvider = contextProvider;
}
-
- private static String loc(String key) {
- return NbBundle.getBundle(FixedWatchesManager.class).getString(key);
- }
-
- // NodeActionsProvider .....................................................
-
- public void performDefaultAction (Object node) throws UnknownTypeException {
- if (!(node instanceof FixedWatch))
- throw new UnknownTypeException (node);
- }
-
- public Action[] getActions (Object node) throws UnknownTypeException {
- if (node instanceof FixedWatch) {
- return new Action[] {
- DELETE_ACTION
- };
- }
- throw new UnknownTypeException(node);
- }
-
-
- // NodeActionsProviderFilter ...............................................
-
- public void performDefaultAction (NodeActionsProvider original, Object node)
- throws UnknownTypeException {
- original.performDefaultAction (node);
- }
-
- public Action[] getActions (NodeActionsProvider original, Object node)
- throws UnknownTypeException {
- Action [] actions = original.getActions(node);
- List myActions = new ArrayList();
- if (node instanceof Variable) {
- myActions.add (CREATE_FIXED_WATCH_ACTION);
- } else if (node instanceof JPDAWatch) {
- myActions.add (CREATE_FIXED_WATCH_ACTION);
- } else if (node instanceof FixedWatch) {
- myActions.add (DELETE_ACTION);
- } else {
- return actions;
- }
- myActions.addAll(Arrays.asList(actions));
- return (Action[]) myActions.toArray(new Action[myActions.size()]);
- }
// TreeModelFilter .........................................................
@@ -141,16 +99,15 @@
int to
) throws UnknownTypeException {
if (parent == TreeModel.ROOT) {
- if (fixedWatches == null || fixedWatches.size
- () == 0)
+ if (fixedWatches.size () == 0)
return original.getChildren (parent, from, to);
- int fixedSize = fixedWatches.size();
+ int fixedSize = fixedWatches.size ();
int originalFrom = from - fixedSize;
int originalTo = to - fixedSize;
if (originalFrom < 0) originalFrom = 0;
- Object [] children;
+ Object[] children;
if (originalTo > originalFrom) {
children = original.getChildren
(parent, originalFrom, originalTo);
@@ -159,7 +116,7 @@
}
Object [] allChildren = new Object [children.length + fixedSize];
- fixedWatches.toArray (allChildren);
+ fixedWatches.keySet ().toArray (allChildren);
System.arraycopy (
children,
0,
@@ -171,12 +128,6 @@
System.arraycopy (allChildren, from, fallChildren, 0, to - from);
return fallChildren;
}
- if (parent instanceof FixedWatch) {
- Variable v = ((FixedWatch) parent).getVariable ();
- return (v != null) ?
- original.getChildren (v, from, to) :
- new Object [0];
- }
return original.getChildren (parent, from, to);
}
@@ -186,24 +137,13 @@
) throws UnknownTypeException {
if (parent == TreeModel.ROOT) {
int chc = original.getChildrenCount (parent);
- if (fixedWatches == null) return chc;
return chc + fixedWatches.size ();
}
- if (parent instanceof FixedWatch) {
- Variable v = ((FixedWatch) parent).getVariable ();
- return (v != null) ? original.getChildrenCount (v) : 0;
- }
return original.getChildrenCount (parent);
}
public boolean isLeaf (TreeModel original, Object node)
throws UnknownTypeException {
- if (node instanceof FixedWatch) {
- FixedWatch fw = (FixedWatch) node;
- if (fw.getVariable () == null)
- return true;
- return original.isLeaf (fw.getVariable ());
- }
return original.isLeaf (node);
}
@@ -220,65 +160,63 @@
newListeners.remove (l);
listeners = newListeners;
}
+
-
- // TableModel ..............................................................
-
- public Object getValueAt (Object row, String columnID) throws
- UnknownTypeException {
- if (row instanceof FixedWatch)
- return getOriginalModel ().getValueAt (
- ((FixedWatch) row).getVariable (),
- columnID
- );
- throw new UnknownTypeException (row);
- }
-
- public boolean isReadOnly (Object row, String columnID) throws
- UnknownTypeException {
- if (row instanceof FixedWatch)
- return getOriginalModel ().isReadOnly (
- ((FixedWatch) row).getVariable (),
- columnID
- );
- throw new UnknownTypeException (row);
+ // NodeActionsProviderFilter ...............................................
+
+ public void performDefaultAction (
+ NodeActionsProvider original,
+ Object node
+ ) throws UnknownTypeException {
+ original.performDefaultAction (node);
}
-
- public void setValueAt (Object row, String columnID, Object value)
+
+ public Action[] getActions (NodeActionsProvider original, Object node)
throws UnknownTypeException {
- if (row instanceof FixedWatch) {
- getOriginalModel ().setValueAt (
- ((FixedWatch) row).getVariable (),
- columnID,
- value
- );
- return;
+ Action [] actions = original.getActions (node);
+ List myActions = new ArrayList();
+ if (fixedWatches.containsKey (node)) {
+ return new Action[] {
+ DELETE_ACTION
+ };
}
- throw new UnknownTypeException (row);
+ if (node instanceof Variable) {
+ myActions.add (CREATE_FIXED_WATCH_ACTION);
+ } else
+ if (node instanceof JPDAWatch) {
+ myActions.add (CREATE_FIXED_WATCH_ACTION);
+ } else
+ return actions;
+ myActions.addAll (Arrays.asList (actions));
+ return (Action[]) myActions.toArray (new Action [myActions.size ()]);
}
// NodeModel ...............................................................
- public String getDisplayName (Object o) throws UnknownTypeException {
- if (o instanceof FixedWatch)
- return ((FixedWatch) o).getName();
- throw new UnknownTypeException (o);
+ public String getDisplayName (NodeModel original, Object node)
+ throws UnknownTypeException {
+ if (fixedWatches.containsKey (node))
+ return (String) fixedWatches.get (node);
+ return original.getDisplayName (node);
}
- public String getShortDescription (Object o) throws UnknownTypeException {
- if (o instanceof FixedWatch) {
- FixedWatch fw = (FixedWatch) o;
- return fw.getName () + " = (" + fw.getType () + ") " +
- fw.getValue ();
+ public String getShortDescription (NodeModel original, Object node)
+ throws UnknownTypeException {
+ if (fixedWatches.containsKey (node)) {
+ Variable v = (Variable) node;
+ return ((String) fixedWatches.get (node)) +
+ " = (" + v.getType () + ") " +
+ v.getValue ();
}
- throw new UnknownTypeException (o);
+ return original.getShortDescription (node);
}
- public String getIconBase (Object node) throws UnknownTypeException {
- if (node instanceof FixedWatch)
+ public String getIconBase (NodeModel original, Object node)
+ throws UnknownTypeException {
+ if (fixedWatches.containsKey (node))
return FIXED_WATCH;
- throw new UnknownTypeException (node);
+ return original.getIconBase (node);
}
@@ -287,7 +225,7 @@
private void createFixedWatch (Object node) {
if (node instanceof JPDAWatch) {
JPDAWatch jw = (JPDAWatch) node;
- createFixedWatch (jw.getExpression (), jw);
+ addFixedWatch (jw.getExpression (), jw);
} else {
Variable variable = (Variable) node;
String name = null;
@@ -302,15 +240,13 @@
} else {
name = "unnamed";
}
- createFixedWatch(name, variable);
+ addFixedWatch (name, variable);
}
}
- private void createFixedWatch (String name, Variable variable) {
- if (fixedWatches == null) fixedWatches = new ArrayList();
- FixedWatch fw = new FixedWatch(name, variable);
- fixedWatches.add(fw);
- fireModelChanged();
+ private void addFixedWatch (String name, Variable variable) {
+ fixedWatches.put (variable, name);
+ fireModelChanged ();
}
private void fireModelChanged () {
@@ -319,17 +255,5 @@
TreeModelListener listener = (TreeModelListener) i.next();
listener.treeChanged();;
}
- }
-
- private TableModel original;
- private TableModel getOriginalModel () {
- if (original == null)
- original = Models.createCompoundTableModel (
- Models.createCompoundTableModel (
- contextProvider.lookup ("WatchesView", TableModel.class)
- ),
- contextProvider.lookup ("WatchesView", TableModelFilter.class)
- );
- return original;
}
}
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/models/VariablesTableModel.java
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/models/VariablesTableModel.java,v
retrieving revision 1.2
diff -u -r1.2 VariablesTableModel.java
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/models/VariablesTableModel.java 7 Jan 2005 09:33:26 -0000 1.2
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/models/VariablesTableModel.java 13 Jan 2005 12:18:51 -0000
@@ -58,8 +58,6 @@
if ( columnID.equals (LOCALS_TYPE_COLUMN_ID) ||
columnID.equals (WATCH_TYPE_COLUMN_ID)
) {
- if (row instanceof JPDAWatch)
- Thread.dumpStack();
if (row instanceof Variable)
return getShort (((Variable) row).getType ());
} else
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ClassesView.java
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ClassesView.java,v
retrieving revision 1.6
diff -u -r1.6 ClassesView.java
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ClassesView.java 4 Aug 2004 11:53:54 -0000 1.6
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ClassesView.java 13 Jan 2005 12:18:51 -0000
@@ -44,8 +44,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("ClassesView");
add (tree, "Center"); //NOI18N
}
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/SourcesView.java
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/SourcesView.java,v
retrieving revision 1.6
diff -u -r1.6 SourcesView.java
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/SourcesView.java 4 Aug 2004 11:53:54 -0000 1.6
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/SourcesView.java 13 Jan 2005 12:18:51 -0000
@@ -41,8 +41,7 @@
return;
if (tree == null) {
setLayout (new BorderLayout ());
- tree = Models.createView
- (null, null, null, null, new ArrayList ());
+ tree = Models.createView (Models.EMPTY_MODEL);
tree.setName ("SourcesView");
add (tree, "Center"); //NOI18N
}
Index: debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ViewModelListener.java
===================================================================
RCS file: /cvs/debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ViewModelListener.java,v
retrieving revision 1.3
diff -u -r1.3 ViewModelListener.java
--- debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ViewModelListener.java 7 Jan 2005 09:33:27 -0000 1.3
+++ debuggerjpda/ui/src/org/netbeans/modules/debugger/jpda/ui/views/ViewModelListener.java 13 Jan 2005 12:18:52 -0000
@@ -22,6 +22,7 @@
import org.netbeans.api.debugger.DebuggerEngine;
import org.netbeans.api.debugger.DebuggerManager;
import org.netbeans.api.debugger.DebuggerManagerAdapter;
+import org.netbeans.spi.viewmodel.Model;
import org.netbeans.spi.viewmodel.Models;
import org.netbeans.spi.viewmodel.ColumnModel;
import org.netbeans.spi.viewmodel.TableModelFilter;
@@ -30,6 +31,7 @@
import org.netbeans.spi.viewmodel.NodeModel;
import org.netbeans.spi.viewmodel.NodeModelFilter;
import org.netbeans.spi.viewmodel.TableModel;
+import org.netbeans.spi.viewmodel.TreeExpansionModel;
import org.netbeans.spi.viewmodel.TreeModel;
import org.netbeans.spi.viewmodel.TreeModelFilter;
import org.netbeans.spi.viewmodel.TreeModelListener;
@@ -69,9 +71,7 @@
DebuggerManager.PROP_CURRENT_ENGINE,
this
);
- Models.setModelsToView (
- view, null, null, null, null, Collections.EMPTY_LIST
- );
+ Models.setModelsToView (view, Models.EMPTY_MODEL);
}
public void propertyChange (PropertyChangeEvent e) {
@@ -79,67 +79,35 @@
}
private void updateModel () {
- TreeModel tm = (TreeModel) loadModel (TreeModel.class);
- if (tm == null)
- tm = Models.EMPTY_TREE_MODEL;
- List l = loadModels (NodeModel.class);
- l.add (new EmptyModel ());
-
- if (verbose) {
- System.out.println ("");
- System.out.println (viewType + " models:");
+ DebuggerManager dm = DebuggerManager.getDebuggerManager ();
+ DebuggerEngine e = dm.getCurrentEngine ();
+ ArrayList l = new ArrayList ();
+ if (e != null) {
+ l.addAll (e.lookup (viewType, TreeModel.class));
+ l.addAll (e.lookup (viewType, TreeModelFilter.class));
+ l.addAll (e.lookup (viewType, TreeExpansionModel.class));
+ l.addAll (e.lookup (viewType, NodeModel.class));
+ l.addAll (e.lookup (viewType, NodeModelFilter.class));
+ l.addAll (e.lookup (viewType, TableModel.class));
+ l.addAll (e.lookup (viewType, TableModelFilter.class));
+ l.addAll (e.lookup (viewType, NodeActionsProvider.class));
+ l.addAll (e.lookup (viewType, NodeActionsProviderFilter.class));
+ l.addAll (e.lookup (viewType, ColumnModel.class));
+ l.addAll (e.lookup (viewType, Model.class));
}
+ l.addAll (dm.lookup (viewType, TreeModel.class));
+ l.addAll (dm.lookup (viewType, TreeModelFilter.class));
+ l.addAll (dm.lookup (viewType, TreeExpansionModel.class));
+ l.addAll (dm.lookup (viewType, NodeModel.class));
+ l.addAll (dm.lookup (viewType, NodeModelFilter.class));
+ l.addAll (dm.lookup (viewType, TableModel.class));
+ l.addAll (dm.lookup (viewType, TableModelFilter.class));
+ l.addAll (dm.lookup (viewType, NodeActionsProvider.class));
+ l.addAll (dm.lookup (viewType, NodeActionsProviderFilter.class));
+ l.addAll (dm.lookup (viewType, ColumnModel.class));
+ l.addAll (dm.lookup (viewType, Model.class));
- Models.setModelsToView (
- view,
- Models.createCompoundTreeModel (
- tm,
- loadModels (TreeModelFilter.class)
- ),
- Models.createCompoundNodeModel (
- Models.createCompoundNodeModel (
- l
- ),
- loadModels (NodeModelFilter.class)
- ),
- Models.createCompoundTableModel (
- Models.createCompoundTableModel (
- loadModels (TableModel.class)
- ),
- loadModels (TableModelFilter.class)
- ),
- Models.createCompoundNodeActionsProvider (
- Models.createCompoundNodeActionsProvider (
- loadModels (NodeActionsProvider.class)
- ),
- loadModels (NodeActionsProviderFilter.class)
- ),
- loadModels (ColumnModel.class)
- );
-
- }
-
- private Object loadModel (Class modelType) {
- DebuggerEngine e = DebuggerManager.getDebuggerManager ().
- getCurrentEngine ();
- Object m = null;
- if (e != null)
- m = e.lookupFirst (viewType, modelType);
- if (m == null)
- m = DebuggerManager.getDebuggerManager ().
- lookupFirst (viewType, modelType);
- return m;
- }
-
- private List loadModels (Class modelType) {
- DebuggerEngine e = DebuggerManager.getDebuggerManager ().
- getCurrentEngine ();
- List l = new ArrayList ();
- if (e != null)
- l.addAll (e.lookup (viewType, modelType));
- l.addAll (DebuggerManager.getDebuggerManager ().
- lookup (viewType, modelType));
- return l;
+ Models.setModelsToView (view, Models.createCompoundModel (l));
}