private Node addNode(final Class type) { if (type != null && !nodes.containsKey(type)) { Node node = graph.addNode(); node.set("type", type); nodes.put(type, node); } return (Node) nodes.get(type); }
private Node findNode( Node parent, Object userObject ) { Node node = null; for( int i = 0; i < parent.getChildCount(); i++ ) { Node tNode = parent.getChild( i ); Object obj = tNode.get( GraphDisplay.USER_OBJECT ); if( obj.equals( userObject ) ) { node = tNode; break; } } return node; }
/** * Internal method for setting the root node. * @param root the root node to set */ void setRoot(Node root) { m_root = root.getRow(); }
/** * Returns an obvious node corresponding to a prefuse node. * @param node prefuse node * @return an obvious node */ private obvious.data.Node getObviousNode(Node node) { Object[] values = new Object[node.getSchema().getColumnCount()]; for (int i = 0; i < node.getSchema().getColumnCount(); i++) { values[i] = node.get(node.getSchema().getColumnName(i)); } return new NodeImpl(nodeSchema, values); }
/** * Adds a given node to the current graph. * @param node node to add to the graph * @return true if the node is added */ public boolean addNode(Node node) { try { // if prefNode (prefuse) tuple and node (obvious) tuple are compatible // i.e their schema are compatible. prefuse.data.Node prefNode = this.graph.addNode(); for (int i = 0; i < node.getTable().getSchema().getColumnCount(); i++) { prefNode.set(node.getSchema().getColumnName(i), node.get(i)); } int nodeId = prefNode.getRow(); fireNetworkEvent(nodeId, nodeId, 0, NetworkListener.INSERT_NODE); return true; } catch (Exception e) { throw new ObviousRuntimeException(e); } }
/** * Find the next node in the depth first iteration, closing off open * branch tags as needed. * @param x the current node * @param xml the XMLWriter * @return the next node */ private Node nextNode(Node x, XMLWriter xml) { Node n, c; if ( (c=x.getChild(0)) != null ) { // do nothing } else if ( (c=x.getNextSibling()) != null ) { xml.end(); } else { c = x.getParent(); xml.end(); while ( c != null ) { if ( (n=c.getNextSibling()) != null ) { c = n; xml.end(); break; } c = c.getParent(); xml.end(); } } return c; }
r.setString(LABEL, "0,0"); left.setString(LABEL, "1,0"); Node right = t.addChild(r); right.setString(LABEL, "1,1"); while ( left.getFirstChild() != null ) left = left.getFirstChild(); while ( right.getLastChild() != null ) right = right.getLastChild();
/** * Returns a String label for Node instances by looking up the * label data field specified in the constructor of this class. * @see javax.swing.JTree#convertValueToText(java.lang.Object, boolean, boolean, boolean, int, boolean) */ public String convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { if ( value == null ) return ""; if ( value instanceof Node ) { Object o = ((Node)value).get(m_field); if ( o.getClass().isArray() ) { return StringLib.getArrayString(o); } else { return o.toString(); } } else { return value.toString(); } }
/** * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object) */ public int getChildCount(Object node) { return ((Node)node).getChildCount(); }
if (m_preOrder) { x = (Node)m_stack.get(m_stack.size()-1); if ( (c=x.getChild(0)) != null ) { m_stack.add(c); } else if ( (c=x.getNextSibling()) != null ) { m_stack.set(m_stack.size()-1, c); } else { if ( c == m_root ) { break; } else if ( (c=c.getNextSibling()) != null ) { m_stack.add(c); break; if ( x != m_root && (c=x.getNextSibling()) != null ) { for (; c != null; c=c.getChild(0)) { m_stack.add(c);
/** * Build the spanning tree, starting at the given root. Uses an * unweighted breadth first traversal to build the spanning tree. * @param root the root node of the spanning tree */ public void buildSpanningTree(Node root) { // re-use a previously allocated tree if possible super.clearEdges(); super.setRoot(root); // build unweighted spanning tree by BFS LinkedList q = new LinkedList(); BitSet visit = new BitSet(); q.add(root); visit.set(root.getRow()); Table edges = getEdgeTable(); while ( !q.isEmpty() ) { Node p = (Node)q.removeFirst(); for ( Iterator iter = p.edges(); iter.hasNext(); ) { Edge e = (Edge)iter.next(); Node n = e.getAdjacentNode(p); if ( !visit.get(n.getRow()) ) { q.add(n); visit.set(n.getRow()); int er = super.addChildEdge(p.getRow(), n.getRow()); edges.setInt(er, SOURCE_EDGE, e.getRow()); } } } }
xml.start(Tokens.NODE, Tokens.ID, String.valueOf(n.getRow())); for ( int i=0; i<ns.getColumnCount(); ++i ) { String field = ns.getColumnName(i); xml.contentTag(Tokens.DATA, Tokens.KEY, field, n.getString(field)); xml.tag(Tokens.NODE, Tokens.ID, String.valueOf(n.getRow())); Edge e = (Edge)edges.next(); vals[0] = String.valueOf(e.getRow()); vals[1] = String.valueOf(e.getSourceNode().getRow()); vals[2] = String.valueOf(e.getTargetNode().getRow());
boolean leaf = (n.getChildCount() == 0); for ( int i=0; i<ns.getColumnCount(); ++i ) { vals[0] = ns.getColumnName(i); vals[1] = n.getString(vals[0]); if (vals[1] != null) { xml.tag(Tokens.ATTR, attr, vals, 2);
/** * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int) */ public Object getChild(Object node, int idx) { Node c = ((Node)node).getChild(idx); if ( c == null ) { throw new IllegalArgumentException("Index out of range: "+idx); } return c; }
n.setString(LABEL, String.valueOf(label++)); top.add(n); if ( n == null ) { n = g.addNode(); n.setString(LABEL, String.valueOf(label++)); layer.add(n); n.setString(LABEL, String.valueOf(label++)); layer.add(n); g.addEdge(p, n); Node p = (Node)layer.get(j); n = g.addNode(); n.setString(LABEL, String.valueOf(label++)); top.add(n); g.addEdge(p, n);
private static void deepHelper(Tree t, Node n, int breadth, int depth, boolean left) { Node c = t.addChild(n); c.setString(LABEL, "0,"+c.getDepth()); if ( left && depth > 0 ) deepHelper(t, c, breadth, depth-1, left); for ( int i=1; i<breadth; ++i ) { c = t.addChild(n); c.setString(LABEL, i+","+c.getDepth()); } if ( !left && depth > 0 ) deepHelper(t, c, breadth, depth-1, left); }
Node n = (Node)iter.next(); if ( n == p ) break; dt += ((Params)n.get(PARAMS)).width;
/** * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object) */ public boolean isLeaf(Object node) { return ((Node)node).getChildCount() == 0; }