composite usage grouping & filtering rule providers

This commit is contained in:
Peter Gromov
2005-01-28 19:02:44 +03:00
parent ed01bcc799
commit 95ed897da7
4 changed files with 15 additions and 18 deletions
@@ -1,8 +1,6 @@
package com.intellij.usages.impl;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.*;
@@ -11,7 +9,6 @@ import com.intellij.usages.rules.UsageGroupingRule;
import com.intellij.usages.rules.UsageGroupingRuleProvider;
import org.jdom.Element;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
@@ -51,7 +48,7 @@ public class UsageGroupingRuleProviderImpl extends UsageGroupingRuleProvider imp
return rules.toArray(new UsageGroupingRule[rules.size()]);
}
public AnAction[] createFilteringActions(UsageViewImpl view) {
public AnAction[] createGroupingActions(UsageViewImpl view) {
return new AnAction[] {
new GroupByUsageTypeAction(view),
new GroupByModuleTypeAction(view),
@@ -64,6 +64,8 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private ButtonPanel myButtonPanel = new ButtonPanel();
private boolean myChangesDetected = false;
private List<Usage> myUsagesToFlush = new ArrayList<Usage>();
private UsageGroupingRuleProvider myUsageGroupingRuleProvider = new CompositeUsageGroupingRuleProvider();
private UsageFilteringRuleProvider myUsageFilteringRuleProvider = new CompositeUsageFilteringRuleProvider();
public UsageViewImpl(UsageViewPresentation presentation,
UsageTarget[] targets,
@@ -77,7 +79,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
myRootPanel = new MyPanel(myTree);
UsageViewTreeModelBuilder model = new UsageViewTreeModelBuilder(myPresentation, targets);
myBuilder = new UsageNodeTreeBuilder(getGroupingRuleProvider().getActiveRules(project), getFilteringRuleProvider().getActiveRules(project), (GroupNode)model.getRoot());
myBuilder = new UsageNodeTreeBuilder(myUsageGroupingRuleProvider.getActiveRules(project), myUsageFilteringRuleProvider.getActiveRules(project), (GroupNode)model.getRoot());
myTree.setModel(model);
myRootPanel.setLayout(new BorderLayout());
@@ -225,20 +227,12 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
};
}
private UsageGroupingRuleProviderImpl getGroupingRuleProvider() {
return (UsageGroupingRuleProviderImpl)ApplicationManager.getApplication().getComponent(UsageGroupingRuleProvider.class);
}
private UsageFilteringRuleProviderImpl getFilteringRuleProvider() {
return (UsageFilteringRuleProviderImpl)ApplicationManager.getApplication().getComponent(UsageFilteringRuleProvider.class);
}
private AnAction[] createGroupingActions() {
return getGroupingRuleProvider().createFilteringActions(this);
return myUsageGroupingRuleProvider.createGroupingActions(this);
}
private AnAction[] createFilteringActions() {
return getFilteringRuleProvider().createFilteringActions(this);
return myUsageFilteringRuleProvider.createFilteringActions(this);
}
public void rulesChanged() {
@@ -246,8 +240,8 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
captureUsagesExpandState(new TreePath(myTree.getModel().getRoot()), states);
Collection<Usage> allUsages = myUsageNodes.keySet();
reset();
myBuilder.setGroupingRules(getGroupingRuleProvider().getActiveRules(myProject));
myBuilder.setFilteringRules(getFilteringRuleProvider().getActiveRules(myProject));
myBuilder.setGroupingRules(myUsageGroupingRuleProvider.getActiveRules(myProject));
myBuilder.setFilteringRules(myUsageFilteringRuleProvider.getActiveRules(myProject));
for (Iterator<Usage> i = allUsages.iterator(); i.hasNext();) {
Usage usage = i.next();
if (!usage.isValid()) {
@@ -1,9 +1,11 @@
package com.intellij.usages.rules;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.usages.impl.UsageViewImpl;
public abstract class UsageFilteringRuleProvider {
public abstract UsageFilteringRule[] getActiveRules(Project project);
public abstract AnAction[] createFilteringActions(UsageViewImpl view);
}
@@ -1,6 +1,8 @@
package com.intellij.usages.rules;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.usages.impl.UsageViewImpl;
/**
* Created by IntelliJ IDEA.
@@ -11,4 +13,6 @@ import com.intellij.openapi.project.Project;
*/
public abstract class UsageGroupingRuleProvider {
public abstract UsageGroupingRule[] getActiveRules(Project project);
public abstract AnAction[] createGroupingActions(UsageViewImpl view);
}