org.netbeans.spi.viewmodel/2 1.32.1

Package org.netbeans.spi.viewmodel

Defines API for sharing of Tree Table View.

See:
          Description

Interface Summary
AsynchronousModelFilter Change threading of implemented models.
CheckNodeModel The extension of NodeModel that can display check-boxes next to the node display name.
CheckNodeModelFilter A model filter for CheckNodeModel.
DnDNodeModel Extension of NodeModel with support for Drag and Drop of nodes.
DnDNodeModelFilter Extension of NodeModelFilter with support for Drag and Drop of nodes.
ExtendedNodeModel Provides extension to NodeModel with cut/copy/paste and rename functionality, and also allowing to set icons with extension.
ExtendedNodeModelFilter Provides extension to NodeModelFilter, filters content of some existing ExtendedNodeModel.
Model Marker interface for all models.
ModelListener Notifies about changes in view model.
Models.ActionPerformer Support interface for Models.createAction(String,Models.ActionPerformer,int) method.
NodeActionsProvider Provides actions and default action for some type of objects.
NodeActionsProviderFilter Filters actions provided by some original NodeActionsProvider.
NodeModel Provides display name, icon and tooltip value for some type of objects.
NodeModelFilter Filters content of some existing NodeModel.
ReorderableTreeModel Data model for tree that supports reordering of child nodes.
ReorderableTreeModelFilter Filters an original tree data model that supports reordering of child nodes.
TableModel Adds support for columns to basic TreeModel.
TableModelFilter Allows to filter content of some existing TableModel.
TableRendererModel Model that provides custom cell renderer and cell editor for table cells.
TableRendererModelFilter Model filter that can override custom cell renderer and cell editor for table cells.
TreeExpansionModel This model controlls expansion, collapsion of nodes in tree view, and defindes default expand state for all node in it.
TreeExpansionModelFilter This model filter controlls expansion, collapsion of nodes in tree view, and defindes default expand state for all node in it.
TreeModel Defines data model for tree.
TreeModelFilter Filters content of some original tree of nodes (represented by TreeModel).
 

Class Summary
ColumnModel Defines model for one table view column.
ModelEvent Encapsulates information describing changes to a model, and used to notify model listeners of the change.
ModelEvent.NodeChanged Used to notify that one node has been changed (icon, displayName and children).
ModelEvent.SelectionChanged Event to change a selection in the tree table view.
ModelEvent.TableValueChanged Used to notify that one cell in table has been changed.
ModelEvent.TreeChanged Used to notify that whole content of tree has been changed.
Models Contains various utility methods for various models.
Models.CompoundModel This model encapsulates all currently supported models.
Models.TreeFeatures Tree expansion control.
 

Enum Summary
AsynchronousModelFilter.CALL This enumeration identifies method(s) of view models for which threading information is provided by AsynchronousModelFilter.asynchronous(java.util.concurrent.Executor, org.netbeans.spi.viewmodel.AsynchronousModelFilter.CALL, java.lang.Object) method.
 

Exception Summary
UnknownTypeException Used by various data models if data model is asked to resolve node of unknown type.
 

Package org.netbeans.spi.viewmodel Description

Defines API for sharing of Tree Table View. This API has been designed for sharing Debugger Views (like Callstack View) among different modules. But it does not depends on debugger itself.

Main features:

How to use View Model API

Following example shows how to use viewmodel API to create simple files view.

Step 1.

In the first step we should create plain tree model (TreeModel).
public class TreeModelImpl implements TreeModel {
Tree Model Example 1
public Object getRoot () {
return ROOT;
}

public Object[] getChildren (Object parent, int from, int to) {
if (parent == ROOT)
return File.listRoots ();
return ((File) parent).listFiles ();
}

public boolean isLeaf (Object node) {
if (node == ROOT)
return false;
return ((File) node).isFile ();
}
}
And create a TreeView for this model:
    JComponent treeView = Models.createView (
Models.createCompoundModel (
Arrays.asList (new Model[] {
new TreeModelImpl (), // TreeModel
new ArrayList () // list of ColumnModel s
})
)
);

Step 2.

NodeModel implementation can define name, icon and tooltip for tree nodes produced by TreeModel.
public class NodeModelImpl implements NodeModel {Tree Model Example 2

public String getDisplayName (Object node) {
if (node == ROOT) return "Name";
String name = ((File) node).getName ();
if (name.length () < 1) return ((File) node).getAbsolutePath ();
return name;
}

public String getIconBase (Object node) {
if (node == ROOT) return "folder";
if (((File) node).isDirectory ()) return "folder";
return "file";
}

public String getShortDescription (Object node) {
if (node == ROOT) return "Name";
return ((File) node).getAbsolutePath ();
}
}

Step 3.

NodeActionsProvider defines set of Actions for each node, and default action..
public class NodeActionsProviderImpl implements NodeActionsProvider {

public Action[] getActions (final Object node) {
return new Action [] {
new AbstractAction ("Open") {
public void actionPerformed (ActionEvent e) {
performDefaultAction (node);
}
},
new AbstractAction ("Delete") {
public void actionPerformed (ActionEvent e) {
((File) node).delete ();
}
}
};
}

public void performDefaultAction (Object node) {
try {
JFrame f = new JFrame ("View");
f.getContentPane ().add (new JEditorPane (((File) node).toURL ()));
f.pack ();
f.show ();
} catch (Exception e) {
e.printStackTrace();
}
}
}

Tree Model Example 3

Step 4.

TableModel and ColumnModel adds support for additional columns to tree view.
public class TableModelImpl implements TableModel {


public Object getValueAt (Object node, String columnID) {
try {
if (node == ROOT) return null;
if (columnID.equals ("sizeID")) {
if (((File) node).isDirectory ()) return "<dir>";
return "" + new FileInputStream ((File) node).getChannel ().size ();
}
} catch (Exception e) {
e.printStackTrace ();
}
return "";
}

public boolean isReadOnly (Object node, String columnID) {
return true;
}

public void setValueAt (Object node, String columnID, Object value) {
}
}
And initialization of columns looks like:
    ArrayList columns = new ArrayList ();Tree Model Example 4
columns.add (new ColumnModel () {
public String getID () { return "sizeID"; }
public String getDisplayName () { return "size"; }
public Class getType () { return String.class; }
});
JComponent treeTableView = Models.createView (
Models.createCompoundModel (
Arrays.asList (new Model[] {
new TreeModelImpl (), // TreeModel
new NodeModelImpl (), // NodeModel
new TableModelImpl (), // TableModel
new NodeActionsProviderImpl (), // NodeActionsProvider
columns // list of ColumnModel s
})
)
);




How to use Filters

We can use filters to modify content of tree table view created in our example.
All these actions can be done in some external module.


org.netbeans.spi.viewmodel/2 1.32.1

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