📄 abstracttreenode.java
字号:
/**
*
*/
package flow.graph.gui.tree;
import java.util.Vector;
import javax.swing.AbstractListModel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultTreeSelectionModel;
import javax.swing.tree.TreePath;
import flow.graph.app.WorkFlow;
/**
* @author matt
*/
public abstract class AbstractTreeNode
extends AbstractListModel
implements TreeViewExpansionListener, TreeViewSelectionListener, IconListView.Activateable, TreePathable
{
Vector list = new Vector();
/**
* Method for reloading the list
*
* @return The success or failure of reloading
*/
public abstract boolean reload();
/**
* Called when a node is first added to the list.
*
* @param n The node which was just added.
*/
public void onAddNode(DefaultMutableTreeNode n) {
}
public Vector getList() {
return list;
}
/**
* @see com.safmq.manager.ServerTreeViewExpansionListener#willExpand(javax.swing.JTree, javax.swing.tree.DefaultMutableTreeNode)
*/
public boolean willExpand(JTree tree, DefaultMutableTreeNode container) {
System.out.println("willExpand...");
if (reload()) {
setNodeChildren(tree, container);
TreePath tp = ((DefaultTreeSelectionModel)tree.getSelectionModel()).getSelectionPath();
if (tp != null) {
Object objPath[] = tp.getPath();
if (((DefaultMutableTreeNode)objPath[objPath.length-1]).getUserObject() == this) {
WorkFlow.getInstance().setControlView(new IconListView(this));
}
}
return true;
}
return false;
}
protected boolean setNodeChildren(JTree tree, DefaultMutableTreeNode container) {
DefaultMutableTreeNode n;
DefaultMutableTreeNode child;
DefaultTreeModel treeModel = (DefaultTreeModel)tree.getModel();
int x;
Vector tmp = (Vector)getList().clone();
//System.out.println(this.getClass().getName()+".setNodeChildren()===================================");
if (tmp.size() > 0) {
boolean removed = false;
for(x = 0; x < container.getChildCount(); ) {
child = (DefaultMutableTreeNode)container.getChildAt(x);
if (!tmp.removeElement(child.getUserObject()) || (child.getUserObject() instanceof String)) {
int idx[] = {x};
Object nodes[] = {child};
container.remove(x);
treeModel.nodesWereRemoved(container,idx,nodes);
removed = true;
} else {
x++;
}
}
for(x = 0; x < tmp.size(); x++) {
int idx[] = new int[1];
container.add(n = new DefaultMutableTreeNode(tmp.get(x)));
idx[0] = container.getChildCount()-1;
treeModel.nodesWereInserted(container,idx);
onAddNode(n);
if (tmp.get(x) instanceof TreePathable)
((TreePathable)tmp.get(x)).setPath(new TreePath(n.getPath()));
}
return removed || x > 0;
}
return false;
}
/**
* @see com.safmq.manager.ServerTreeViewSelectionListener#doSelection(JTree,DefaultMutableTreeNode)
*/
public void doSelection(JTree tree, DefaultMutableTreeNode container) {
if (reload()) {
setNodeChildren(tree, container);
//Manager.getInstance().setControlView(new IconListView(this));
}
}
/**
* @see javax.swing.ListModel#getElementAt(int)
*/
public Object getElementAt(int index) {
return getList().get(index);
}
/**
* @see javax.swing.ListModel#getSize()
*/
public int getSize() {
return getList().size();
}
/**
* @see com.safmq.manager.IconListView.Activateable#activate()
*/
public void activate() {
if (getPath() != null) {
//Manager.getInstance().getTreeView().activatePath(getPath());
}
}
TreePath treePath = null;
/**
* @see com.safmq.manager.TreePathable#getPath()
*/
public TreePath getPath() {
return treePath;
}
/**
* @see com.safmq.manager.TreePathable#setPath(javax.swing.tree.TreePath)
*/
public void setPath(TreePath path) {
treePath = path;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -