/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import ilog.views.sdm.model.IlvSDMNode;
public class TreeSDMNode implements IlvSDMNode {
private TreeSDMNode parent;
private TreeModel treeModel;
private Object treeNode;
private Vector<IlvSDMNode> children;
public TreeSDMNode(TreeModel treeModel, TreeSDMNode parent, Object treeNode) {
this.parent = parent;
this.treeModel = treeModel;
this.treeNode = treeNode;
createChildren();
}
Override
public String getTag() {
return "treenode";
}
Override
public String getID() {
return String.valueOf(hashCode());
}
Override
public Enumeration<?> getChildren() {
return children.elements();
}
Override
public IlvSDMNode getParent() {
return parent;
}
Override
public Object getProperty(String property) {
if (treeNode instanceof DefaultMutableTreeNode) {
if (property.equals("userObject")) {
return ((DefaultMutableTreeNode) treeNode).getUserObject();
}
if (property.equals("CSSclass") && ((DefaultMutableTreeNode) treeNode).getParent() != null) {
return ((DefaultMutableTreeNode) ((DefaultMutableTreeNode) treeNode).getParent()).getUserObject();
}
}
return null;
}
Override
public String[] getPropertyNames() {
if (treeNode instanceof DefaultMutableTreeNode)
return new String[] { "userObject", "CSSclass" };
else
return new String[0];
}
// Private methods.
private void createChildren() {
children = new Vector<IlvSDMNode>();
int count = treeModel.getChildCount(treeNode);
for (int i = 0; i < count; i++) {
Object childTreeNode = treeModel.getChild(treeNode, i);
TreeSDMNode childSDMNode = new TreeSDMNode(treeModel, this, childTreeNode);
children.addElement(childSDMNode);
TreeSDMLink childSDMLink = new TreeSDMLink(this, childSDMNode);
children.addElement(childSDMLink);
}
}
}