Skip to content

Commit bc3f95d

Browse files
Merge pull request #9706 from ilnarag/intellij-action-manager-improvement
Implement "prependAction" for IntellijAzureActionManager
2 parents 830cead + 30d8ab2 commit bc3f95d

File tree

1 file changed

+21
-12
lines changed
  • PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/action

1 file changed

+21
-12
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/action/IntellijAzureActionManager.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public void update(@Nonnull AnActionEvent e) {
235235

236236
private void addActions(List<Object> actions) {
237237
for (final Object raw : actions) {
238-
doAddAction(raw);
238+
doAddAction(raw, Constraints.LAST);
239239
}
240240
}
241241

@@ -261,41 +261,50 @@ public List<Object> getActions() {
261261
@Override
262262
public void addAction(Object raw) {
263263
this.group.addAction(raw);
264-
this.doAddAction(raw);
264+
doAddAction(raw, Constraints.LAST);
265265
}
266266

267267
@Override
268268
public void prependAction(Object action) {
269-
throw new NotImplementedException();
269+
this.group.prependAction(action);
270+
doAddAction(action, Constraints.FIRST);
270271
}
271272

272-
public void doAddAction(Object raw) {
273+
private void doAddAction(Object raw, Constraints constraints) {
274+
AnAction anAction = getAction(raw);
275+
if (anAction != null) {
276+
this.add(anAction, constraints);
277+
}
278+
}
279+
280+
private AnAction getAction(Object raw) {
273281
if (raw instanceof Action.Id) {
274282
raw = ((Action.Id<?>) raw).getId();
275283
}
276-
if (raw instanceof String) {
277-
final String actionId = (String) raw;
284+
if (raw instanceof String actionId) {
278285
if (actionId.startsWith("-")) {
279286
final String title = actionId.replaceAll("-", "").trim();
280287
if (StringUtils.isBlank(title)) {
281-
this.addSeparator();
288+
return Separator.create();
282289
} else {
283-
this.addSeparator(title);
290+
return Separator.create(title);
284291
}
285292
} else if (StringUtils.isNotBlank(actionId)) {
286293
final ActionManager am = ActionManager.getInstance();
287294
final AnAction action = am.getAction(actionId);
288295
if (action instanceof com.intellij.openapi.actionSystem.ActionGroup) {
289-
this.add(action);
296+
return action;
290297
} else if (Objects.nonNull(action)) {
291-
this.add(new com.intellij.openapi.actionSystem.AnActionWrapper(action));
298+
return new com.intellij.openapi.actionSystem.AnActionWrapper(action);
292299
}
293300
}
294301
} else if (raw instanceof Action<?>) {
295-
this.add(new AnActionWrapper<>((Action<?>) raw));
302+
return new AnActionWrapper<>((Action<?>) raw);
296303
} else if (raw instanceof ActionGroup) {
297-
this.add(new ActionGroupWrapper((ActionGroup) raw));
304+
return new ActionGroupWrapper((ActionGroup) raw);
298305
}
306+
307+
return null;
299308
}
300309

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

0 commit comments

Comments
 (0)