Go to class: correctly show location for class from composite Flex SDK

This commit is contained in:
kirill.safonov
2012-02-09 22:32:31 +04:00
parent d6fbbdfe30
commit 92bec8c9f1
10 changed files with 34 additions and 19 deletions
@@ -261,8 +261,8 @@ public class StaticImportMethodFix implements IntentionAction {
protected ListCellRenderer getListElementRenderer() {
return new MethodCellRenderer(true, PsiFormatUtilBase.SHOW_NAME){
@Override
protected DefaultListCellRenderer getRightCellRenderer() {
final DefaultListCellRenderer moduleRenderer = super.getRightCellRenderer();
protected DefaultListCellRenderer getRightCellRenderer(final Object value) {
final DefaultListCellRenderer moduleRenderer = super.getRightCellRenderer(value);
return new DefaultListCellRenderer(){
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
@@ -125,7 +125,7 @@ public class GotoRelatedFileAction extends AnAction {
}
@Override
protected DefaultListCellRenderer getRightCellRenderer() {
protected DefaultListCellRenderer getRightCellRenderer(Object value) {
return null;
}
@@ -16,7 +16,7 @@
package com.intellij.ide.util;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.extensions.ExtensionPointName;
import javax.swing.*;
@@ -24,12 +24,24 @@ import javax.swing.*;
* @author yole
*/
public abstract class ModuleRendererFactory {
public static ModuleRendererFactory getInstance() {
return ServiceManager.getService(ModuleRendererFactory.class);
private static ExtensionPointName<ModuleRendererFactory> EP_NAME = ExtensionPointName.create("com.intellij.moduleRendererFactory");
public static ModuleRendererFactory findInstance(Object element) {
for (ModuleRendererFactory factory : EP_NAME.getExtensions()) {
if (factory.handles(element)) {
return factory;
}
}
assert false : "No factory found for " + element;
return null;
}
protected boolean handles(final Object element) {
return true;
}
public abstract DefaultListCellRenderer getModuleRenderer();
public boolean rendersLocationString() {
return false;
}
@@ -66,7 +66,7 @@ public class NavigationItemListCellRenderer extends OpaquePanel implements ListC
removeAll();
final boolean hasRightRenderer = UISettings.getInstance().SHOW_ICONS_IN_QUICK_NAVIGATION;
final ModuleRendererFactory factory = ModuleRendererFactory.getInstance();
final ModuleRendererFactory factory = ModuleRendererFactory.findInstance(value);
final LeftRenderer left = new LeftRenderer(!hasRightRenderer || !factory.rendersLocationString(), myMatcher);
final Component leftCellRendererComponent = left.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
@@ -144,7 +144,7 @@ public abstract class PsiElementListCellRenderer<T extends PsiElement> extends J
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
removeAll();
DefaultListCellRenderer rightRenderer = getRightCellRenderer();
DefaultListCellRenderer rightRenderer = getRightCellRenderer(value);
ListCellRenderer leftRenderer = new LeftRenderer(null, myMatcher);
final Component leftCellRendererComponent = leftRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (rightRenderer != null) {
@@ -176,9 +176,9 @@ public abstract class PsiElementListCellRenderer<T extends PsiElement> extends J
}
@Nullable
protected DefaultListCellRenderer getRightCellRenderer() {
protected DefaultListCellRenderer getRightCellRenderer(final Object value) {
if (UISettings.getInstance().SHOW_ICONS_IN_QUICK_NAVIGATION) {
final DefaultListCellRenderer renderer = ModuleRendererFactory.getInstance().getModuleRenderer();
final DefaultListCellRenderer renderer = ModuleRendererFactory.findInstance(value).getModuleRenderer();
if (renderer instanceof PlatformModuleRendererFactory.PlatformModuleRenderer) {
// it won't display any new information
return null;
@@ -114,7 +114,7 @@ public class PsiElementModuleRenderer extends DefaultListCellRenderer{
setIcon(LIB_ICON);
for (OrderEntry order : fileIndex.getOrderEntriesForFile(vFile)) {
if (order instanceof LibraryOrderEntry || order instanceof JdkOrderEntry) {
myText = order.getPresentableName();
myText = getPresentableName(order, vFile);
break;
}
}
@@ -125,4 +125,8 @@ public class PsiElementModuleRenderer extends DefaultListCellRenderer{
myText += " (" + jar.getName() + ")";
}
}
protected String getPresentableName(final OrderEntry order, final VirtualFile vFile) {
return order.getPresentableName();
}
}
@@ -109,8 +109,8 @@ public class GotoFileCellRenderer extends PsiElementListCellRenderer<PsiFile> {
}
@Override
protected DefaultListCellRenderer getRightCellRenderer() {
final DefaultListCellRenderer rightRenderer = super.getRightCellRenderer();
protected DefaultListCellRenderer getRightCellRenderer(final Object value) {
final DefaultListCellRenderer rightRenderer = super.getRightCellRenderer(value);
if (rightRenderer instanceof PlatformModuleRendererFactory.PlatformModuleRenderer) {
// that renderer will display file path, but we're showing it ourselves - no need to show twice
return null;
@@ -532,4 +532,6 @@
<extensionPoint name="codeBlockProvider"
beanClass="com.intellij.lang.LanguageExtensionPoint"/>
<extensionPoint name="moduleRendererFactory" interface="com.intellij.ide.util.ModuleRendererFactory"/>
</extensionPoints>
@@ -60,8 +60,7 @@
<projectService serviceInterface="com.intellij.platform.ProjectBaseDirectory"
serviceImplementation="com.intellij.platform.ProjectBaseDirectory"/>
<applicationService serviceInterface="com.intellij.ide.util.ModuleRendererFactory"
serviceImplementation="com.intellij.ide.util.PlatformModuleRendererFactory"/>
<moduleRendererFactory implementation="com.intellij.ide.util.PlatformModuleRendererFactory" order="last"/>
<projectService serviceInterface="com.intellij.lang.injection.InjectedLanguageManager"
serviceImplementation="com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl"/>
<projectService serviceInterface="com.intellij.openapi.vcs.changes.patch.PatchBaseDirectoryDetector"
+1 -3
View File
@@ -138,9 +138,6 @@
<applicationService serviceInterface="com.intellij.facet.ui.FacetEditorsFactory"
serviceImplementation="com.intellij.facet.impl.ui.FacetEditorsFactoryImpl"/>
<applicationService serviceInterface="com.intellij.ide.util.ModuleRendererFactory"
serviceImplementation="com.intellij.ide.util.DefaultModuleRendererFactory"/>
<applicationService serviceInterface="com.intellij.openapi.projectRoots.ProjectJdkTable"
serviceImplementation="com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl"/>
<exportable serviceInterface="com.intellij.openapi.projectRoots.ProjectJdkTable"/>
@@ -349,6 +346,7 @@
serviceImplementation="com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureProblemsSettingsImpl"/>
<applicationService serviceInterface="com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureProblemsSettings"
serviceImplementation="com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.GlobalProjectStructureProblemsSettings"/>
<moduleRendererFactory implementation="com.intellij.ide.util.DefaultModuleRendererFactory" order="last"/>
</extensions>
<xi:include href="/META-INF/xdebugger.xml" xpointer="xpointer(/root/*)"/>