diff options
Diffstat (limited to 'platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java')
-rw-r--r-- | platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java b/platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java index 4208c8517432..b28dad40f094 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java @@ -58,9 +58,7 @@ public class ToolsImpl implements Tools { private boolean myEnabled; public ToolsImpl(@NotNull InspectionToolWrapper toolWrapper, @NotNull HighlightDisplayLevel level, boolean enabled, boolean enabledByDefault) { - myShortName = toolWrapper.getShortName(); - myEnabled = enabled; - myDefaultState = new ScopeToolState(CustomScopesProviderEx.getAllScope(), toolWrapper, enabledByDefault, level); + this(toolWrapper.getShortName(), new ScopeToolState(CustomScopesProviderEx.getAllScope(), toolWrapper, enabledByDefault, level), null, enabled); } @TestOnly @@ -68,6 +66,13 @@ public class ToolsImpl implements Tools { this(toolWrapper, level, enabled, enabled); } + private ToolsImpl(@NotNull String shortName, @NotNull ScopeToolState defaultState, @Nullable List<ScopeToolState> tools, boolean enabled) { + myShortName = shortName; + myDefaultState = defaultState; + myTools = tools; + myEnabled = enabled; + } + @NotNull public ScopeToolState addTool(@NotNull NamedScope scope, @NotNull InspectionToolWrapper toolWrapper, boolean enabled, @NotNull HighlightDisplayLevel level) { return insertTool(scope, toolWrapper, enabled, level, myTools != null ? myTools.size() : 0); @@ -78,13 +83,23 @@ public class ToolsImpl implements Tools { return insertTool(scope, toolWrapper, enabled, level, 0); } + public ScopeToolState addTool(@NotNull String scopeName, @NotNull InspectionToolWrapper toolWrapper, boolean enabled, @NotNull HighlightDisplayLevel level) { + return insertTool(new ScopeToolState(scopeName, toolWrapper, enabled, level), myTools != null ? myTools.size() : 0); + } + @NotNull private ScopeToolState insertTool(@NotNull NamedScope scope, @NotNull InspectionToolWrapper toolWrapper, boolean enabled, @NotNull HighlightDisplayLevel level, int idx) { + return insertTool(new ScopeToolState(scope, toolWrapper, enabled, level), idx); + } + + @NotNull + private ScopeToolState insertTool(@NotNull final ScopeToolState scopeToolState, final int idx) { if (myTools == null) { myTools = new ArrayList<ScopeToolState>(); - setEnabled(true); + if (scopeToolState.isEnabled()) { + setEnabled(true); + } } - final ScopeToolState scopeToolState = new ScopeToolState(scope, toolWrapper, enabled, level); myTools.add(idx, scopeToolState); return scopeToolState; } @@ -166,7 +181,6 @@ public class ToolsImpl implements Tools { myDefaultState.setLevel(level); final String enabled = toolElement.getAttributeValue(ENABLED_ATTRIBUTE); final boolean isEnabled = enabled != null && Boolean.parseBoolean(enabled); - myEnabled = isEnabled; final String enabledTool = toolElement.getAttributeValue(ENABLED_BY_DEFAULT_ATTRIBUTE); myDefaultState.setEnabled(enabledTool != null ? Boolean.parseBoolean(enabledTool) : isEnabled); @@ -208,16 +222,8 @@ public class ToolsImpl implements Tools { if (toolElement.getAttributes().size() > 4 || toolElement.getChildren().size() > scopeElements.size()) { toolWrapper.getTool().readSettings(toolElement); } - } - public ScopeToolState addTool(@NotNull String scopeName, @NotNull InspectionToolWrapper toolWrapper, boolean enabled, @NotNull HighlightDisplayLevel level) { - if (myTools == null) { - myTools = new ArrayList<ScopeToolState>(); - setEnabled(true); - } - final ScopeToolState scopeToolState = new ScopeToolState(scopeName, toolWrapper, enabled, level); - myTools.add(scopeToolState); - return scopeToolState; + myEnabled = isEnabled; } @NotNull @@ -252,6 +258,21 @@ public class ToolsImpl implements Tools { } } + public void removeScope(final NamedScope scope) { + if (myTools != null) { + for (final ScopeToolState tool : myTools) { + if (Comparing.equal(tool.getScopeName(), scope.getName())) { + myTools.remove(tool); + break; + } + } + if (myTools.isEmpty()) { + myTools = null; + setEnabled(myDefaultState.isEnabled()); + } + } + } + public void removeAllScopes() { myTools = null; } |