propagate place to NewElement popup: IDEA-186884

This commit is contained in:
Gregory.Shrago
2018-04-13 20:08:14 +03:00
parent c38b255b64
commit 742effeb06
2 changed files with 17 additions and 5 deletions
@@ -17,6 +17,7 @@ package com.intellij.openapi.actionSystem;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
@@ -28,6 +29,7 @@ import java.util.Set;
public abstract class ActionPlaces {
public static final String UNKNOWN = "unknown";
public static final String TOOLBAR = "toolbar";
public static final String POPUP = "popup";
/**
* consider to use {@link #isMainMenuOrActionSearch(String)} instead
@@ -156,7 +158,7 @@ public abstract class ActionPlaces {
}
private static final Set<String> ourPopupPlaces = ContainerUtil.newHashSet(
EDITOR_POPUP, EDITOR_TAB_POPUP, COMMANDER_POPUP,
POPUP, EDITOR_POPUP, EDITOR_TAB_POPUP, COMMANDER_POPUP,
PROJECT_VIEW_POPUP, FAVORITES_VIEW_POPUP, SCOPE_VIEW_POPUP, TESTTREE_VIEW_POPUP, TESTSTATISTICS_VIEW_POPUP, TYPE_HIERARCHY_VIEW_POPUP,
METHOD_HIERARCHY_VIEW_POPUP, CALL_HIERARCHY_VIEW_POPUP, J2EE_ATTRIBUTES_VIEW_POPUP, J2EE_VIEW_POPUP, USAGE_VIEW_POPUP,
STRUCTURE_VIEW_POPUP, TODO_VIEW_POPUP, COMPILER_MESSAGES_POPUP, ANT_MESSAGES_POPUP, ANT_EXPLORER_POPUP, UPDATE_POPUP,
@@ -167,7 +169,14 @@ public abstract class ActionPlaces {
V8_CPU_PROFILING_POPUP, V8_HEAP_PROFILING_POPUP, V8_HEAP_PROFILING_POPUP, RUN_DASHBOARD_POPUP
);
private static final String POPUP_PREFIX = "popup@";
public static boolean isPopupPlace(@NotNull String place) {
return ourPopupPlaces.contains(place);
return ourPopupPlaces.contains(place) || place.startsWith(POPUP_PREFIX);
}
@NotNull
public static String getActionGroupPopupPlace(@Nullable String actionId) {
return actionId == null ? POPUP : POPUP_PREFIX + actionId;
}
}
@@ -571,9 +571,12 @@ public final class IdeKeyEventDispatcher implements Disposable {
DataContext ctx = actionEvent.getDataContext();
if (action instanceof ActionGroup && !((ActionGroup)action).canBePerformed(ctx)) {
ActionGroup group = (ActionGroup)action;
JBPopupFactory.getInstance()
.createActionGroupPopup(group.getTemplatePresentation().getText(), group, ctx, JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, false)
.showInBestPositionFor(ctx);
String groupId = ActionManager.getInstance().getId(action);
JBPopupFactory.getInstance().createActionGroupPopup(
group.getTemplatePresentation().getText(), group, ctx,
JBPopupFactory.ActionSelectionAid.SPEEDSEARCH,
false, null, -1, null, ActionPlaces.getActionGroupPopupPlace(groupId))
.showInBestPositionFor(ctx);
}
else {
ActionUtil.performActionDumbAware(action, actionEvent);