diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java index 4932e7ff5ca9..fde3b141084d 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java @@ -22,13 +22,16 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.ex.ComboBoxAction; import com.intellij.openapi.project.Project; +import com.intellij.psi.search.scope.NonProjectFilesScope; import com.intellij.psi.search.scope.packageSet.CustomScopesProviderEx; import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.ArrayList; +import java.util.Set; import java.util.List; import java.util.Collections; @@ -36,22 +39,28 @@ import java.util.Collections; * @author Dmitry Batkovich */ public abstract class ScopesChooser extends ComboBoxAction { + public static final String TITLE = "Select a scope to change its settings"; private final List<Descriptor> myDefaultDescriptors; private final InspectionProfileImpl myInspectionProfile; private final Project myProject; + private final Set<String> myExcludedScopeNames; - public ScopesChooser(final List<Descriptor> defaultDescriptors, final InspectionProfileImpl inspectionProfile, final Project project) { + public ScopesChooser(final List<Descriptor> defaultDescriptors, + final InspectionProfileImpl inspectionProfile, + final Project project, + final String[] excludedScopeNames) { myDefaultDescriptors = defaultDescriptors; myInspectionProfile = inspectionProfile; myProject = project; - setPopupTitle("Select a scope to change its settings"); + myExcludedScopeNames = excludedScopeNames == null ? Collections.<String>emptySet() : ContainerUtil.newHashSet(excludedScopeNames); + setPopupTitle(TITLE); getTemplatePresentation().setText("In All Scopes"); } @NotNull @Override - protected DefaultActionGroup createPopupActionGroup(final JComponent button) { + public DefaultActionGroup createPopupActionGroup(final JComponent component) { final DefaultActionGroup group = new DefaultActionGroup(); final List<NamedScope> predefinedScopes = new ArrayList<NamedScope>(); @@ -61,30 +70,47 @@ public abstract class ScopesChooser extends ComboBoxAction { predefinedScopes.addAll(holder.getPredefinedScopes()); } predefinedScopes.remove(CustomScopesProviderEx.getAllScope()); - fillActionGroup(group, predefinedScopes, myDefaultDescriptors, myInspectionProfile); + for (NamedScope predefinedScope : predefinedScopes) { + if (predefinedScope instanceof NonProjectFilesScope) { + predefinedScopes.remove(predefinedScope); + break; + } + } + + fillActionGroup(group, predefinedScopes, myDefaultDescriptors, myInspectionProfile, myExcludedScopeNames); group.addSeparator(); - fillActionGroup(group, customScopes, myDefaultDescriptors, myInspectionProfile); + fillActionGroup(group, customScopes, myDefaultDescriptors, myInspectionProfile, myExcludedScopeNames); - //TODO edit scopes order - //group.addSeparator(); - //group.add(new AnAction("Edit Scopes Order...") { - // @Override - // public void actionPerformed(final AnActionEvent e) { - // - // } - //}); + group.addSeparator(); + group.add(new AnAction("Edit Scopes Order...") { + @Override + public void actionPerformed(final AnActionEvent e) { + final ScopesOrderDialog dlg = new ScopesOrderDialog(component, myInspectionProfile, myProject); + dlg.show(); + if (dlg.isOK()) { + onScopesOrderChanged(); + } + } + }); return group; } + protected abstract void onScopesOrderChanged(); + protected abstract void onScopeAdded(); private void fillActionGroup(final DefaultActionGroup group, - final List<NamedScope> scopes, - final List<Descriptor> defaultDescriptors, - final InspectionProfileImpl inspectionProfile) { + final List<NamedScope> scopes, + final List<Descriptor> defaultDescriptors, + final InspectionProfileImpl inspectionProfile, + final Set<String> excludedScopeNames) { for (final NamedScope scope : scopes) { - group.add(new AnAction(scope.getName()) { + final String scopeName = scope.getName(); + if (excludedScopeNames.contains(scopeName)) { + continue; + } + group.add(new AnAction(scopeName) { @Override public void actionPerformed(final AnActionEvent e) { for (final Descriptor defaultDescriptor : defaultDescriptors) { |