in tapestry/src/main/java/com/intellij/tapestry/intellij/view/TapestryProjectViewPane.java [455:535]
private void addTreeListeners() {
myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent event) {
if (event.getNewLeadSelectionPath() != null) {
TapestryToolWindow toolWindow = TapestryToolWindowFactory.getToolWindow(getProject());
if (toolWindow != null) {
SimpleNode selectedNode =
((SimpleNode)((DefaultMutableTreeNode)event.getNewLeadSelectionPath().getLastPathComponent()).getUserObject());
if (!(selectedNode instanceof TapestryNode)) {
toolWindow.update(null, null, null);
return;
}
if (selectedNode instanceof PageNode || selectedNode instanceof ComponentNode || selectedNode instanceof MixinNode) {
toolWindow.update((Module)getData(PlatformCoreDataKeys.MODULE.getName()), selectedNode.getElement(),
Collections.singletonList(((PresentationLibraryElement)selectedNode.getElement()).getElementClass()));
}
if (selectedNode instanceof ClassNode || selectedNode instanceof FileNode) {
TapestryNode parentSelectedNode =
((TapestryNode)((DefaultMutableTreeNode)((DefaultMutableTreeNode)event.getNewLeadSelectionPath().getLastPathComponent())
.getParent()).getUserObject());
if (parentSelectedNode.getElement() instanceof PresentationLibraryElement) {
toolWindow.update((Module)getData(PlatformCoreDataKeys.MODULE.getName()), parentSelectedNode.getElement(),
Collections
.singletonList(((PresentationLibraryElement)parentSelectedNode.getElement()).getElementClass()));
}
else {
IJavaClassType elementClass = null;
PresentationLibraryElement component = null;
Module module = ((TapestryNode)selectedNode).getModule();
TapestryProject tapestryProject = TapestryModuleSupportLoader.getTapestryProject(module);
if (selectedNode instanceof ClassNode) {
elementClass = new IntellijJavaClassType(module, ((PsiFile)selectedNode.getElement()));
try {
component = PresentationLibraryElement.createProjectElementInstance(elementClass, tapestryProject);
}
catch (NotTapestryElementException ex) {
// the selected class is not a Tapestry element
}
}
if (selectedNode instanceof FileNode) {
elementClass = tapestryProject.findElementByTemplate((PsiFile)selectedNode.getElement()).getElementClass();
if (elementClass != null) {
component = PresentationLibraryElement.createProjectElementInstance(elementClass, tapestryProject);
}
}
if (component != null) {
toolWindow.update((Module)getData(PlatformCoreDataKeys.MODULE.getName()), component,
Collections.singletonList(component.getElementClass()));
}
}
}
if (!(selectedNode instanceof PageNode ||
selectedNode instanceof ComponentNode ||
selectedNode instanceof MixinNode ||
selectedNode instanceof ClassNode ||
selectedNode instanceof FileNode)) {
toolWindow.update(null, null, null);
}
}
}
}
});
myTree.addKeyListener(new PsiCopyPasteManager.EscapeHandler());
}//addTreeListeners