minor changes

This commit is contained in:
Peter Gromov
2005-01-28 20:09:18 +03:00
parent e521e366d6
commit 0fd863e528
5 changed files with 45 additions and 19 deletions
@@ -4,15 +4,14 @@ import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CustomShortcutSet;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.*;
import com.intellij.usages.UsageView;
import com.intellij.usages.impl.rules.ImportFilteringRule;
import com.intellij.usages.impl.rules.ReadAccessFilteringRule;
import com.intellij.usages.impl.rules.WriteAccessFilteringRule;
import com.intellij.usages.rules.UsageFilteringRule;
import com.intellij.usages.rules.UsageFilteringRuleProvider;
import com.intellij.usages.UsageView;
import org.jdom.Element;
import javax.swing.*;
@@ -27,7 +26,7 @@ import java.util.List;
* Time: 8:20:57 PM
* To change this template use File | Settings | File Templates.
*/
public class UsageFilteringRuleProviderImpl extends UsageFilteringRuleProvider implements ApplicationComponent, JDOMExternalizable {
public class UsageFilteringRuleProviderImpl implements UsageFilteringRuleProvider, JDOMExternalizable {
public boolean SHOW_IMPORTS = true;
public boolean SHOW_READ_ACCESS = true;
public boolean SHOW_WRITE_ACCESS = true;
@@ -1,13 +1,12 @@
package com.intellij.usages.impl;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.*;
import com.intellij.usages.UsageView;
import com.intellij.usages.impl.rules.*;
import com.intellij.usages.rules.UsageGroupingRule;
import com.intellij.usages.rules.UsageGroupingRuleProvider;
import com.intellij.usages.UsageView;
import org.jdom.Element;
import java.util.ArrayList;
@@ -20,7 +19,7 @@ import java.util.List;
* Time: 8:20:57 PM
* To change this template use File | Settings | File Templates.
*/
public class UsageGroupingRuleProviderImpl extends UsageGroupingRuleProvider implements ApplicationComponent, JDOMExternalizable {
public class UsageGroupingRuleProviderImpl implements UsageGroupingRuleProvider, JDOMExternalizable {
public boolean GROUP_BY_USAGE_TYPE = true;
public boolean GROUP_BY_MODULE = true;
public boolean GROUP_BY_PACKAGE = true;
@@ -64,8 +64,6 @@ 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,
@@ -79,7 +77,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
myRootPanel = new MyPanel(myTree);
UsageViewTreeModelBuilder model = new UsageViewTreeModelBuilder(myPresentation, targets);
myBuilder = new UsageNodeTreeBuilder(myUsageGroupingRuleProvider.getActiveRules(project), myUsageFilteringRuleProvider.getActiveRules(project), (GroupNode)model.getRoot());
myBuilder = new UsageNodeTreeBuilder(getActiveGroupingRules(project), getActiveFilteringRules(project), (GroupNode)model.getRoot());
myTree.setModel(model);
myRootPanel.setLayout(new BorderLayout());
@@ -113,6 +111,24 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
}
private UsageFilteringRule[] getActiveFilteringRules(final Project project) {
final UsageFilteringRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageFilteringRuleProvider.class);
List<UsageFilteringRule> list = new ArrayList<UsageFilteringRule>();
for (int i = 0; i < providers.length; i++) {
list.addAll(Arrays.asList(providers[i].getActiveRules(project)));
}
return list.toArray(new UsageFilteringRule[list.size()]);
}
private UsageGroupingRule[] getActiveGroupingRules(final Project project) {
final UsageGroupingRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageGroupingRuleProvider.class);
List<UsageGroupingRule> list = new ArrayList<UsageGroupingRule>();
for (int i = 0; i < providers.length; i++) {
list.addAll(Arrays.asList(providers[i].getActiveRules(project)));
}
return list.toArray(new UsageGroupingRule[list.size()]);
}
public void modelChanged(boolean isPropertyChange) {
if (!isPropertyChange) {
myChangesDetected = true;
@@ -228,11 +244,21 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
private AnAction[] createGroupingActions() {
return myUsageGroupingRuleProvider.createGroupingActions(this);
final UsageGroupingRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageGroupingRuleProvider.class);
List<AnAction> list = new ArrayList<AnAction>();
for (int i = 0; i < providers.length; i++) {
list.addAll(Arrays.asList(providers[i].createGroupingActions(this)));
}
return list.toArray(new AnAction[list.size()]);
}
private AnAction[] createFilteringActions() {
return myUsageFilteringRuleProvider.createFilteringActions(this);
final UsageFilteringRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageFilteringRuleProvider.class);
List<AnAction> list = new ArrayList<AnAction>();
for (int i = 0; i < providers.length; i++) {
list.addAll(Arrays.asList(providers[i].createFilteringActions(this)));
}
return list.toArray(new AnAction[list.size()]);
}
public void rulesChanged() {
@@ -240,8 +266,8 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
captureUsagesExpandState(new TreePath(myTree.getModel().getRoot()), states);
Collection<Usage> allUsages = myUsageNodes.keySet();
reset();
myBuilder.setGroupingRules(myUsageGroupingRuleProvider.getActiveRules(myProject));
myBuilder.setFilteringRules(myUsageFilteringRuleProvider.getActiveRules(myProject));
myBuilder.setGroupingRules(getActiveGroupingRules(myProject));
myBuilder.setFilteringRules(getActiveFilteringRules(myProject));
for (Iterator<Usage> i = allUsages.iterator(); i.hasNext();) {
Usage usage = i.next();
if (!usage.isValid()) {
@@ -2,10 +2,11 @@ package com.intellij.usages.rules;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.usages.UsageView;
public abstract class UsageFilteringRuleProvider {
public abstract UsageFilteringRule[] getActiveRules(Project project);
public interface UsageFilteringRuleProvider extends ApplicationComponent{
UsageFilteringRule[] getActiveRules(Project project);
public abstract AnAction[] createFilteringActions(UsageView view);
AnAction[] createFilteringActions(UsageView view);
}
@@ -2,6 +2,7 @@ package com.intellij.usages.rules;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.usages.UsageView;
/**
@@ -11,8 +12,8 @@ import com.intellij.usages.UsageView;
* Time: 8:19:16 PM
* To change this template use File | Settings | File Templates.
*/
public abstract class UsageGroupingRuleProvider {
public abstract UsageGroupingRule[] getActiveRules(Project project);
public interface UsageGroupingRuleProvider extends ApplicationComponent{
UsageGroupingRule[] getActiveRules(Project project);
public abstract AnAction[] createGroupingActions(UsageView view);
AnAction[] createGroupingActions(UsageView view);
}