From 6f7ff1646571048ae9e894b536949e19d190d7cc Mon Sep 17 00:00:00 2001 From: Manuel Stadelmann Date: Thu, 2 Jul 2015 12:55:49 +0300 Subject: [PATCH] RemoveUsageAction: Now selects a next item from the usage tree after removing one or several items. This makes the function easier to use with the keyboard. --- .../usages/actions/RemoveUsageAction.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/platform/usageView/src/com/intellij/usages/actions/RemoveUsageAction.java b/platform/usageView/src/com/intellij/usages/actions/RemoveUsageAction.java index 1d5b9e70cfb1..920575fa4cfc 100644 --- a/platform/usageView/src/com/intellij/usages/actions/RemoveUsageAction.java +++ b/platform/usageView/src/com/intellij/usages/actions/RemoveUsageAction.java @@ -18,14 +18,40 @@ package com.intellij.usages.actions; import com.intellij.usages.Usage; import com.intellij.usages.UsageView; +import java.util.List; + /** * @author Manuel Stadelmann */ public class RemoveUsageAction extends IncludeExcludeActionBase { + @Override protected void process(Usage[] usages, UsageView usageView) { + + Usage nextToSelect = null; + for (Usage usage : usages) { + Usage toSelect = getNextToSelect(usageView, usage); usageView.removeUsage(usage); + nextToSelect = toSelect; + } + + if (nextToSelect != null) { + usageView.selectUsages(new Usage[]{nextToSelect}); } } + + private Usage getNextToSelect(UsageView usageView, Usage toDelete) { + List sortedUsages = usageView.getSortedUsages(); + int curIndex = sortedUsages.indexOf(toDelete); + + int selectIndex = 0; + if (curIndex < sortedUsages.size() - 1) { + selectIndex = curIndex + 1; + } + else if (curIndex > 0) { + selectIndex = curIndex - 1; + } + return sortedUsages.get(selectIndex); + } }