This commit is contained in:
Alexey Kudravtsev
2016-07-21 15:16:55 +03:00
parent 4d47108723
commit 55feba636f
11 changed files with 80 additions and 99 deletions
@@ -41,8 +41,8 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
private final Object lock = new Object();
private final UsageGroup myGroup;
private final int myRuleIndex;
private final Map<UsageGroup, GroupNode> mySubgroupNodes = new THashMap<UsageGroup, GroupNode>();
private final List<UsageNode> myUsageNodes = new SmartList<UsageNode>();
private final Map<UsageGroup, GroupNode> mySubgroupNodes = new THashMap<>();
private final List<UsageNode> myUsageNodes = new SmartList<>();
@NotNull private final UsageViewTreeModelBuilder myUsageTreeModel;
private volatile int myRecursiveUsageCount;
@@ -67,7 +67,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
if (children == null) {
return result;
}
return result + children.subList(0, Math.min(10, children.size())).toString();
return result + children.subList(0, Math.min(10, children.size()));
}
public GroupNode addGroup(@NotNull UsageGroup group, int ruleIndex, @NotNull Consumer<Runnable> edtQueue) {
@@ -85,7 +85,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
void addNode(@NotNull final DefaultMutableTreeNode node, @NotNull Consumer<Runnable> edtQueue) {
if (!getBuilder().isDetachedMode()) {
edtQueue.consume(() -> myTreeModel.insertNodeInto(node, GroupNode.this, getNodeInsertionIndex(node)));
edtQueue.consume(() -> myTreeModel.insertNodeInto(node, this, getNodeInsertionIndex(node)));
}
}
@@ -105,7 +105,8 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
myTreeModel.reload(this);
}
@Nullable UsageNode tryMerge(@NotNull Usage usage) {
@Nullable
private UsageNode tryMerge(@NotNull Usage usage) {
if (!(usage instanceof MergeableUsage)) return null;
MergeableUsage mergeableUsage = (MergeableUsage)usage;
for (UsageNode node : myUsageNodes) {
@@ -122,7 +123,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
return null;
}
public boolean removeUsage(@NotNull UsageNode usage) {
boolean removeUsage(@NotNull UsageNode usage) {
ApplicationManager.getApplication().assertIsDispatchThread();
final Collection<GroupNode> groupNodes = mySubgroupNodes.values();
for(Iterator<GroupNode> iterator = groupNodes.iterator();iterator.hasNext();) {
@@ -151,7 +152,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
return false;
}
public boolean removeUsagesBulk(@NotNull Set<UsageNode> usages) {
boolean removeUsagesBulk(@NotNull Set<UsageNode> usages) {
boolean removed;
synchronized (lock) {
removed = myUsageNodes.removeAll(usages);
@@ -201,7 +202,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
if (!getBuilder().isDetachedMode()) {
edtQueue.consume(() -> {
myTreeModel.insertNodeInto(node, GroupNode.this, getNodeIndex(node));
myTreeModel.insertNodeInto(node, this, getNodeIndex(node));
incrementUsageCount();
});
}
@@ -247,7 +248,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
StringBuffer result = new StringBuffer();
StringUtil.repeatSymbol(result, ' ', indent);
if (myGroup != null) result.append(myGroup.toString());
if (myGroup != null) result.append(myGroup);
result.append("[");
result.append(lineSeparator);
@@ -323,7 +324,7 @@ public class GroupNode extends Node implements Navigatable, Comparable<GroupNode
return myGroup;
}
public int getRecursiveUsageCount() {
int getRecursiveUsageCount() {
return myRecursiveUsageCount;
}
@@ -110,7 +110,7 @@ public abstract class Node extends DefaultMutableTreeNode {
myCachedText = text;
updateNotify();
edtQueue.consume(() -> myTreeModel.nodeChanged(Node.this));
edtQueue.consume(() -> myTreeModel.nodeChanged(this));
}
setFlag(UPDATED_MASK, true);
}
@@ -37,7 +37,7 @@ import org.jetbrains.annotations.NotNull;
*/
public class SyntaxHighlighterOverEditorHighlighter implements SyntaxHighlighter {
private final Lexer lexer;
private LayeredHighlighterIterator layeredHighlighterIterator = null;
private LayeredHighlighterIterator layeredHighlighterIterator;
private final SyntaxHighlighter highlighter;
public SyntaxHighlighterOverEditorHighlighter(SyntaxHighlighter _highlighter, VirtualFile file, Project project) {
@@ -45,7 +45,7 @@ public class UsageFilteringRuleProviderImpl implements UsageFilteringRuleProvide
@Override
@NotNull
public UsageFilteringRule[] getActiveRules(@NotNull Project project) {
final List<UsageFilteringRule> rules = new ArrayList<UsageFilteringRule>();
final List<UsageFilteringRule> rules = new ArrayList<>();
if (!myReadWriteState.isShowReadAccess()) {
rules.add(new ReadAccessFilteringRule());
@@ -77,22 +77,22 @@ public class UsageFilteringRuleProviderImpl implements UsageFilteringRuleProvide
private boolean myShowReadAccess = true;
private boolean myShowWriteAccess = true;
public boolean isShowReadAccess() {
boolean isShowReadAccess() {
return myShowReadAccess;
}
public void setShowReadAccess(final boolean showReadAccess) {
void setShowReadAccess(final boolean showReadAccess) {
myShowReadAccess = showReadAccess;
if (!showReadAccess) {
myShowWriteAccess = true;
}
}
public boolean isShowWriteAccess() {
boolean isShowWriteAccess() {
return myShowWriteAccess;
}
public void setShowWriteAccess(final boolean showWriteAccess) {
void setShowWriteAccess(final boolean showWriteAccess) {
myShowWriteAccess = showWriteAccess;
if (!showWriteAccess) {
myShowReadAccess = true;
@@ -55,7 +55,7 @@ public class UsageGroupingRuleProviderImpl implements UsageGroupingRuleProvider
@Override
@NotNull
public UsageGroupingRule[] getActiveRules(Project project) {
List<UsageGroupingRule> rules = new ArrayList<UsageGroupingRule>();
List<UsageGroupingRule> rules = new ArrayList<>();
if (supportsNonCodeRule()) {
rules.add(new NonCodeUsageGroupingRule(project));
}
@@ -98,7 +98,7 @@ public class UsageNode extends Node implements Comparable<UsageNode>, Navigatabl
}
}
public void setUsageExcluded(boolean usageExcluded) {
void setUsageExcluded(boolean usageExcluded) {
myUsageExcluded = usageExcluded;
}
}
@@ -54,7 +54,7 @@ class UsageNodeTreeBuilder {
myGroupingRules = rules;
}
public void setFilteringRules(@NotNull UsageFilteringRule[] rules) {
void setFilteringRules(@NotNull UsageFilteringRule[] rules) {
myFilteringRules = rules;
}
@@ -61,7 +61,6 @@ import com.intellij.usages.*;
import com.intellij.usages.rules.*;
import com.intellij.util.*;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.Convertor;
import com.intellij.util.containers.TransferToEDTQueue;
import com.intellij.util.enumeration.EmptyEnumeration;
import com.intellij.util.messages.MessageBusConnection;
@@ -74,7 +73,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.plaf.TreeUI;
import javax.swing.plaf.basic.BasicTreeUI;
import javax.swing.tree.*;
@@ -108,7 +110,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private final ExclusionHandler<DefaultMutableTreeNode> myExclusionHandler;
private final UsageModelTracker myModelTracker;
private final Map<Usage, UsageNode> myUsageNodes = new ConcurrentHashMap<Usage, UsageNode>();
private final Map<Usage, UsageNode> myUsageNodes = new ConcurrentHashMap<>();
public static final UsageNode NULL_NODE = new UsageNode(NullUsage.INSTANCE, new UsageViewTreeModelBuilder(new UsageViewPresentation(), UsageTarget.EMPTY_ARRAY));
private final ButtonPanel myButtonPanel = new ButtonPanel();
private final JComponent myAdditionalComponent = new JPanel(new BorderLayout());
@@ -189,7 +191,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
// hack to avoid quadratic expandAll()
@Override
public Enumeration<TreePath> getExpandedDescendants(TreePath parent) {
return expandingAll ? EmptyEnumeration.<TreePath>getInstance() : super.getExpandedDescendants(parent);
return expandingAll ? EmptyEnumeration.getInstance() : super.getExpandedDescendants(parent);
}
};
myRootPanel = new MyPanel(myTree);
@@ -202,7 +204,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
myBuilder = new UsageNodeTreeBuilder(myTargets, getActiveGroupingRules(project), getActiveFilteringRules(project), myRoot, myProject);
final MessageBusConnection messageBusConnection = myProject.getMessageBus().connect(this);
messageBusConnection.subscribe(UsageFilteringRuleProvider.RULES_CHANGED, () -> rulesChanged());
messageBusConnection.subscribe(UsageFilteringRuleProvider.RULES_CHANGED, this::rulesChanged);
myUsageViewTreeCellRenderer = new UsageViewTreeCellRenderer(this);
if (!myPresentation.isDetachedMode()) {
@@ -231,10 +233,10 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
myTree.setCellRenderer(myUsageViewTreeCellRenderer);
collapseAll();
myModelTracker.addListener(UsageViewImpl.this);
myModelTracker.addListener(this);
if (myPresentation.isShowCancelButton()) {
addButtonToLowerPane(() -> close(), UsageViewBundle.message("usage.view.cancel.button"));
addButtonToLowerPane(this::close, UsageViewBundle.message("usage.view.cancel.button"));
}
myTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
@@ -249,7 +251,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
});
}
myTransferToEDTQueue = new TransferToEDTQueue<Runnable>("Insert usages", runnable -> {
myTransferToEDTQueue = new TransferToEDTQueue<>("Insert usages", runnable -> {
runnable.run();
return true;
}, o -> isDisposed || project.isDisposed(), 200);
@@ -336,12 +338,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
// add reaction to scrolling:
// since the UsageViewTreeCellRenderer ignores invisible nodes (outside the viewport), their preferred size is incorrect
// and we need to recalculate them when the node scrolled into the visible rectangle
treePane.getViewport().addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
clearRendererCache();
}
});
treePane.getViewport().addChangeListener(e -> clearRendererCache());
myTree.addTreeExpansionListener(new TreeExpansionListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
@@ -370,7 +367,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
};
UsageContextPanel.Provider[] extensions = Extensions.getExtensions(UsageContextPanel.Provider.EP_NAME, myProject);
myUsageContextPanelProviders = ContainerUtil.filter(extensions, provider -> provider.isAvailableFor(UsageViewImpl.this));
myUsageContextPanelProviders = ContainerUtil.filter(extensions, provider -> provider.isAvailableFor(this));
for (UsageContextPanel.Provider provider : myUsageContextPanelProviders) {
JComponent component;
if (myCurrentUsageContextProvider == null || myCurrentUsageContextProvider == provider) {
@@ -386,14 +383,11 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
int index = myUsageContextPanelProviders.indexOf(myCurrentUsageContextProvider);
tabbedPane.setSelectedIndex(index);
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
int currentIndex = tabbedPane.getSelectedIndex();
UsageContextPanel.Provider selectedProvider = myUsageContextPanelProviders.get(currentIndex);
if (selectedProvider != myCurrentUsageContextProvider) {
tabSelected(selectedProvider);
}
tabbedPane.addChangeListener(e -> {
int currentIndex = tabbedPane.getSelectedIndex();
UsageContextPanel.Provider selectedProvider = myUsageContextPanelProviders.get(currentIndex);
if (selectedProvider != myCurrentUsageContextProvider) {
tabSelected(selectedProvider);
}
});
tabbedPane.setBorder(IdeBorderFactory.createBorder(SideBorder.LEFT));
@@ -426,7 +420,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private static UsageFilteringRule[] getActiveFilteringRules(final Project project) {
final UsageFilteringRuleProvider[] providers = Extensions.getExtensions(UsageFilteringRuleProvider.EP_NAME);
List<UsageFilteringRule> list = new ArrayList<UsageFilteringRule>(providers.length);
List<UsageFilteringRule> list = new ArrayList<>(providers.length);
for (UsageFilteringRuleProvider provider : providers) {
ContainerUtil.addAll(list, provider.getActiveRules(project));
}
@@ -435,7 +429,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private static UsageGroupingRule[] getActiveGroupingRules(@NotNull final Project project) {
final UsageGroupingRuleProvider[] providers = Extensions.getExtensions(UsageGroupingRuleProvider.EP_NAME);
List<UsageGroupingRule> list = new ArrayList<UsageGroupingRule>(providers.length);
List<UsageGroupingRule> list = new ArrayList<>(providers.length);
for (UsageGroupingRuleProvider provider : providers) {
ContainerUtil.addAll(list, provider.getActiveRules(project));
}
@@ -515,17 +509,14 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
});
TreeUIHelper.getInstance().installTreeSpeedSearch(myTree, new Convertor<TreePath, String>() {
@Override
public String convert(TreePath o) {
Object value = o.getLastPathComponent();
TreeCellRenderer renderer = myTree.getCellRenderer();
if (renderer instanceof UsageViewTreeCellRenderer) {
UsageViewTreeCellRenderer coloredRenderer = (UsageViewTreeCellRenderer)renderer;
return coloredRenderer.getPlainTextForNode(value);
}
return value == null ? null : value.toString();
TreeUIHelper.getInstance().installTreeSpeedSearch(myTree, o -> {
Object value = o.getLastPathComponent();
TreeCellRenderer renderer = myTree.getCellRenderer();
if (renderer instanceof UsageViewTreeCellRenderer) {
UsageViewTreeCellRenderer coloredRenderer = (UsageViewTreeCellRenderer)renderer;
return coloredRenderer.getPlainTextForNode(value);
}
return value == null ? null : value.toString();
}, true);
}
@@ -594,7 +585,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
}
}
public void scheduleDisposeOnClose(@NotNull Disposable disposable) {
private void scheduleDisposeOnClose(@NotNull Disposable disposable) {
Disposer.register(this, disposable);
}
@@ -631,12 +622,9 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
final AnAction expandAllAction = actionsManager.createExpandAllAction(treeExpander, component);
final AnAction collapseAllAction = actionsManager.createCollapseAllAction(treeExpander, component);
scheduleDisposeOnClose(new Disposable() {
@Override
public void dispose() {
expandAllAction.unregisterCustomShortcutSet(component);
collapseAllAction.unregisterCustomShortcutSet(component);
}
scheduleDisposeOnClose(() -> {
expandAllAction.unregisterCustomShortcutSet(component);
collapseAllAction.unregisterCustomShortcutSet(component);
});
@@ -709,7 +697,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@NotNull
private AnAction[] createGroupingActions() {
final UsageGroupingRuleProvider[] providers = Extensions.getExtensions(UsageGroupingRuleProvider.EP_NAME);
List<AnAction> list = new ArrayList<AnAction>(providers.length);
List<AnAction> list = new ArrayList<>(providers.length);
for (UsageGroupingRuleProvider provider : providers) {
ContainerUtil.addAll(list, provider.createGroupingActions(this));
}
@@ -718,9 +706,9 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private void rulesChanged() {
ApplicationManager.getApplication().assertIsDispatchThread();
final List<UsageState> states = new ArrayList<UsageState>();
final List<UsageState> states = new ArrayList<>();
captureUsagesExpandState(new TreePath(myTree.getModel().getRoot()), states);
final List<Usage> allUsages = new ArrayList<Usage>(myUsageNodes.keySet());
final List<Usage> allUsages = new ArrayList<>(myUsageNodes.keySet());
Collections.sort(allUsages, USAGE_COMPARATOR);
final Set<Usage> excludedUsages = getExcludedUsages();
reset();
@@ -974,7 +962,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
public void removeUsagesBulk(@NotNull Collection<Usage> usages) {
final Set<UsageNode> nodes = new THashSet<UsageNode>(usages.size());
final Set<UsageNode> nodes = new THashSet<>(usages.size());
for (Usage usage : usages) {
UsageNode node = myUsageNodes.remove(usage);
if (node != null && node != NULL_NODE) {
@@ -1001,7 +989,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
public void includeUsages(@NotNull Usage[] usages) {
List<TreeNode> nodes = new ArrayList<TreeNode>(usages.length);
List<TreeNode> nodes = new ArrayList<>(usages.length);
for (Usage usage : usages) {
final UsageNode node = myUsageNodes.get(usage);
if (node != NULL_NODE && node != null) {
@@ -1014,7 +1002,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
public void excludeUsages(@NotNull Usage[] usages) {
List<TreeNode> nodes = new ArrayList<TreeNode>(usages.length);
List<TreeNode> nodes = new ArrayList<>(usages.length);
for (Usage usage : usages) {
final UsageNode node = myUsageNodes.get(usage);
if (node != NULL_NODE && node != null) {
@@ -1027,7 +1015,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
public void selectUsages(@NotNull Usage[] usages) {
List<TreePath> paths = new LinkedList<TreePath>();
List<TreePath> paths = new LinkedList<>();
for (Usage usage : usages) {
final UsageNode node = myUsageNodes.get(usage);
@@ -1128,7 +1116,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
myUpdateAlarm.addRequest(() -> {
if (myProject.isDisposed()) return;
PsiDocumentManagerBase documentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(myProject);
documentManager.cancelAndRunWhenAllCommitted("UpdateUsageView", () -> updateImmediately());
documentManager.cancelAndRunWhenAllCommitted("UpdateUsageView", this::updateImmediately);
}, 300);
}
@@ -1280,7 +1268,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@NotNull
private Set<Usage> getReadOnlyUsages() {
final Set<Usage> result = new THashSet<Usage>();
final Set<Usage> result = new THashSet<>();
final Set<Map.Entry<Usage,UsageNode>> usages = myUsageNodes.entrySet();
for (Map.Entry<Usage, UsageNode> entry : usages) {
Usage usage = entry.getKey();
@@ -1295,7 +1283,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@NotNull
private Set<VirtualFile> getReadOnlyUsagesFiles() {
Set<Usage> usages = getReadOnlyUsages();
Set<VirtualFile> result = new THashSet<VirtualFile>();
Set<VirtualFile> result = new THashSet<>();
for (Usage usage : usages) {
if (usage instanceof UsageInFile) {
UsageInFile usageInFile = (UsageInFile)usage;
@@ -1319,7 +1307,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
@NotNull
public Set<Usage> getExcludedUsages() {
Set<Usage> result = new THashSet<Usage>();
Set<Usage> result = new THashSet<>();
for (Map.Entry<Usage, UsageNode> entry : myUsageNodes.entrySet()) {
UsageNode node = entry.getValue();
Usage usage = entry.getKey();
@@ -1349,7 +1337,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
TreePath[] leadSelectionPath = myTree.getSelectionPaths();
if (leadSelectionPath == null || leadSelectionPath.length == 0) return null;
final List<Node> result = new ArrayList<Node>();
final List<Node> result = new ArrayList<>();
for (TreePath comp : leadSelectionPath) {
final Object lastPathComponent = comp.getLastPathComponent();
if (lastPathComponent instanceof Node) {
@@ -1368,7 +1356,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
return null;
}
Set<Usage> usages = new THashSet<Usage>();
Set<Usage> usages = new THashSet<>();
for (TreePath selectionPath : selectionPaths) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)selectionPath.getLastPathComponent();
collectUsages(node, usages);
@@ -1386,7 +1374,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
@Override
@NotNull
public List<Usage> getSortedUsages() {
List<Usage> usages = new ArrayList<Usage>(getUsages());
List<Usage> usages = new ArrayList<>(getUsages());
Collections.sort(usages, USAGE_COMPARATOR);
return usages;
}
@@ -1410,7 +1398,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
TreePath[] selectionPaths = myTree.getSelectionPaths();
if (selectionPaths == null) return null;
Set<UsageTarget> targets = new THashSet<UsageTarget>();
Set<UsageTarget> targets = new THashSet<>();
for (TreePath selectionPath : selectionPaths) {
Object lastPathComponent = selectionPath.getLastPathComponent();
if (lastPathComponent instanceof UsageTargetNode) {
@@ -1440,7 +1428,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
if (nodes == null) {
return null;
}
final List<Navigatable> result = new ArrayList<Navigatable>();
final List<Navigatable> result = new ArrayList<>();
for (final Node node : nodes) {
/*
if (!node.isDataValid()) {
@@ -1461,7 +1449,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
private class MyPanel extends JPanel implements TypeSafeDataProvider, OccurenceNavigator,Disposable{
@Nullable private OccurenceNavigatorSupport mySupport;
private CopyProvider myCopyProvider;
private final CopyProvider myCopyProvider;
private MyPanel(@NotNull JTree tree) {
mySupport = new OccurenceNavigatorSupport(tree) {
@@ -1618,12 +1606,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra
DumbService.getInstance(myProject).makeDumbAware(button, UsageViewImpl.this);
button.setFocusable(false);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
runnable.run();
}
});
button.addActionListener(e -> runnable.run());
add(button, index);
@@ -122,7 +122,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
@NotNull final FindUsagesProcessPresentation processPresentation,
@Nullable final UsageViewStateListener listener) {
final SearchScope searchScopeToWarnOfFallingOutOf = getMaxSearchScopeToWarnOfFallingOutOf(searchFor);
final AtomicReference<UsageViewImpl> usageViewRef = new AtomicReference<UsageViewImpl>();
final AtomicReference<UsageViewImpl> usageViewRef = new AtomicReference<>();
Task.Backgroundable task = new Task.Backgroundable(myProject, getProgressTitle(presentation), true, new SearchInBackgroundOption()) {
@Override
@@ -243,7 +243,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
if (file != null) {
return isFileInScope(file, searchScope);
}
else if(element != null) {
if (element != null) {
return searchScope instanceof EverythingGlobalScope ||
searchScope instanceof ProjectScopeImpl ||
searchScope instanceof ProjectAndLibrariesScope;
@@ -258,9 +258,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
if (searchScope instanceof LocalSearchScope) {
return ((LocalSearchScope)searchScope).isInScope(file);
}
else {
return ((GlobalSearchScope)searchScope).contains(file);
}
return ((GlobalSearchScope)searchScope).contains(file);
}
@NotNull
@@ -49,7 +49,7 @@ class UsageViewTreeCellRenderer extends ColoredTreeCellRenderer {
private static final SimpleTextAttributes ourNumberOfUsagesAttribute = SimpleTextAttributes.fromTextAttributes(ourColorsScheme.getAttributes(UsageTreeColors.NUMBER_OF_USAGES));
private static final SimpleTextAttributes ourInvalidAttributesDarcula = new SimpleTextAttributes(null, DarculaColors.RED, null, ourInvalidAttributes.getStyle());
private static final Insets STANDARD_IPAD_NOWIFI = new Insets(1, 2, 1, 2);
private boolean myRowBoundsCalled = false;
private boolean myRowBoundsCalled;
private final UsageViewPresentation myPresentation;
private final UsageView myView;
@@ -18,7 +18,6 @@ package com.intellij.usages.impl;
import com.intellij.usages.UsageTarget;
import com.intellij.usages.UsageViewPresentation;
import com.intellij.usages.UsageViewSettings;
import com.intellij.util.Consumer;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
@@ -55,8 +54,8 @@ public class UsageViewTreeModelBuilder extends DefaultTreeModel {
myDetachedMode = presentation.isDetachedMode();
}
public static class TargetsRootNode extends DefaultMutableTreeNode {
public TargetsRootNode(String name) {
static class TargetsRootNode extends DefaultMutableTreeNode {
TargetsRootNode(String name) {
super(name);
}
}
@@ -71,10 +70,10 @@ public class UsageViewTreeModelBuilder extends DefaultTreeModel {
myTargetsNode.add(targetNode);
myTargetNodes[i] = targetNode;
}
myRootNode.addNode(myTargetsNode, runnable -> UIUtil.invokeLaterIfNeeded(runnable));
myRootNode.addNode(myTargetsNode, UIUtil::invokeLaterIfNeeded);
}
public UsageNode getFirstUsageNode() {
UsageNode getFirstUsageNode() {
return (UsageNode)getFirstChildOfType(myRootNode, UsageNode.class);
}
@@ -93,7 +92,7 @@ public class UsageViewTreeModelBuilder extends DefaultTreeModel {
return null;
}
public boolean areTargetsValid() {
boolean areTargetsValid() {
if (myTargetNodes == null) return true;
for (UsageTargetNode targetNode : myTargetNodes) {
if (!targetNode.isValid()) return false;
@@ -119,11 +118,11 @@ public class UsageViewTreeModelBuilder extends DefaultTreeModel {
}
}
public boolean isDetachedMode() {
boolean isDetachedMode() {
return myDetachedMode;
}
public boolean isFilterDuplicatedLine() {
boolean isFilterDuplicatedLine() {
return myPresentation.isMergeDupLinesAvailable() && UsageViewSettings.getInstance().isFilterDuplicatedLine();
}
}