From bcdcfe6991f19bde7812c3f99c807be96ece6e01 Mon Sep 17 00:00:00 2001 From: Olesya Smirnova Date: Thu, 20 Jan 2005 22:49:01 +0300 Subject: [PATCH] JavaAdapter (reverting optimization) --- .../ide/util/treeView/smartTree/Filter.java | 7 ++++++ .../impl/StructureViewFactoryImpl.java | 22 +++++++++---------- .../structureView/impl/java/FieldsFilter.java | 4 ++++ .../impl/java/InheritedMembersFilter.java | 4 ++++ .../impl/java/PublicElementsFilter.java | 4 ++++ .../newStructureView/TreeActionWrapper.java | 4 ++-- .../newStructureView/TreeModelWrapper.java | 8 +++++++ 7 files changed, 40 insertions(+), 13 deletions(-) diff --git a/openapi/src/com/intellij/ide/util/treeView/smartTree/Filter.java b/openapi/src/com/intellij/ide/util/treeView/smartTree/Filter.java index 7efa5ccb870a..5e74d5ddd65b 100644 --- a/openapi/src/com/intellij/ide/util/treeView/smartTree/Filter.java +++ b/openapi/src/com/intellij/ide/util/treeView/smartTree/Filter.java @@ -2,4 +2,11 @@ package com.intellij.ide.util.treeView.smartTree; public interface Filter extends TreeAction{ boolean isVisible(TreeElement treeNode); + + /** + * + * @return this means the filter will work when it is disabled (for example "Show fields" filter is filter hiding fields, but reverted) + */ + + boolean isReverted(); } diff --git a/source/com/intellij/ide/structureView/impl/StructureViewFactoryImpl.java b/source/com/intellij/ide/structureView/impl/StructureViewFactoryImpl.java index f430dbaa889f..1cfc2950a047 100644 --- a/source/com/intellij/ide/structureView/impl/StructureViewFactoryImpl.java +++ b/source/com/intellij/ide/structureView/impl/StructureViewFactoryImpl.java @@ -17,10 +17,7 @@ import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.psi.PsiElement; import org.jdom.Element; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.util.*; /** * @author Eugene Belyaev @@ -100,7 +97,7 @@ public final class StructureViewFactoryImpl extends StructureViewFactory impleme public void setActiveAction(final String name, final boolean state) { - List activeActions = collectActiveActions(); + Collection activeActions = collectActiveActions(); if (state) { activeActions.add(name); @@ -111,20 +108,23 @@ public final class StructureViewFactoryImpl extends StructureViewFactory impleme ACTIVE_ACTIONS = toString(activeActions); } - private String toString(final List activeActions) { + private String toString(final Collection activeActions) { final StringBuffer result = new StringBuffer(); for (Iterator iterator = activeActions.iterator(); iterator.hasNext();) { - result.append(iterator.next()); - if (iterator.hasNext()) { - result.append(","); + final String actionName = iterator.next(); + if (actionName.trim().length() > 0) { + result.append(actionName); + if (iterator.hasNext()) { + result.append(","); + } } } return result.toString(); } - private List collectActiveActions() { + private Collection collectActiveActions() { final String[] strings = ACTIVE_ACTIONS.split(","); - return new ArrayList(Arrays.asList(strings)); + return new HashSet(Arrays.asList(strings)); } public boolean isActionActive(final String name) { diff --git a/source/com/intellij/ide/structureView/impl/java/FieldsFilter.java b/source/com/intellij/ide/structureView/impl/java/FieldsFilter.java index d475fc0076d0..2d4985e66c25 100644 --- a/source/com/intellij/ide/structureView/impl/java/FieldsFilter.java +++ b/source/com/intellij/ide/structureView/impl/java/FieldsFilter.java @@ -20,4 +20,8 @@ public class FieldsFilter implements Filter{ public String getName() { return ID; } + + public boolean isReverted() { + return true; + } } diff --git a/source/com/intellij/ide/structureView/impl/java/InheritedMembersFilter.java b/source/com/intellij/ide/structureView/impl/java/InheritedMembersFilter.java index f1d0e7098c56..b079177e78ff 100644 --- a/source/com/intellij/ide/structureView/impl/java/InheritedMembersFilter.java +++ b/source/com/intellij/ide/structureView/impl/java/InheritedMembersFilter.java @@ -27,4 +27,8 @@ public class InheritedMembersFilter implements Filter { public String getName() { return ID; } + + public boolean isReverted() { + return true; + } } diff --git a/source/com/intellij/ide/structureView/impl/java/PublicElementsFilter.java b/source/com/intellij/ide/structureView/impl/java/PublicElementsFilter.java index 410a349f534e..6f6e8fc3df46 100644 --- a/source/com/intellij/ide/structureView/impl/java/PublicElementsFilter.java +++ b/source/com/intellij/ide/structureView/impl/java/PublicElementsFilter.java @@ -25,4 +25,8 @@ public class PublicElementsFilter implements Filter{ public String getName() { return ID; } + + public boolean isReverted() { + return true; + } } diff --git a/source/com/intellij/ide/structureView/newStructureView/TreeActionWrapper.java b/source/com/intellij/ide/structureView/newStructureView/TreeActionWrapper.java index 84cbe9b8b1b8..55800cbb9f4e 100644 --- a/source/com/intellij/ide/structureView/newStructureView/TreeActionWrapper.java +++ b/source/com/intellij/ide/structureView/newStructureView/TreeActionWrapper.java @@ -25,10 +25,10 @@ public class TreeActionWrapper extends ToggleAction{ } public boolean isSelected(AnActionEvent e) { - return myStructureView.isActionActive(myAction.getName()); + return TreeModelWrapper.isActive(myAction, myStructureView); } public void setSelected(AnActionEvent e, boolean state) { - myStructureView.setActionActive(myAction.getName(), state); + myStructureView.setActionActive(myAction.getName(), TreeModelWrapper.shouldRevert(myAction) ? !state : state); } } diff --git a/source/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java b/source/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java index 338b976db2f3..19cf87a97eb1 100644 --- a/source/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java +++ b/source/com/intellij/ide/structureView/newStructureView/TreeModelWrapper.java @@ -46,4 +46,12 @@ public class TreeModelWrapper implements StructureViewModel { public Object getCurrentEditorElement() { return myModel.getCurrentEditorElement(); } + + public static boolean isActive(final TreeAction action, final TreeActionsOwner actionsOwner) { + return shouldRevert(action) ? !actionsOwner.isActionActive(action.getName()) : actionsOwner.isActionActive(action.getName()); + } + + public static boolean shouldRevert(final TreeAction action) { + return action instanceof Filter && ((Filter)action).isReverted(); + } }