mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
navigation from dependencies panel
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.content.Content;
|
||||
import com.intellij.util.Icons;
|
||||
import com.intellij.util.EditSourceOnDoubleClickHandler;
|
||||
import com.intellij.util.ui.Tree;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
|
||||
@@ -211,20 +212,12 @@ public class DependenciesPanel extends JPanel {
|
||||
TreeToolTipHandler.install(tree);
|
||||
TreeUtil.installActions(tree);
|
||||
SmartExpander.installOn(tree);
|
||||
EditSourceOnDoubleClickHandler.install(tree);
|
||||
new TreeSpeedSearch(tree);
|
||||
|
||||
PopupHandler.installUnknownPopupHandler(tree, createTreePopupActions(isRightTree), ActionManager.getInstance());
|
||||
|
||||
tree.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (e.isPopupTrigger() && e.getClickCount() == 2) {
|
||||
Navigatable navigatable = (Navigatable)tree.getData(DataConstants.NAVIGATABLE);
|
||||
if (navigatable != null && navigatable.canNavigate()) {
|
||||
navigatable.navigate(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void updateRightTreeModel() {
|
||||
@@ -534,8 +527,8 @@ public class DependenciesPanel extends JPanel {
|
||||
private static class MyTree extends Tree implements DataProvider {
|
||||
public Object getData(String dataId) {
|
||||
PackageDependenciesNode node = getSelectedNode();
|
||||
if (node != null && DataConstants.PSI_ELEMENT.equals(dataId)) {
|
||||
return node.getPsiElement();
|
||||
if (DataConstants.NAVIGATABLE.equals(dataId)) {
|
||||
return node;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,13 @@ package com.intellij.packageDependencies.ui;
|
||||
|
||||
import com.intellij.ide.IconUtilEx;
|
||||
import com.intellij.openapi.actionSystem.impl.EmptyIcon;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.pom.Navigatable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
@@ -11,7 +16,7 @@ import javax.swing.tree.MutableTreeNode;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class PackageDependenciesNode extends DefaultMutableTreeNode {
|
||||
public class PackageDependenciesNode extends DefaultMutableTreeNode implements Navigatable{
|
||||
private static final EmptyIcon EMPTY_ICON = EmptyIcon.create(0, IconUtilEx.getEmptyIcon(false).getIconHeight());
|
||||
private Set<PsiFile> myRegisteredFiles = new HashSet<PsiFile>();
|
||||
private boolean myHasUnmarked = false;
|
||||
@@ -67,4 +72,33 @@ public class PackageDependenciesNode extends DefaultMutableTreeNode {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void navigate(boolean focus) {
|
||||
if (canNavigate()) {
|
||||
openTextEditor(focus);
|
||||
}
|
||||
}
|
||||
|
||||
private Editor openTextEditor(boolean focus) {
|
||||
return FileEditorManager.getInstance(getProject()).openTextEditor(getDescriptor(), focus);
|
||||
}
|
||||
|
||||
public boolean canNavigate() {
|
||||
final OpenFileDescriptor descriptor = getDescriptor();
|
||||
return descriptor != null ? descriptor.canNavigate() : false;
|
||||
}
|
||||
|
||||
private Project getProject(){
|
||||
if (getPsiElement() == null || getPsiElement().getContainingFile() == null){
|
||||
return null;
|
||||
}
|
||||
return getPsiElement().getContainingFile().getProject();
|
||||
}
|
||||
|
||||
private OpenFileDescriptor getDescriptor() {
|
||||
if (getProject() == null){
|
||||
return null;
|
||||
}
|
||||
return new OpenFileDescriptor(getProject(), getPsiElement().getContainingFile().getVirtualFile());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user