summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/ScopesChooser.java
diff options
context:
space:
mode:
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.java60
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) {