From 7fefe6ea049f1fc115b800ea9909360d8cf11929 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Fri, 17 Nov 2017 15:28:39 +0300 Subject: [PATCH] inspection settings simplification --- .../ui/SingleInspectionProfilePanel.java | 46 ++++--------------- .../InspectionConfigTreeNode.java | 28 +++++++++++ .../InspectionsConfigTreeTable.java | 2 - 3 files changed, 37 insertions(+), 39 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java index 7eaf1f154bd8..8ef7b317c22f 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/SingleInspectionProfilePanel.java @@ -44,7 +44,6 @@ import com.intellij.ui.components.JBLabel; import com.intellij.util.Alarm; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.Queue; import com.intellij.util.ui.JBInsets; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; @@ -69,6 +68,7 @@ import java.io.StringReader; import java.util.*; import java.util.List; +import static com.intellij.profile.codeInspection.ui.inspectionsTree.InspectionConfigTreeNode.updateUpHierarchy; import static com.intellij.util.containers.ContainerUtil.exists; public class SingleInspectionProfilePanel extends JPanel { @@ -91,7 +91,7 @@ public class SingleInspectionProfilePanel extends JPanel { private final InspectionsFilter myInspectionsFilter = new InspectionsFilter() { @Override protected void filterChanged() { - filterTree(myProfileFilter.getFilter()); + filterTree(); } }; private boolean myModified; @@ -179,13 +179,6 @@ public class SingleInspectionProfilePanel extends JPanel { return StringUtil.capitalizeWords(severity.getName().toLowerCase(Locale.US), true); } - private static void updateUpHierarchy(final InspectionConfigTreeNode parent) { - if (parent != null) { - parent.dropCache(); - updateUpHierarchy((InspectionConfigTreeNode)parent.getParent()); - } - } - private static boolean isDescriptorAccepted(Descriptor descriptor, @NonNls String filter, final boolean forceInclude, @@ -360,8 +353,7 @@ public class SingleInspectionProfilePanel extends JPanel { if (node.isProperSetting() != properSetting) { myAlarm.cancelAllRequests(); myAlarm.addRequest(() -> myTreeTable.repaint(), 300); - node.dropCache(); - updateUpHierarchy((InspectionConfigTreeNode)node.getParent()); + updateUpHierarchy(node); } } } @@ -404,7 +396,8 @@ public class SingleInspectionProfilePanel extends JPanel { myProfileFilter.setFilter(filter); } - private void filterTree(@Nullable String filter) { + private void filterTree() { + String filter = myProfileFilter != null ? myProfileFilter.getFilter() : null; if (myTreeTable != null) { getExpandedNodes(myProfile).saveVisibleState(myTreeTable.getTree()); fillTreeData(filter, true); @@ -416,10 +409,6 @@ public class SingleInspectionProfilePanel extends JPanel { } } - private void filterTree() { - filterTree(myProfileFilter != null ? myProfileFilter.getFilter() : null); - } - private void reloadModel() { try { myIsInRestore = true; @@ -524,7 +513,7 @@ public class SingleInspectionProfilePanel extends JPanel { myTreeTable = InspectionsConfigTreeTable.create(new InspectionsConfigTreeTable.InspectionsConfigTreeTableSettings(myRoot, myProjectProfileManager.getProject()) { @Override protected void onChanged(final InspectionConfigTreeNode node) { - updateUpHierarchy((InspectionConfigTreeNode)node.getParent()); + updateUpHierarchy(node); } @Override @@ -687,7 +676,6 @@ public class SingleInspectionProfilePanel extends JPanel { continue; } getGroupNode(myRoot, toolDescriptors.getDefaultDescriptor().getGroup()).add(node); - myRoot.dropCache(); } if (filter != null && forceInclude && myRoot.getChildCount() == 0) { final Set filters = SearchableOptionsRegistrar.getInstance().getProcessedWords(filter); @@ -856,8 +844,6 @@ public class SingleInspectionProfilePanel extends JPanel { protected void onScopeRemoved(final int scopesCount) { updateRecursively(nodes, scopesCount == 1); } - - }); final ToolbarDecorator wrappedTable = ToolbarDecorator.createDecorator(scopesAndScopesAndSeveritiesTable).disableUpDownActions().setRemoveActionUpdater( @@ -896,22 +882,8 @@ public class SingleInspectionProfilePanel extends JPanel { myOptionsPanel.repaint(); } - private void updateRecursively(List nodes, boolean updateOptionsAndDescriptionPanel) { - Queue q = new Queue<>(nodes.size()); - Set alreadyUpdated = new THashSet<>(); - for (InspectionConfigTreeNode node : nodes) { - q.addLast(node); - } - while (!q.isEmpty()) { - final InspectionConfigTreeNode inspectionConfigTreeNode = q.pullFirst(); - if (!alreadyUpdated.add(inspectionConfigTreeNode)) continue; - inspectionConfigTreeNode.dropCache(); - final TreeNode parent = inspectionConfigTreeNode.getParent(); - if (parent != null && parent.getParent() != null) { - q.addLast((InspectionConfigTreeNode)parent); - } - } - + private void updateRecursively(List nodes, boolean updateOptionsAndDescriptionPanel) { + updateUpHierarchy(nodes); myTreeTable.repaint(); if (updateOptionsAndDescriptionPanel) { updateOptionsAndDescriptionPanel(); @@ -1214,7 +1186,7 @@ public class SingleInspectionProfilePanel extends JPanel { @Override public void filter() { - filterTree(getFilter()); + filterTree(); } @Override diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionConfigTreeNode.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionConfigTreeNode.java index 62e1c672254b..a082b0d06d49 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionConfigTreeNode.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionConfigTreeNode.java @@ -6,10 +6,16 @@ import com.intellij.codeInspection.ex.Descriptor; import com.intellij.openapi.util.ClearableLazyValue; import com.intellij.openapi.util.Getter; import com.intellij.profile.codeInspection.ui.ToolDescriptors; +import com.intellij.util.containers.Queue; +import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeNode; +import java.util.Collections; +import java.util.List; +import java.util.Set; import java.util.stream.IntStream; public abstract class InspectionConfigTreeNode extends DefaultMutableTreeNode { @@ -107,4 +113,26 @@ public abstract class InspectionConfigTreeNode extends DefaultMutableTreeNode { } return super.toString(); } + + public static void updateUpHierarchy(@NotNull InspectionConfigTreeNode node) { + updateUpHierarchy(Collections.singletonList(node)); + } + + public static void updateUpHierarchy(List nodes) { + Queue q = new Queue<>(nodes.size()); + Set alreadyUpdated = new THashSet<>(); + for (InspectionConfigTreeNode node : nodes) { + q.addLast(node); + } + while (!q.isEmpty()) { + final InspectionConfigTreeNode inspectionConfigTreeNode = q.pullFirst(); + if (!alreadyUpdated.add(inspectionConfigTreeNode)) continue; + inspectionConfigTreeNode.dropCache(); + final TreeNode parent = inspectionConfigTreeNode.getParent(); + if (parent != null && parent.getParent() != null) { + q.addLast((InspectionConfigTreeNode)parent); + } + } + + } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java index a3c71e5e21cd..585080f7f566 100644 --- a/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java +++ b/platform/lang-impl/src/com/intellij/profile/codeInspection/ui/inspectionsTree/InspectionsConfigTreeTable.java @@ -304,7 +304,6 @@ public class InspectionsConfigTreeTable extends TreeTable { if (profile == null) return; for (final InspectionConfigTreeNode.Tool aNode : InspectionsAggregationUtil.getInspectionsNodes((InspectionConfigTreeNode)node)) { setToolEnabled(doEnable, profile, aNode.getKey().toString(), mySettings.getProject()); - aNode.dropCache(); mySettings.onChanged(aNode); } updateRightPanel(); @@ -342,7 +341,6 @@ public class InspectionsConfigTreeTable extends TreeTable { } for (InspectionConfigTreeNode node : nodes) { - node.dropCache(); mySettings.onChanged(node); }