(no message)

This commit is contained in:
Alexey Kudravtsev
2005-01-20 17:58:26 +03:00
parent e006a6380a
commit 4d740a539a
23 changed files with 125 additions and 122 deletions

View File

@@ -122,7 +122,9 @@ public class UsageViewManagerImpl implements UsageViewManager, ProjectComponent
else if (myUsageCount == 1 && !showPanelIfOnlyOneUsage) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myFirstUsage.navigate(true);
if (myFirstUsage.canNavigate()) {
myFirstUsage.navigate(true);
}
}
});
}

View File

@@ -37,6 +37,5 @@ import com.intellij.pom.Navigatable;
public interface NavigationItem extends Navigatable {
String getName();
ItemPresentation getPresentation();
void navigate(boolean requestFocus);
FileStatus getFileStatus();
}

View File

@@ -68,7 +68,7 @@ public class HighlightUtil {
static {
ourClassIncompatibleModifiers = new THashMap<String, Set<String>>(8);
THashSet<String> modifiers = new THashSet<String>(1);
Set<String> modifiers = new THashSet<String>(1);
modifiers.add(PsiModifier.FINAL);
ourClassIncompatibleModifiers.put(PsiModifier.ABSTRACT, modifiers);
modifiers = new THashSet<String>(1);

View File

@@ -195,7 +195,7 @@ public class GotoImplementationHandler implements CodeInsightActionHandler {
if (elements.length == 1) {
Navigatable descriptor = EditSourceUtil.getDescriptor(elements[0]);
if (descriptor != null) {
if (descriptor != null && descriptor.canNavigate()) {
descriptor.navigate(true);
}
}
@@ -218,7 +218,7 @@ public class GotoImplementationHandler implements CodeInsightActionHandler {
if (index < 0) return;
PsiElement element = (PsiElement) list.getSelectedValue();
Navigatable descriptor = EditSourceUtil.getDescriptor(element);
if (descriptor != null) {
if (descriptor != null && descriptor.canNavigate()) {
descriptor.navigate(true);
}
}

View File

@@ -35,7 +35,7 @@ public final class NavigationUtil {
if (index < 0) return;
PsiElement element = (PsiElement) list.getSelectedValue();
Navigatable descriptor = EditSourceUtil.getDescriptor(element);
if (descriptor != null) {
if (descriptor != null && descriptor.canNavigate()) {
descriptor.navigate(true);
}
}

View File

@@ -32,12 +32,12 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code
}
protected boolean isValidForFile(Project project, Editor editor, final PsiFile file) {
boolean b = file.canContainJavaCode() || file instanceof XmlFile;
if (!b) {
boolean canNavigate = file.canContainJavaCode() || file instanceof XmlFile;
if (!canNavigate) {
FileTypeSupportCapabilities supportCapabilities = file.getFileType().getSupportCapabilities();
b = (supportCapabilities!=null)?supportCapabilities.hasNavigation():false;
canNavigate = supportCapabilities == null ? false : supportCapabilities.hasNavigation();
}
return b;
return canNavigate;
}
protected boolean isValidForLookup() {
@@ -51,7 +51,7 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code
PsiElement element = findTargetElement(project, editor, offset);
if (element == null) {
FeatureUsageTracker.getInstance().triggerFeatureUsed("navigation.goto.declaration");
chooseAmbigousTarget(project, editor, offset);
chooseAmbiguousTarget(project, editor, offset);
return;
}
@@ -68,19 +68,18 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Code
}
}
if (navElement instanceof Navigatable) {
if (navElement instanceof Navigatable && ((Navigatable)navElement).canNavigate()) {
((Navigatable)navElement).navigate(true);
}
}
private void chooseAmbigousTarget(final Project project, final Editor editor, int offset) {
private void chooseAmbiguousTarget(final Project project, final Editor editor, int offset) {
final PsiElement[] candidates = suggestCandidates(project, editor, offset);
if (candidates.length == 0) {
return;
} else if (candidates.length == 1) {
Navigatable navigatable = EditSourceUtil.getDescriptor(candidates[0]);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(true);
}
} else {

View File

@@ -33,9 +33,8 @@ import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Splitter;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.pom.Navigatable;
@@ -142,7 +141,7 @@ public class InspectionResultsView extends JPanel implements OccurenceNavigator,
public void mouseClicked(MouseEvent e) {
if (!e.isPopupTrigger() && e.getClickCount() == 2) {
Navigatable navigatable = (Navigatable)getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(true);
}
}
@@ -153,7 +152,7 @@ public class InspectionResultsView extends JPanel implements OccurenceNavigator,
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
Navigatable navigatable = (Navigatable)getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}
@@ -202,7 +201,7 @@ public class InspectionResultsView extends JPanel implements OccurenceNavigator,
private void syncSource() {
if (isAutoScrollMode()) {
Navigatable navigatable = (Navigatable)getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}

View File

@@ -90,8 +90,9 @@ public class ToolbarPanel extends JPanel implements OccurenceNavigator {
if (aClass != null && "junit.framework.TestSuite".equals(aClass.getQualifiedName())) return;
}
final Navigatable descriptor = TestsUIUtil.getOpenFileDescriptor(test, model);
if (descriptor == null) return;
descriptor.navigate(false);
if (descriptor != null && descriptor.canNavigate()) {
descriptor.navigate(false);
}
}
});
}

View File

@@ -29,7 +29,9 @@ public abstract class BaseNavigateToSourceAction extends AnAction {
public void actionPerformed(AnActionEvent e) {
DataContext dataContext = e.getDataContext();
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
navigatable.navigate(myFocusEditor);
if (navigatable.canNavigate()) {
navigatable.navigate(myFocusEditor);
}
}

View File

@@ -30,7 +30,9 @@ abstract class OccurenceNavigatorActionBase extends AnAction {
return;
}
Navigatable descriptor = occurenceInfo.getNavigateable();
if (descriptor != null) descriptor.navigate(false);
if (descriptor != null && descriptor.canNavigate()) {
descriptor.navigate(false);
}
if(occurenceInfo.getOccurenceNumber()==-1||occurenceInfo.getOccurencesCount()==-1){
return;
}

View File

@@ -10,7 +10,6 @@ import com.intellij.ide.errorTreeView.impl.ErrorViewTextExporter;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.DataConstantsEx;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.vfs.VirtualFile;
@@ -22,7 +21,6 @@ import com.intellij.ui.content.Content;
import com.intellij.ui.content.MessageView;
import com.intellij.util.EditSourceOnDoubleClickHandler;
import com.intellij.util.ui.ErrorTreeView;
import com.intellij.util.ui.MessageCategory;
import com.intellij.util.ui.Tree;
import com.intellij.util.ui.tree.TreeUtil;
@@ -143,7 +141,7 @@ public class NewErrorTreeViewPanel extends JPanel implements DataProvider, Occur
public Object getData(String dataId) {
if (DataConstants.NAVIGATABLE.equals(dataId)) {
final NavigatableMessageElement selectedMessageElement = getSelectedMessageElement();
return (selectedMessageElement != null)? selectedMessageElement.getNavigatable() : null;
return selectedMessageElement != null? selectedMessageElement.getNavigatable() : null;
}
else if (DataConstants.HELP_ID.equals(dataId)) {
return myHelpId;
@@ -253,10 +251,13 @@ public class NewErrorTreeViewPanel extends JPanel implements DataProvider, Occur
if (element == null) {
return;
}
element.getNavigatable().navigate(focusEditor);
final Navigatable navigatable = element.getNavigatable();
if (navigatable.canNavigate()) {
navigatable.navigate(focusEditor);
}
}
public String getQualifiedName(final VirtualFile file) {
public static String getQualifiedName(final VirtualFile file) {
return file.getPresentableUrl();
}

View File

@@ -72,51 +72,51 @@ public abstract class AbstractProjectViewPSIPane extends AbstractProjectViewPane
TreeUtil.installActions(myTree);
myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
fireTreeChangeListener();
}
});
public void valueChanged(TreeSelectionEvent e) {
fireTreeChangeListener();
}
});
myTree.getModel().addTreeModelListener(new TreeModelListener() {
public void treeNodesChanged(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeNodesChanged(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeNodesInserted(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeNodesInserted(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeNodesRemoved(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeNodesRemoved(TreeModelEvent e) {
fireTreeChangeListener();
}
public void treeStructureChanged(TreeModelEvent e) {
fireTreeChangeListener();
}
});
public void treeStructureChanged(TreeModelEvent e) {
fireTreeChangeListener();
}
});
new MySpeedSearch(myTree);
myTree.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (KeyEvent.VK_ENTER == e.getKeyCode()) {
public void keyPressed(KeyEvent e) {
if (KeyEvent.VK_ENTER == e.getKeyCode()) {
DataContext dataContext = DataManager.getInstance().getDataContext(myTree);
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
navigatable.navigate(false);
}
}
else if (KeyEvent.VK_ESCAPE == e.getKeyCode()) {
if (e.isConsumed()) return;
CopyPasteManagerEx copyPasteManager = (CopyPasteManagerEx)CopyPasteManager.getInstance();
boolean[] isCopied = new boolean[1];
if (copyPasteManager.getElements(isCopied) != null && !isCopied[0]) {
copyPasteManager.clear();
e.consume();
}
}
}
});
DataContext dataContext = DataManager.getInstance().getDataContext(myTree);
Navigatable navigatable = (Navigatable)dataContext.getData(DataConstants.NAVIGATABLE);
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}
else if (KeyEvent.VK_ESCAPE == e.getKeyCode()) {
if (e.isConsumed()) return;
CopyPasteManagerEx copyPasteManager = (CopyPasteManagerEx)CopyPasteManager.getInstance();
boolean[] isCopied = new boolean[1];
if (copyPasteManager.getElements(isCopied) != null && !isCopied[0]) {
copyPasteManager.clear();
e.consume();
}
}
}
});
myExpandedElements.restoreExpandedElements(this, myProject);
}

View File

@@ -14,11 +14,11 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import javax.swing.*;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Collection;
public abstract class BasePsiNode <Type extends PsiElement> extends ProjectViewNode<Type> {
static private final Logger LOG = Logger.getInstance("#com.intellij.ide.projectView.impl.nodes.BasePsiNode");
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.projectView.impl.nodes.BasePsiNode");
private SmartPsiElementPointer mySmartPointer;
@@ -97,12 +97,12 @@ public abstract class BasePsiNode <Type extends PsiElement> extends ProjectViewN
public void navigate(boolean requestFocus) {
if (canNavigate()) {
((NavigationItem)getValue()).navigate(requestFocus);
((NavigationItem)getValue()).navigate(requestFocus);
}
}
public boolean canNavigate() {
return getValue() instanceof NavigationItem;
return getValue() instanceof NavigationItem && ((NavigationItem)getValue()).canNavigate();
}
public static VirtualFile getVirtualFile(PsiElement element) {

View File

@@ -178,7 +178,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) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}

View File

@@ -116,7 +116,7 @@ abstract class TodoPanel extends JPanel implements OccurenceNavigator, DataProvi
return;
}
Navigatable navigatable = (Navigatable)getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}

View File

@@ -12,7 +12,6 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.ui.LayeredIcon;
import com.intellij.util.IconUtil;
import com.intellij.util.containers.ArrayListSet;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
@@ -20,6 +19,7 @@ import javax.swing.event.ChangeListener;
import java.awt.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
/**
* Author: msk
@@ -67,7 +67,7 @@ public class EditorWindow {
myPanel.add(myTabbedPane.getComponent(), BorderLayout.CENTER);
}
private ArrayListSet<EditorWindow> getWindows() {
private Set<EditorWindow> getWindows() {
return myOwner.myWindows;
}
@@ -197,7 +197,7 @@ public class EditorWindow {
closeFile(files[i], false);
}
disposeTabs();
getManager().openFileImpl2(this, currentFile, focusEditor && (myOwner.getCurrentWindow() == this), null);
getManager().openFileImpl2(this, currentFile, focusEditor && myOwner.getCurrentWindow() == this, null);
}
}
finally {
@@ -526,13 +526,13 @@ public class EditorWindow {
public boolean inSplitter() {
check();
return (myPanel.getParent() instanceof Splitter);
return myPanel.getParent() instanceof Splitter;
}
public VirtualFile getSelectedFile() {
check();
final EditorWithProviderComposite editor = getSelectedEditor();
return (editor == null ? null : editor.getFile());
return editor == null ? null : editor.getFile();
}
public EditorWithProviderComposite findFileComposite(final VirtualFile file) {
@@ -595,7 +595,7 @@ public class EditorWindow {
if(!isFileOpen(file)){
throw new IllegalArgumentException("file is not open: " + file.getPath());
}
getManager().assertThread();
FileEditorManagerImpl.assertThread();
final EditorComposite editorComposite = findFileComposite(file);
return editorComposite.isPinned();
}
@@ -604,7 +604,7 @@ public class EditorWindow {
if(!isFileOpen(file)){
throw new IllegalArgumentException("file is not open: " + file.getPath());
}
getManager().assertThread();
FileEditorManagerImpl.assertThread();
final EditorComposite editorComposite = findFileComposite(file);
editorComposite.setPinned(pinned);
updateFileIcon(file);

View File

@@ -17,9 +17,7 @@ import org.jdom.Element;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.*;
import java.util.List;
@@ -399,7 +397,7 @@ public class EditorsSplitters extends JPanel {
//---------------------------------------------------------
protected final ArrayListSet<EditorWindow> myWindows = new ArrayListSet<EditorWindow>();
protected final Set<EditorWindow> myWindows = new ArrayListSet<EditorWindow>();
public EditorWithProviderComposite[] findEditorComposites(final VirtualFile file) {
final ArrayList<EditorWithProviderComposite> res = new ArrayList<EditorWithProviderComposite>();
@@ -410,7 +408,7 @@ public class EditorsSplitters extends JPanel {
res.add(fileComposite);
}
}
return (res.size() == 0 ? null : res.toArray(new EditorWithProviderComposite[res.size()]));
return res.size() == 0 ? null : res.toArray(new EditorWithProviderComposite[res.size()]);
}
public EditorWindow[] findWindows(final VirtualFile file) {
@@ -421,7 +419,7 @@ public class EditorsSplitters extends JPanel {
res.add(window);
}
}
return (res.size() == 0 ? null : res.toArray(new EditorWindow[res.size()]));
return res.size() == 0 ? null : res.toArray(new EditorWindow[res.size()]);
}
public EditorWindow[] findWindowsWithCurrent(final VirtualFile file) {
@@ -432,7 +430,7 @@ public class EditorsSplitters extends JPanel {
res.add(window);
}
}
return (res.size() == 0 ? null : res.toArray(new EditorWindow[res.size()]));
return res.size() == 0 ? null : res.toArray(new EditorWindow[res.size()]);
}
public EditorWindow [] getWindows() {
@@ -458,17 +456,15 @@ public class EditorsSplitters extends JPanel {
}
}
}
};
}
// get root component and traverse splitters tree:
{
if (getComponentCount() != 0) {
final Component comp = getComponent(0);
LOG.assertTrue(comp instanceof JPanel);
final JPanel panel = (JPanel)comp;
if (panel.getComponentCount() != 0) {
new Inner().collect (panel);
}
if (getComponentCount() != 0) {
final Component comp = getComponent(0);
LOG.assertTrue(comp instanceof JPanel);
final JPanel panel = (JPanel)comp;
if (panel.getComponentCount() != 0) {
new Inner().collect (panel);
}
}
@@ -498,7 +494,7 @@ public class EditorsSplitters extends JPanel {
if (oldActiveWindow != newActiveWindow) {
setCurrentWindow(newActiveWindow, false);
getManager().updateFileName(newActiveWindow.getSelectedFile());
getManager().fireSelectionChanged((oldActiveWindow == null ? null : oldActiveWindow.getSelectedEditor()), newActiveWindow.getSelectedEditor());
getManager().fireSelectionChanged(oldActiveWindow == null ? null : oldActiveWindow.getSelectedEditor(), newActiveWindow.getSelectedEditor());
}
}
}

View File

@@ -12,7 +12,6 @@ import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.*;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.*;
import com.intellij.psi.PsiManager;
@@ -20,6 +19,7 @@ import com.intellij.psi.PsiNameHelper;
import com.intellij.psi.impl.PsiManagerConfiguration;
import com.intellij.util.EventDispatcher;
import junit.framework.Assert;
import com.intellij.util.containers.HashMap;
import java.util.*;
@@ -33,8 +33,8 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone
private boolean myInitialized = false;
private boolean myDisposed = false;
private com.intellij.util.containers.HashMap<VirtualFile, DirectoryInfo> myDirToInfoMap = new com.intellij.util.containers.HashMap<VirtualFile, DirectoryInfo>();
private com.intellij.util.containers.HashMap<String, VirtualFile[]> myPackageNameToDirsMap = new com.intellij.util.containers.HashMap<String, VirtualFile[]>();
private Map<VirtualFile, DirectoryInfo> myDirToInfoMap = new HashMap<VirtualFile, DirectoryInfo>();
private Map<String, VirtualFile[]> myPackageNameToDirsMap = new HashMap<String, VirtualFile[]>();
private VirtualFileListener myVirtualFileListener;
private FileTypeListener myFileTypeListener;
@@ -88,17 +88,17 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone
Assert.assertTrue(myInitialized);
Assert.assertTrue(!myDisposed);
com.intellij.util.containers.HashMap<VirtualFile, DirectoryInfo> oldDirToInfoMap = myDirToInfoMap;
myDirToInfoMap = new com.intellij.util.containers.HashMap<VirtualFile, DirectoryInfo>();
Map<VirtualFile, DirectoryInfo> oldDirToInfoMap = myDirToInfoMap;
myDirToInfoMap = new HashMap<VirtualFile, DirectoryInfo>();
com.intellij.util.containers.HashMap<String, VirtualFile[]> oldPackageNameToDirsMap = myPackageNameToDirsMap;
myPackageNameToDirsMap = new com.intellij.util.containers.HashMap<String, VirtualFile[]>();
Map<String, VirtualFile[]> oldPackageNameToDirsMap = myPackageNameToDirsMap;
myPackageNameToDirsMap = new HashMap<String, VirtualFile[]>();
_initialize(reverseAllSets, null);
if (LAZY_MODE) {
com.intellij.util.containers.HashMap<VirtualFile, DirectoryInfo> newDirToInfoMap = myDirToInfoMap;
com.intellij.util.containers.HashMap<String, VirtualFile[]> newPackageNameToDirsMap = myPackageNameToDirsMap;
Map<VirtualFile, DirectoryInfo> newDirToInfoMap = myDirToInfoMap;
Map<String, VirtualFile[]> newPackageNameToDirsMap = myPackageNameToDirsMap;
myDirToInfoMap = oldDirToInfoMap;
myPackageNameToDirsMap = oldPackageNameToDirsMap;
@@ -391,7 +391,7 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone
}
}
private void putForFileAndAllAncestors(Map<VirtualFile, Set<VirtualFile>> map, VirtualFile file, VirtualFile value) {
private static void putForFileAndAllAncestors(Map<VirtualFile, Set<VirtualFile>> map, VirtualFile file, VirtualFile value) {
while (true) {
Set<VirtualFile> set = map.get(file);
if (set == null) {
@@ -792,7 +792,7 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone
}
private class MyVirtualFileListener implements VirtualFileListener {
private final Key FILES_TO_RELEASE_KEY = Key.create("DirectoryIndexImpl.MyVirtualFileListener.FILES_TO_RELEASE_KEY");
private final Key<List<VirtualFile>> FILES_TO_RELEASE_KEY = Key.create("DirectoryIndexImpl.MyVirtualFileListener.FILES_TO_RELEASE_KEY");
public void fileCreated(VirtualFileEvent event) {
VirtualFile file = event.getFile();
@@ -857,7 +857,7 @@ public class DirectoryIndexImpl extends DirectoryIndex implements ProjectCompone
public void fileDeleted(VirtualFileEvent event) {
VirtualFile file = event.getFile();
ArrayList<VirtualFile> list = (ArrayList<VirtualFile>)file.getUserData(FILES_TO_RELEASE_KEY);
List<VirtualFile> list = file.getUserData(FILES_TO_RELEASE_KEY);
if (list == null) return;
for (int i = 0; i < list.size(); i++) {

View File

@@ -12,7 +12,10 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.packageDependencies.*;
import com.intellij.packageDependencies.DependenciesBuilder;
import com.intellij.packageDependencies.DependencyRule;
import com.intellij.packageDependencies.DependencyUISettings;
import com.intellij.packageDependencies.DependencyValidationManager;
import com.intellij.packageDependencies.actions.AnalyzeDependenciesHandler;
import com.intellij.packageDependencies.actions.BackwardDependenciesHandler;
import com.intellij.pom.Navigatable;
@@ -20,21 +23,20 @@ import com.intellij.psi.*;
import com.intellij.ui.*;
import com.intellij.ui.content.Content;
import com.intellij.util.Icons;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ui.Tree;
import com.intellij.util.ui.tree.TreeUtil;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.tree.*;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
import java.util.List;
public class DependenciesPanel extends JPanel {
private Map<PsiFile, Set<PsiFile>> myDependencies;
@@ -217,7 +219,7 @@ public class DependenciesPanel extends JPanel {
public void mouseClicked(MouseEvent e) {
if (e.isPopupTrigger() && e.getClickCount() == 2) {
Navigatable navigatable = (Navigatable)tree.getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(true);
}
}

View File

@@ -113,7 +113,7 @@ public abstract class PsiElementBase extends ElementBase implements PsiElement {
}
public boolean canNavigate() {
return true;
return EditSourceUtil.getDescriptor(getNavigationElement()) != null;
}
public FileStatus getFileStatus() {

View File

@@ -222,7 +222,7 @@ public abstract class CompositePsiElement extends CompositeElement implements Ps
}
public boolean canNavigate() {
return true;
return EditSourceUtil.getDescriptor(getNavigationElement()) != null;
}
public FileStatus getFileStatus() {

View File

@@ -28,7 +28,7 @@ public class SelectInEditorHandler {
public static void selectInEditor(final JComponent component, final Project project) {
final Navigatable navigatable = (Navigatable)DataManager.getInstance().getDataContext(component).getData(DataConstants.NAVIGATABLE);
if (navigatable != null) {
if (navigatable != null && navigatable.canNavigate()) {
navigatable.navigate(false);
}
}

View File

@@ -13,7 +13,7 @@ import java.util.Map;
import java.util.Set;
public final class SoftValueHashMap<K,V> implements Map<K,V>{
private THashMap myMap;
private THashMap<K,MyReference<K,V>> myMap;
private ReferenceQueue<MyReference<K,V>> myQueue = new ReferenceQueue<MyReference<K,V>>();
private static class MyReference<K,V> extends SoftReference<V> {
@@ -25,7 +25,7 @@ public final class SoftValueHashMap<K,V> implements Map<K,V>{
}
public SoftValueHashMap() {
myMap = new THashMap();
myMap = new THashMap<K, MyReference<K,V>>();
}
private void processQueue() {
@@ -46,20 +46,20 @@ public final class SoftValueHashMap<K,V> implements Map<K,V>{
}
public V get(Object key) {
MyReference<K,V> ref = (MyReference<K,V>)myMap.get(key);
MyReference<K,V> ref = myMap.get(key);
if (ref == null) return null;
return ref.get();
}
public V put(K key, V value) {
processQueue();
MyReference<K,V> oldRef = (MyReference<K,V>)myMap.put(key, new MyReference<K,V>(key, value, myQueue));
MyReference<K,V> oldRef = myMap.put(key, new MyReference<K,V>(key, value, myQueue));
return oldRef != null ? (V)oldRef.get() : null;
}
public V remove(Object key) {
processQueue();
MyReference<K,V> ref = (MyReference<K,V>)myMap.remove(key);
MyReference<K,V> ref = myMap.remove(key);
return ref != null ? ref.get() : null;
}