canNavigateToSource added to Navigatable (http://www.jetbrains.net/jira/browse/IDEADEV-423 fixed)

This commit is contained in:
Olesya Smirnova
2005-02-26 23:34:20 +03:00
parent ffa8553c04
commit c9afe37d16
32 changed files with 142 additions and 19 deletions
@@ -22,6 +22,7 @@ import com.intellij.psi.scope.PsiScopeProcessor;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.util.IncorrectOperationException;
import com.intellij.pom.Navigatable;
import java.util.ArrayList;
import java.util.List;
@@ -258,6 +259,11 @@ public class ASTWrapperPsiElement extends ElementBase implements PsiElement, Nav
return true;
}
public boolean canNavigateToSource() {
final Navigatable descriptor = EditSourceUtil.getDescriptor(getNavigationElement());
return descriptor != null && descriptor.canNavigateToSource();
}
public FileStatus getFileStatus() {
if (!isPhysical()) return FileStatus.NOT_CHANGED;
PsiFile contFile = getContainingFile();
@@ -136,6 +136,9 @@ public class UsageInfo2UsageAdapter implements Usage, UsageInModule, UsageInLibr
return descriptor != null ? descriptor.canNavigate() : false;
}
public boolean canNavigateToSource() {
return canNavigate();
}
private OpenFileDescriptor getDescriptor() {
return isValid() ? new OpenFileDescriptor(getProject(), getFile(), myRangeMarkers.get(0).getStartOffset()) : null;
@@ -191,6 +191,11 @@ class GroupNode extends Node implements Navigatable {
return myGroup != null && myGroup.canNavigate();
}
public boolean canNavigateToSource() {
return myGroup != null && myGroup.canNavigateToSource();
}
protected boolean isDataExcluded() {
Enumeration enumeration = children();
while (enumeration.hasMoreElements()) {
@@ -49,6 +49,10 @@ class UsageNode extends Node implements Comparable<UsageNode>, Navigatable {
return myUsage.isValid() && myUsage.canNavigate();
}
public boolean canNavigateToSource() {
return myUsage.isValid() && myUsage.canNavigate();
}
protected boolean isDataValid() {
return myUsage.isValid();
}
@@ -129,6 +129,10 @@ public class ClassGroupingRule implements UsageGroupingRule {
return isValid();
}
public boolean canNavigateToSource() {
return canNavigate();
}
public int compareTo(UsageGroup usageGroup) {
return getText(null).compareTo(usageGroup.getText(null));
}
@@ -90,6 +90,10 @@ public class FileGroupingRule implements UsageGroupingRule {
return true;
}
public boolean canNavigateToSource() {
return canNavigate();
}
public int compareTo(UsageGroup usageGroup) {
return getText(null).compareTo(usageGroup.getText(null));
}
@@ -104,6 +104,10 @@ public class MethodGroupingRule implements UsageGroupingRule {
return isValid();
}
public boolean canNavigateToSource() {
return canNavigate();
}
public int compareTo(UsageGroup usageGroup) {
if (!(usageGroup instanceof MethodUsageGroup)) {
LOG.error("MethodUsageGroup expected but " + usageGroup.getClass() + " found");
@@ -76,6 +76,10 @@ public class ModuleGroupingRule implements UsageGroupingRule {
return false;
}
public boolean canNavigateToSource() {
return canNavigate();
}
public Object getData(String dataId) {
return null;
}
@@ -137,6 +141,10 @@ public class ModuleGroupingRule implements UsageGroupingRule {
return false;
}
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup o) {
if (o instanceof LibraryUsageGroup) return -1;
return o.getText(null).compareTo(getText(null));
@@ -32,6 +32,10 @@ public class NonCodeUsageGroupingRule implements UsageGroupingRule {
public int compareTo(UsageGroup usageGroup) { return usageGroup == this ? 0 : 1; }
public void navigate(boolean requestFocus) { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return canNavigate();
}
}
private static class NonCodeUsageGroup implements UsageGroup {
@@ -49,6 +53,10 @@ public class NonCodeUsageGroupingRule implements UsageGroupingRule {
public int compareTo(UsageGroup usageGroup) { return usageGroup == this ? 0 : -1; }
public void navigate(boolean requestFocus) { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return canNavigate();
}
}
public UsageGroup groupUsage(Usage usage) {
@@ -81,6 +81,10 @@ public class PackageGroupingRule implements UsageGroupingRule {
return myPackage.canNavigate();
}
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup usageGroup) {
return getText(null).compareTo(usageGroup.getText(null));
}
@@ -142,6 +146,10 @@ public class PackageGroupingRule implements UsageGroupingRule {
return directory != null && directory.canNavigate();
}
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup usageGroup) {
return getText(null).compareTo(usageGroup.getText(null));
}
@@ -124,6 +124,10 @@ public class UsageTypeGroupingRule implements UsageGroupingRule {
public void navigate(boolean focus) { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup usageGroup) {
return getText(null).compareTo(usageGroup.getText(null));
}
@@ -130,6 +130,10 @@ public class UsageNodeTreeBuilderTest extends TestCase {
public void navigate(boolean requestFocus) { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return false;
}
}
private static class OddEvenGroupingRule implements UsageGroupingRule {
@@ -147,6 +151,11 @@ public class UsageNodeTreeBuilderTest extends TestCase {
public void navigate(boolean focus) throws UnsupportedOperationException { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup o) { return o == ODD ? -1 : 0; }
public String toString() { return getText(null); }
};
@@ -165,6 +174,11 @@ public class UsageNodeTreeBuilderTest extends TestCase {
public void navigate(boolean focus) throws UnsupportedOperationException { }
public boolean canNavigate() { return false; }
public boolean canNavigateToSource() {
return false;
}
public int compareTo(UsageGroup o) { return o == EVEN ? 1 : 0; }
public String toString() { return getText(null); }
};
@@ -229,6 +243,10 @@ public class UsageNodeTreeBuilderTest extends TestCase {
return false;
}
public boolean canNavigateToSource() {
return false;
}
public boolean isReadOnly() {
return false;
}
@@ -148,6 +148,10 @@ public abstract class AbstractTreeNode<Value> extends NodeDescriptor implements
return false;
}
public boolean canNavigateToSource() {
return false;
}
protected final Object getParentValue() {
return getParent() == null ? null : getParent().getValue();
}
@@ -105,6 +105,10 @@ public class OpenFileDescriptor implements Navigatable {
return true;
}
public boolean canNavigateToSource() {
return true;
}
public Project getProject() {
return myProject;
}
@@ -31,7 +31,7 @@ public class EditSourceOnDoubleClickHandler {
if (((TreeNode)selectionPath.getLastPathComponent()).isLeaf() || !expandOnDoubleClick(((TreeNode)selectionPath.getLastPathComponent()))) {
//Node expansion for non-leafs has a higher priority
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(true);
}
}
@@ -58,7 +58,7 @@ public class EditSourceOnDoubleClickHandler {
Project project = (Project)dataContext.getData(DataConstants.PROJECT);
if (project == null) return;
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(true);
}
}
@@ -75,7 +75,7 @@ public class EditSourceOnDoubleClickHandler {
Project project = (Project)dataContext.getData(DataConstants.PROJECT);
if (project == null) return;
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(true);
}
}
@@ -93,7 +93,7 @@ public class EditSourceOnDoubleClickHandler {
if (!list.getCellBounds(index, index).contains(point)) return;
DataContext dataContext = DataManager.getInstance().getDataContext(list);
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable == null || !navigatable.canNavigate()) { return; }
if (navigatable == null || !navigatable.canNavigateToSource()) { return; }
navigatable.navigate(true);
@@ -28,7 +28,7 @@ public class EditSourceOnEnterKeyHandler{
if (project == null) return;
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(false);
}
}
@@ -43,7 +43,7 @@ public class EditSourceOnEnterKeyHandler{
public void actionPerformed(ActionEvent e) {
DataContext dataContext = DataManager.getInstance().getDataContext(component);
final Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable == null || !navigatable.canNavigate()) return;
if (navigatable == null || !navigatable.canNavigateToSource()) return;
navigatable.navigate(true);
@@ -171,6 +171,10 @@ public class FindInProjectManager implements ProjectComponent {
public boolean canNavigate() {
return false;
}
public boolean canNavigateToSource() {
return false;
}
}
if (manager!=null) {
@@ -81,6 +81,10 @@ public class PsiElement2UsageTargetAdapter implements UsageTarget {
return isValid() && getNavigationItem().canNavigate();
}
public boolean canNavigateToSource() {
return isValid() && getNavigationItem().canNavigateToSource();
}
private NavigationItem getNavigationItem() {
return (NavigationItem)myPointer.getElement();
}
@@ -29,7 +29,7 @@ public abstract class BaseNavigateToSourceAction extends AnAction {
public void actionPerformed(AnActionEvent e) {
DataContext dataContext = e.getDataContext();
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable.canNavigate()) {
if (navigatable.canNavigateToSource()) {
navigatable.navigate(myFocusEditor);
}
}
@@ -38,11 +38,7 @@ public abstract class BaseNavigateToSourceAction extends AnAction {
public void update(AnActionEvent event){
DataContext dataContext = event.getDataContext();
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
event.getPresentation().setEnabled(navigatable != null && navigatable.canNavigate());
}
private static void navigate(DataContext dataContext, OpenFileDescriptor descriptor, boolean focusEditor) {
SourceNavigator.fromContext(dataContext).navigate(descriptor, focusEditor);
event.getPresentation().setEnabled(navigatable != null && navigatable.canNavigateToSource());
}
public static abstract class SourceNavigator {
@@ -225,8 +225,7 @@ public class CommanderPanel extends JPanel {
public boolean navigateSelectedElement() {
final AbstractTreeNode selectedNode = getSelectedNode();
if (selectedNode != null) {
final Object value = selectedNode.getValue();
if (selectedNode.canNavigate()) {
if (selectedNode.canNavigateToSource()) {
selectedNode.navigate(true);
return true;
}
@@ -103,7 +103,7 @@ public abstract class AbstractProjectViewPSIPane extends AbstractProjectViewPane
DataContext dataContext = DataManager.getInstance().getDataContext(myTree);
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(false);
}
}
@@ -121,6 +121,10 @@ public abstract class BasePsiNode <Type extends PsiElement> extends ProjectViewN
return getValue() instanceof NavigationItem && ((NavigationItem)getValue()).canNavigate();
}
public boolean canNavigateToSource() {
return getValue() instanceof NavigationItem && ((NavigationItem)getValue()).canNavigateToSource();
}
public static VirtualFile getVirtualFile(PsiElement element) {
return element instanceof PsiDirectory
? ((PsiDirectory)element).getVirtualFile()
@@ -47,6 +47,14 @@ public class Form implements Navigatable{
}
}
public boolean canNavigateToSource() {
for (Iterator<PsiFile> iterator = myFormFiles.iterator(); iterator.hasNext();) {
PsiFile psiFile = iterator.next();
if (psiFile instanceof Navigatable && ((Navigatable)psiFile).canNavigateToSource()) return true;
}
return false;
}
public boolean canNavigate() {
for (Iterator<PsiFile> iterator = myFormFiles.iterator(); iterator.hasNext();) {
PsiFile psiFile = iterator.next();
@@ -53,6 +53,10 @@ public class FormNode extends ProjectViewNode<Form>{
return getValue().canNavigate();
}
public boolean canNavigateToSource() {
return getValue().canNavigateToSource();
}
public String getToolTip() {
return "UI Designer Form";
}
@@ -132,5 +132,9 @@ public abstract class PsiTreeElementBase <Value extends PsiElement> implements S
}
}
public boolean canNavigateToSource() {
return canNavigate();
}
public abstract StructureViewTreeElement[] getChildrenBase();
}
@@ -166,7 +166,7 @@ public class StructureViewComponent extends JPanel implements TreeActionsOwner,
if (KeyEvent.VK_ENTER == e.getKeyCode()) {
DataContext dataContext = DataManager.getInstance().getDataContext(getTree());
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(false);
}
}
@@ -530,7 +530,7 @@ public class StructureViewComponent extends JPanel implements TreeActionsOwner,
Navigatable editSourceDescriptor = (Navigatable)DataManager.getInstance().getDataContext(getTree())
.getData(DataConstants.NAVIGATABLE);
if (myFileEditor != null && editSourceDescriptor != null && editSourceDescriptor.canNavigate()) {
if (myFileEditor != null && editSourceDescriptor != null && editSourceDescriptor.canNavigateToSource()) {
editSourceDescriptor.navigate(false);
}
}
+1 -1
View File
@@ -116,7 +116,7 @@ abstract class TodoPanel extends JPanel implements OccurenceNavigator, DataProvi
return;
}
Navigatable navigatable = (Navigatable)getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(false);
}
}
@@ -221,6 +221,10 @@ public abstract class CachingChildrenTreeNode <Value> extends AbstractTreeNode<V
return getValue() instanceof Navigatable && ((Navigatable)getValue()).canNavigate();
}
public boolean canNavigateToSource() {
return getValue() instanceof Navigatable && ((Navigatable)getValue()).canNavigateToSource();
}
protected void clearChildren() {
if (myChildren != null) {
myChildren.clear();
@@ -110,6 +110,10 @@ public class PackageDependenciesNode extends DefaultMutableTreeNode implements N
return descriptor != null ? descriptor.canNavigate() : false;
}
public boolean canNavigateToSource() {
return canNavigate();
}
private Project getProject(){
if (getPsiElement() == null || getPsiElement().getContainingFile() == null){
return null;
@@ -116,6 +116,10 @@ public abstract class PsiElementBase extends ElementBase implements PsiElement,N
return EditSourceUtil.getDescriptor(getNavigationElement()) != null;
}
public boolean canNavigateToSource() {
return EditSourceUtil.getDescriptor(getNavigationElement()) != null;
}
public FileStatus getFileStatus() {
return FileStatus.NOT_CHANGED;
}
@@ -228,6 +228,10 @@ public abstract class CompositePsiElement extends CompositeElement implements Ps
return EditSourceUtil.getDescriptor(getNavigationElement()) != null;
}
public boolean canNavigateToSource() {
return canNavigate();
}
public FileStatus getFileStatus() {
if (!isPhysical()) return FileStatus.NOT_CHANGED;
PsiFile contFile = getContainingFile();
@@ -74,7 +74,7 @@ public abstract class AutoScrollToSourceHandler {
protected void scrollToSource(JTree tree) {
DataContext dataContext=DataManager.getInstance().getDataContext(tree);
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
if (navigatable != null && navigatable.canNavigateToSource()) {
navigatable.navigate(false);
}
}