|
|||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Interface Summary | |
Model | Marker interface for all models. |
ModelListener | Notifies about changes in view model. |
Models.ActionPerformer | Support interface for
#createAction(String,Object,Models.ActionPerformer) 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 . |
TableModel | Adds support for columns to basic TreeModel . |
TableModelFilter | Allows to filter content of some existing TableModel . |
TreeExpansionModel | This model 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 | Node has been changed event. |
ModelEvent.TableValueChanged | One cell in table has been changed event. |
ModelEvent.TreeChanged | All three has been changed event. |
Models | Contains various utility methods for various models. |
Models.CompoundModel | This model encapsulates all currently supported models. |
Models.TreeFeatures | Implements set of tree view features. |
Exception Summary | |
UnknownTypeException | Used by various data models if data model is asked to resolve node of unknown type. |
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.
public class TreeModelImpl implements TreeModel {And create a TreeView for this model:
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 ();
}
}
JComponent treeView = Models.createView (See TreeModelExample1.
Models.createCompoundModel (
Arrays.asList (new Model[] {
new TreeModelImpl (), // TreeModel
new ArrayList () // list of ColumnModel s
})
)
);
public class NodeModelImpl implements NodeModel {See TreeModelExample2.
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 ();
}
}
public class NodeActionsProviderImpl implements NodeActionsProvider {See TreeModelExample3.
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();
}
}
}
public class TableModelImpl implements TableModel {And initialization of columns looks like:
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) {
}
}
ArrayList columns = new ArrayList ();See TreeModelExample4.
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
})
)
);
|
|||||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |