Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public void update(@Nonnull AnActionEvent e) {

private void addActions(List<Object> actions) {
for (final Object raw : actions) {
doAddAction(raw);
doAddAction(raw, Constraints.LAST);
}
}

Expand All @@ -261,41 +261,50 @@ public List<Object> getActions() {
@Override
public void addAction(Object raw) {
this.group.addAction(raw);
this.doAddAction(raw);
doAddAction(raw, Constraints.LAST);
}

@Override
public void prependAction(Object action) {
throw new NotImplementedException();
this.group.prependAction(action);
doAddAction(action, Constraints.FIRST);
}

public void doAddAction(Object raw) {
private void doAddAction(Object raw, Constraints constraints) {
AnAction anAction = getAction(raw);
if (anAction != null) {
this.add(anAction, constraints);
}
}

private AnAction getAction(Object raw) {
if (raw instanceof Action.Id) {
raw = ((Action.Id<?>) raw).getId();
}
if (raw instanceof String) {
final String actionId = (String) raw;
if (raw instanceof String actionId) {
if (actionId.startsWith("-")) {
final String title = actionId.replaceAll("-", "").trim();
if (StringUtils.isBlank(title)) {
this.addSeparator();
return Separator.create();
} else {
this.addSeparator(title);
return Separator.create(title);
}
} else if (StringUtils.isNotBlank(actionId)) {
final ActionManager am = ActionManager.getInstance();
final AnAction action = am.getAction(actionId);
if (action instanceof com.intellij.openapi.actionSystem.ActionGroup) {
this.add(action);
return action;
} else if (Objects.nonNull(action)) {
this.add(new com.intellij.openapi.actionSystem.AnActionWrapper(action));
return new com.intellij.openapi.actionSystem.AnActionWrapper(action);
}
}
} else if (raw instanceof Action<?>) {
this.add(new AnActionWrapper<>((Action<?>) raw));
return new AnActionWrapper<>((Action<?>) raw);
} else if (raw instanceof ActionGroup) {
this.add(new ActionGroupWrapper((ActionGroup) raw));
return new ActionGroupWrapper((ActionGroup) raw);
}

return null;
}

public void registerCustomShortcutSetForActions(JComponent component, @Nullable Disposable disposable) {
Expand Down