/**
* RootNode.java
* Idea
* @version version 1.0
*
* @author Danny Ayers
* @created 04-Dec-2002
*
* Copyright (c) 2002 D.Ayers
* All rights reserved.
*
* For license details see http://ideagraph.net/licenses
*/
package org.hyperdata.scute.tree;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.tree.TreeNode;
import org.hyperdata.resources.tree.TreeIcons;
import org.hyperdata.scute.system.Log;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
/**
* The Class RootNode.
*
* @author danny
*
* created : 04-Dec-2002
*
* (c) D.Ayers 2002
*/
public class RootNode extends AbstractRdfTreeNode implements RdfTreeNode {
/** The children. */
private List<ResourceNode> children;
/**
* Instantiates a new root node.
*
* @param nodeMap
* the node map
*/
public RootNode(RdfNodeMap nodeMap) {
super(nodeMap, null);
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#children()
*/
@Override
@SuppressWarnings("unchecked")// javax.swing.tree.TreeNode is old-fashioned
public Enumeration<?> children() {
return (new Vector(getChildren())).elements();
}
/* (non-Javadoc)
* @see org.hyperdata.scute.tree.RdfTreeNode#delete()
*/
@Override
public void delete() {
System.out.println("MUST NOT DELETE ROOT NODE");
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#getAllowsChildren()
*/
@Override
public boolean getAllowsChildren() {
return true;
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#getChildAt(int)
*/
@Override
public TreeNode getChildAt(int childIndex) {
// System.out.println("root.getChildAt "+childIndex);
// System.out.println(".getChildAt = "+(TreeNode)
// getChildren().get(childIndex));
return getChildren().get(childIndex);
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#getChildCount()
*/
@Override
public int getChildCount() {
return getChildren().size();
}
/**
* Gets the children.
*
* @return the children
*/
protected List<ResourceNode> getChildren() {
// System.out.println("GET children base root node");
if (children == null) {
try {
children = new ArrayList<ResourceNode>();
getNodeMap().getTopModel();
final Iterator<Resource> iterator = getNodeMap().getResources()
.iterator();
Resource resource;
while (iterator.hasNext()) {
resource = iterator.next();
children.add(getNodeMap().getResourceNode(resource));
}
} catch (final Exception exception) {
Log.exception(exception);
}
}
return children;
}
/* (non-Javadoc)
* @see org.hyperdata.scute.tree.RdfTreeNode#getIcon()
*/
@Override
public ImageIcon getIcon() {
return TreeIcons.rootIcon;
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#getIndex(TreeNode)
*/
@Override
public int getIndex(TreeNode node) {
return getChildren().indexOf(node);
}
/* (non-Javadoc)
* @see org.hyperdata.scute.tree.RdfTreeNode#getNodeType()
*/
@Override
public int getNodeType() {
return RdfTreeNode.ROOT;
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#getParent()
*/
@Override
public TreeNode getParent() {
return null;
}
/* (non-Javadoc)
* @see org.hyperdata.scute.tree.RdfTreeNode#getRdfNode()
*/
@Override
public RDFNode getRdfNode() {
return null;
}
/*
* (non-Javadoc)
*
* @see javax.swing.tree.TreeNode#isLeaf()
*/
@Override
public boolean isLeaf() {
// System.out.println("rootkids = " + getChildren().size());
return getChildren().size() == 0;
}
/* (non-Javadoc)
* @see org.hyperdata.scute.tree.RdfTreeNode#rename(java.lang.String)
*/
@Override
public void rename(String newName) {
System.out.println("MUST NOT RENAME ROOT NODE");
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "";
}
}