Skip to content

Commit

Permalink
more threading fixes (ActionUpdateThread.OLD_EDT issue)
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Apr 10, 2024
1 parent c2de0f3 commit fbd66d1
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.evolveum.midpoint.studio.action.browse;

import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
Expand Down Expand Up @@ -72,6 +73,11 @@ protected DefaultActionGroup createPopupActionGroup(JComponent button) {
return group;
}

@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.EDT;
}

private static class TypeAction extends AnAction implements DumbAware {

private Type type;
Expand All @@ -94,5 +100,10 @@ public void actionPerformed(@NotNull AnActionEvent e) {
combo.setSelected(type);
combo.update(e);
}

@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.EDT;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.evolveum.midpoint.studio.ui;

import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.util.NlsActions;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.function.Consumer;

public class UiAction extends AnAction {

private final Consumer<AnActionEvent> actionPerformedConsumer;

public UiAction(
@Nullable @NlsActions.ActionText String text,
@Nullable Consumer<AnActionEvent> actionPerformedConsumer) {

super(text);

this.actionPerformedConsumer = actionPerformedConsumer;
}

@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.EDT;
}

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
if (actionPerformedConsumer != null) {
actionPerformedConsumer.accept(e);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package com.evolveum.midpoint.studio.ui.browse;

import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.studio.ui.UiAction;
import com.evolveum.midpoint.studio.ui.treetable.DefaultTreeTable;
import com.evolveum.midpoint.studio.util.MidPointUtils;
import com.evolveum.midpoint.studio.util.Pair;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionPopupMenu;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.ui.TreeTableSpeedSearch;
import org.apache.commons.lang3.StringUtils;
import org.jdesktop.swingx.UIAction;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;
import java.awt.*;
Expand Down Expand Up @@ -49,20 +51,9 @@ public void actionPerformed(ActionEvent e) {

private void setupPopupMenu() {
DefaultActionGroup group = new DefaultActionGroup();
group.add(new AnAction("Copy oids") {
group.add(new UiAction("Copy oids", e -> copySelectedObjectOids()));
group.add(new UiAction("Copy names", e -> copySelectedObjectNames()));

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
copySelectedObjectOids();
}
});
group.add(new AnAction("Copy names") {

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
copySelectedObjectNames();
}
});
ActionPopupMenu menu = ActionManager.getInstance().createActionPopupMenu("ObjectTreeTablePopupMenu", group);
setComponentPopupMenu(menu.getComponent());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.evolveum.midpoint.studio.ui.cleanup;

import com.evolveum.midpoint.studio.impl.configuration.MissingRefAction;
import com.evolveum.midpoint.studio.ui.UiAction;
import com.evolveum.midpoint.studio.ui.treetable.DefaultTreeTable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionPopupMenu;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.ui.SpeedSearchComparator;
import com.intellij.ui.TreeTableSpeedSearch;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;

Expand All @@ -31,20 +33,9 @@ private void setupComponent() {

private void setupPopupMenu() {
DefaultActionGroup group = new DefaultActionGroup();
group.add(new AnAction("Download") {

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
getTableModel().markSelectedAction(MissingRefAction.DOWNLOAD);
}
});
group.add(new AnAction("Ignore") {

@Override
public void actionPerformed(@NotNull AnActionEvent e) {
getTableModel().markSelectedAction(MissingRefAction.IGNORE);
}
});
group.add(new UiAction("Download", e -> getTableModel().markSelectedAction(MissingRefAction.DOWNLOAD)));
group.add(new UiAction("Ignore", e -> getTableModel().markSelectedAction(MissingRefAction.IGNORE)));

ActionPopupMenu menu = ActionManager.getInstance().createActionPopupMenu("ObjectTreeTablePopupMenu", group);
setComponentPopupMenu(menu.getComponent());
}
Expand Down

0 comments on commit fbd66d1

Please sign in to comment.