mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
composite usage grouping & filtering rule providers
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user