inspections: disable whole tool if tool is disabled for all scopes and disabled for... clion/162.844.43
authorDmitry Batkovich <dmitry.batkovich@jetbrains.com>
Mon, 22 Aug 2016 13:27:50 +0000 (16:27 +0300)
committerDmitry Batkovich <dmitry.batkovich@jetbrains.com>
Mon, 22 Aug 2016 13:28:21 +0000 (16:28 +0300)
platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java
platform/analysis-impl/src/com/intellij/codeInspection/ex/ToolsImpl.java

index 02b77c327c3ad26a227f74e778d1a888dc934a2a..ce553df031f0c6b4cf86754719f1da55f87e7296 100644 (file)
@@ -501,7 +501,7 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
 
   public void disableToolByDefault(@NotNull Collection<String> toolIds, @Nullable Project project) {
     for (String toolId : toolIds) {
-      getToolDefaultState(toolId, project).setEnabled(false);
+      getTools(toolId, project).setDefaultEnabled(false);
     }
   }
 
@@ -512,7 +512,7 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
 
   public void enableToolsByDefault(@NotNull List<String> toolIds, Project project) {
     for (final String toolId : toolIds) {
-      getToolDefaultState(toolId, project).setEnabled(true);
+      getTools(toolId, project).setDefaultEnabled(true);
     }
   }
 
index 63f4d6b5f3487ac7b6eeafe289ffc70f23dac377..fea27002a77a493440cc6eb67c8e3cb2ab19395e 100644 (file)
@@ -262,6 +262,16 @@ public class ToolsImpl implements Tools {
     return myDefaultState;
   }
 
+  public void setDefaultEnabled(boolean isEnabled) {
+    getDefaultState().setEnabled(isEnabled);
+    if (isEnabled) {
+      setEnabled(true);
+    }
+    else {
+      disableWholeToolIfCan();
+    }
+  }
+
   public void removeScope(int scopeIdx) {
     if (myTools != null && scopeIdx >= 0 && myTools.size() > scopeIdx) {
       myTools.remove(scopeIdx);
@@ -409,6 +419,7 @@ public class ToolsImpl implements Tools {
           state.setEnabled(false);
         }
       }
+      disableWholeToolIfCan();
     }
   }
 
@@ -520,4 +531,18 @@ public class ToolsImpl implements Tools {
   public List<ScopeToolState> getNonDefaultTools() {
     return myTools;
   }
+
+  private void disableWholeToolIfCan() {
+    if (myDefaultState.isEnabled()) {
+      return;
+    }
+    if (myTools != null) {
+      for (ScopeToolState tool : myTools) {
+        if (tool.isEnabled()) {
+          return;
+        }
+      }
+    }
+    setEnabled(false);
+  }
 }
\ No newline at end of file