introduce invokeAction(..DataContext..)

This commit is contained in:
Gregory.Shrago
2018-03-27 20:19:38 +03:00
parent 46628369a6
commit 5c63a8ebbf
2 changed files with 19 additions and 9 deletions
@@ -316,13 +316,22 @@ public class ActionUtil {
return a1;
}
public static void invokeAction(@NotNull AnAction action, @Nullable InputEvent inputEvent, @NotNull Component component, @NotNull String place, @Nullable Runnable onDone) {
public static void invokeAction(@NotNull AnAction action,
@NotNull Component component,
@NotNull String place,
@Nullable InputEvent inputEvent,
@Nullable Runnable onDone) {
invokeAction(action, DataManager.getInstance().getDataContext(component), place, inputEvent, onDone);
}
public static void invokeAction(@NotNull AnAction action,
@NotNull DataContext dataContext,
@NotNull String place,
@Nullable InputEvent inputEvent,
@Nullable Runnable onDone) {
Presentation presentation = action.getTemplatePresentation().clone();
AnActionEvent event = new AnActionEvent(inputEvent, DataManager.getInstance().getDataContext(component),
place,
presentation,
ActionManager.getInstance(),
0);
AnActionEvent event = new AnActionEvent(
inputEvent, dataContext, place, presentation, ActionManager.getInstance(), 0);
performDumbAwareUpdate(false, action, event, true);
if (event.getPresentation().isEnabled() && event.getPresentation().isVisible()) {
action.actionPerformed(event);
@@ -342,12 +351,13 @@ public class ActionUtil {
LOG.warn("Can not find action by id " + actionId);
return;
}
invokeAction(action, null, component, place, null);
invokeAction(action, component, place, null, null);
}
};
}
@NotNull
public static ActionListener createActionListener(@NotNull AnAction action, @NotNull Component component, @NotNull String place) {
return e -> invokeAction(action, null, component, place, null);
return e -> invokeAction(action, component, place, null, null);
}
}
@@ -57,7 +57,7 @@ public class ActionLink extends LinkLabel implements DataProvider {
setListener(new LinkListener() {
@Override
public void linkSelected(LinkLabel aSource, Object aLinkData) {
ActionUtil.invokeAction(myAction, myEvent, ActionLink.this, myPlace, onDone);
ActionUtil.invokeAction(myAction, ActionLink.this, myPlace, myEvent, onDone);
}
}, null);
myAction = action;