mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[service-view] support actions on multi selection from one contributor
GitOrigin-RevId: 68223c920311ed9b17a192a2fa1e5a9e8f78cb91
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c913553267
commit
00905ee6a9
+13
-5
@@ -43,7 +43,17 @@ import static com.intellij.openapi.actionSystem.ActionPlaces.RUN_DASHBOARD_POPUP
|
||||
public class RunConfigurationsServiceViewContributor
|
||||
implements ServiceViewGroupingContributor<RunConfigurationsServiceViewContributor.RunConfigurationContributor, RunDashboardGroup> {
|
||||
private static final ServiceViewDescriptor CONTRIBUTOR_DESCRIPTOR =
|
||||
new SimpleServiceViewDescriptor("Run Configurations", AllIcons.RunConfigurations.Application);
|
||||
new SimpleServiceViewDescriptor("Run Configurations", AllIcons.RunConfigurations.Application) {
|
||||
@Override
|
||||
public ActionGroup getToolbarActions() {
|
||||
return RunConfigurationsServiceViewContributor.getToolbarActions(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionGroup getPopupActions() {
|
||||
return RunConfigurationsServiceViewContributor.getPopupActions();
|
||||
}
|
||||
};
|
||||
private static final RunDashboardGroupingRule TYPE_GROUPING_RULE = new ConfigurationTypeDashboardGroupingRule();
|
||||
|
||||
@NotNull
|
||||
@@ -145,7 +155,7 @@ public class RunConfigurationsServiceViewContributor
|
||||
|
||||
private final RunConfigurationNode node;
|
||||
|
||||
private RunConfigurationServiceViewDescriptor(RunConfigurationNode node) {
|
||||
RunConfigurationServiceViewDescriptor(RunConfigurationNode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@@ -295,9 +305,7 @@ public class RunConfigurationsServiceViewContributor
|
||||
|
||||
@Override
|
||||
public ActionGroup getToolbarActions() {
|
||||
DefaultActionGroup actionGroup = new DefaultActionGroup();
|
||||
actionGroup.add(ActionManager.getInstance().getAction(RUN_DASHBOARD_CONTENT_TOOLBAR));
|
||||
return actionGroup;
|
||||
return RunConfigurationsServiceViewContributor.getToolbarActions(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+24
-3
@@ -9,7 +9,6 @@ import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.DumbAwareAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.ui.PopupHandler;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.EmptyIcon;
|
||||
import com.intellij.util.ui.tree.TreeModelAdapter;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -125,14 +124,36 @@ class ServiceViewActionProvider {
|
||||
if (contextComponent == null) return AnAction.EMPTY_ARRAY;
|
||||
|
||||
List<ServiceViewItem> selectedItems = ((ServiceView)contextComponent).getSelectedItems();
|
||||
ServiceViewItem selectedItem = ContainerUtil.getOnlyItem(selectedItems);
|
||||
ServiceViewDescriptor descriptor = selectedItem == null ? null : selectedItem.getViewDescriptor();
|
||||
if (selectedItems.isEmpty()) return AnAction.EMPTY_ARRAY;
|
||||
|
||||
ServiceViewDescriptor descriptor = null;
|
||||
if (selectedItems.size() == 1) {
|
||||
descriptor = selectedItems.get(0).getViewDescriptor();
|
||||
}
|
||||
else {
|
||||
ServiceViewContributor contributor = getTheOnlyRootContributor(selectedItems);
|
||||
descriptor = contributor == null ? null : contributor.getViewDescriptor();
|
||||
}
|
||||
if (descriptor == null) return AnAction.EMPTY_ARRAY;
|
||||
|
||||
ActionGroup group = toolbar ? descriptor.getToolbarActions() : descriptor.getPopupActions();
|
||||
return group == null ? AnAction.EMPTY_ARRAY : group.getChildren(e);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static ServiceViewContributor getTheOnlyRootContributor(@NotNull List<ServiceViewItem> items) {
|
||||
ServiceViewContributor contributor = null;
|
||||
for (ServiceViewItem item : items) {
|
||||
if (contributor == null) {
|
||||
contributor = item.getRootContributor();
|
||||
}
|
||||
else if (!contributor.equals(item.getRootContributor())) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return contributor;
|
||||
}
|
||||
|
||||
public static class ItemToolbarActionGroup extends ActionGroup {
|
||||
private final static AnAction[] FAKE_GROUP = new AnAction[]{new DumbAwareAction(null, null, EmptyIcon.ICON_16) {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user