javax.swing.tree.DefaultMutableTreeNode#getIndex ( )源码实例Demo

下面列出了javax.swing.tree.DefaultMutableTreeNode#getIndex ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public DefaultMutableTreeNode getRemainingExpression(PsiExpression expressionToBeRemoved) {
    DefaultMutableTreeNode newRoot = new DefaultMutableTreeNode();
    processExpression(newRoot, completeExpression);
    DefaultMutableTreeNode leaf = newRoot.getFirstLeaf();
    while (leaf != null) {
        PsiExpression expression = (PsiExpression) leaf.getUserObject();
        if (expression.equals(expressionToBeRemoved)) {
            DefaultMutableTreeNode parent = (DefaultMutableTreeNode) leaf.getParent();
            if (parent != null) {
                DefaultMutableTreeNode grandParent = (DefaultMutableTreeNode) parent.getParent();
                DefaultMutableTreeNode sibling = null;
                if (leaf.getNextSibling() != null) {
                    sibling = leaf.getNextSibling();
                } else if (leaf.getPreviousSibling() != null) {
                    sibling = leaf.getPreviousSibling();
                }
                if (grandParent != null) {
                    int parentIndex = grandParent.getIndex(parent);
                    grandParent.remove(parent);
                    grandParent.insert(sibling, parentIndex);
                } else {
                    newRoot = sibling;
                }
            } else {
                newRoot = null;
            }
            break;
        }
        leaf = leaf.getNextLeaf();
    }
    return newRoot;
}
 
源代码2 项目: RefactoringMiner   文件: UMLModelASTReader.java
private String getAnonymousBinaryName(DefaultMutableTreeNode node) {
	StringBuilder name = new StringBuilder();
	TreeNode[] path = node.getPath();
	for(int i=0; i<path.length; i++) {
		DefaultMutableTreeNode tmp = (DefaultMutableTreeNode)path[i];
		if(tmp.getUserObject() != null) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode)tmp.getParent();
			int index = parent.getIndex(tmp);
			name.append(index+1);
			if(i < path.length-1)
				name.append(".");
		}
	}
	return name.toString();
}
 
private void processExpression(DefaultMutableTreeNode parent, Expression expression) {
	if(expression instanceof InfixExpression) {
		InfixExpression infixExpression = (InfixExpression)expression;
		InfixExpression.Operator operator = infixExpression.getOperator();
		if(operator.equals(InfixExpression.Operator.CONDITIONAL_AND) || operator.equals(InfixExpression.Operator.CONDITIONAL_OR)) {
			parent.setUserObject(operator);
			DefaultMutableTreeNode leftOperandNode = new DefaultMutableTreeNode();
			DefaultMutableTreeNode rightOperandNode = new DefaultMutableTreeNode();
			parent.add(leftOperandNode);
			parent.add(rightOperandNode);
			processExpression(leftOperandNode, infixExpression.getLeftOperand());
			processExpression(rightOperandNode, infixExpression.getRightOperand());
			if(infixExpression.hasExtendedOperands()) {
				DefaultMutableTreeNode grandParent = (DefaultMutableTreeNode)parent.getParent();
				int parentIndex = -1;
				if(grandParent != null)
					parentIndex = grandParent.getIndex(parent);
				DefaultMutableTreeNode newParent = processExtendedOperands(parent, infixExpression.extendedOperands());
				if(grandParent != null)
					grandParent.insert(newParent, parentIndex);
				else
					root = newParent;
			}
		}
		else {
			parent.setUserObject(infixExpression);
		}
	}
	else {
		parent.setUserObject(expression);
	}
}
 
public DefaultMutableTreeNode getRemainingExpression(Expression expressionToBeRemoved) {
	DefaultMutableTreeNode newRoot = new DefaultMutableTreeNode();
	processExpression(newRoot, completeExpression);
	DefaultMutableTreeNode leaf = newRoot.getFirstLeaf();
	while(leaf != null) {
		Expression expression = (Expression)leaf.getUserObject();
		if(expression.equals(expressionToBeRemoved)) {
			DefaultMutableTreeNode parent = (DefaultMutableTreeNode)leaf.getParent();
			if(parent != null) {
				DefaultMutableTreeNode grandParent = (DefaultMutableTreeNode)parent.getParent();
				DefaultMutableTreeNode sibling = null;
				if(leaf.getNextSibling() != null) {
					sibling = leaf.getNextSibling();
				}
				else if(leaf.getPreviousSibling() != null) {
					sibling = leaf.getPreviousSibling();
				}
				if(grandParent != null) {
					int parentIndex = grandParent.getIndex(parent);
					grandParent.remove(parent);
					grandParent.insert(sibling, parentIndex);
				}
				else {
					newRoot = sibling;
				}
				break;
			}
			else {
				newRoot = null;
				break;
			}
		}
		leaf = leaf.getNextLeaf();
	}
	return newRoot;
}
 
源代码5 项目: TrakEM2   文件: ProjectTree.java
/** Implements the "Duplicate, link and send to next/previous layer" functionality. The 'position' can be zero (before) or 1 (after). The profile has no layer assigned.  */
public Profile duplicateChild(Profile original, int position, Layer layer) {
	Utils.log2("ProjectTree: Called duplicateChild " + System.currentTimeMillis() + " for original id = " + original.getId() + " at position " + position);
	// find the Thing that holds it
	Thing child = project.findProjectThing(original);
	if (null == child) {
		Utils.log("ProjectTree.duplicateChild: node not found for original " + original);
		return null;
	}
	Profile copy = (Profile)original.clone();
	copy.setLayer(layer); // for the Z ordering
	ProjectThing new_thing = null;
	try {
		new_thing = new ProjectThing(((ProjectThing)child.getParent()).getChildTemplate(child.getType()), original.getProject(), copy);
	} catch (Exception e) {
		IJError.print(e);
		return null;
	}
	DefaultMutableTreeNode child_node = (DefaultMutableTreeNode)findNode(child, this);
	DefaultMutableTreeNode parent_node = (DefaultMutableTreeNode)child_node.getParent();
	ProjectThing parent_thing = (ProjectThing)parent_node.getUserObject();
	//sanity check:
	if (position < 0) position = 0;
	else if (position > 1) position = 1;
	int index = parent_node.getIndex(child_node) + position;
	if (index < 0) index = 0;
	if (index > parent_node.getChildCount()) index = parent_node.getChildCount() -1;
	if (!parent_thing.addChild(new_thing, index)) return null;
	DefaultMutableTreeNode new_node = new DefaultMutableTreeNode(new_thing);
	((DefaultTreeModel)this.getModel()).insertNodeInto(new_node, parent_node, index /*parent_node.getIndex(child_node) + position*/);
	// relist properly the nodes
	updateList(parent_node);
	TreePath treePath = new TreePath(new_node.getPath());
	this.scrollPathToVisible(treePath);
	this.setSelectionPath(treePath);

	return copy;
}
 
源代码6 项目: swing_library   文件: CalculationTreeEditor.java
public Object getCellEditorValue() {
	
	System.out.println("getCellEditorValue");

	Double i = (Double) emptyNodeEditor.getCellEditorValue();

	ValueNode vn = new ValueNode(i);

	editedNode.setUserObject(new ValueNode(i));

	DefaultMutableTreeNode parent = (DefaultMutableTreeNode) editedNode
			.getParent();

	int index = parent.getIndex(editedNode);

	if (editedNode.getUserObject() instanceof MultiEmptyNode) {
		DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) editedNode
				.getParent();

		DefaultMutableTreeNode newMultiEmpty = new DefaultMutableTreeNode();

		newMultiEmpty.setUserObject(new MultiEmptyNode());

		parentNode.add(newMultiEmpty);
	} else if (parent.getUserObject() instanceof BinaryOperator) {
		System.out.println("parent user object is BinaryOperator");
		// inserting into the actual object model
		BinaryOperator bo = (BinaryOperator) parent.getUserObject();

		if (index == 0) {
			System.out.println("setting first operand type = "
					+ vn.getClass());
			bo.setFirstOperand(vn);
		} else if (index == 1) {
			System.out.println("setting second operand type = "
					+ vn.getClass());
			bo.setSecondOperand(vn);
		}
	} else if (parent.getUserObject() instanceof FunctionInput) {
		System.out.println("parent user object is FunctionInput");

		FunctionInput fi = (FunctionInput) parent.getUserObject();
		fi.setValue(vn);
	}
	// this
	System.out.println("<<< get cell editor value >>>>");
	System.out.println("editedNode.getUserObject() = "
			+ editedNode.getUserObject());

	calculationPanel.updateCalculationText();

	return editedNode.getUserObject();
}
 
源代码7 项目: libGDX-Path-Editor   文件: EditorRootPane.java
private int getSelectedNodeIndex(DefaultMutableTreeNode node) {
	DefaultMutableTreeNode root = getTreeRoot();
	if (root == null) { return -1; }
	if (node == null) { return -1; }
	return root.getIndex(node);
}