package jetbrains.mps.ide.hierarchy; /*Generated by MPS */ import jetbrains.mps.ide.ui.tree.MPSTreeNode; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.annotations.NotNull; import jetbrains.mps.ide.icons.IconManager; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; public class HierarchyTreeNode extends MPSTreeNode { private SNode myNode; private final SNodeReference myNodeRef; protected AbstractHierarchyTree myHierarchyTree; public HierarchyTreeNode(@NotNull SNode declaration, AbstractHierarchyTree tree) { super(declaration); // FIXME drop myNode in favor of myNodeRef myNode = declaration; myNodeRef = declaration.getReference(); myHierarchyTree = tree; setNodeIdentifier(calculateNodeIdentifier()); setToggleClickCount(-1); } @Override protected void doUpdatePresentation() { SNode node = myNode; if (node == null) { return; } setIcon(IconManager.getIconFor(node)); String addText = calculateAdditionalText(); if (addText != null) { setAdditionalText(addText); } setAutoExpandable(false); } protected String calculateAdditionalText() { if (getNode() == null) { return null; } SModel model = SNodeOperations.getModel(getNode()); if (model == null) { return null; } return model.getReference().getModelName(); } public SNode getNode() { return myNode; } @NotNull public SNodeReference getNodeReference() { return myNodeRef; } @NotNull public String calculateNodeIdentifier() { if (getNode() == null) { return "null"; } String name; if (myHierarchyTree.overridesNodeIdentifierCalculation()) { name = myHierarchyTree.calculateNodeIdentifier(this); } else { name = getNode().getName(); } return (name == null ? "no name" : name); } }