1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-08-01 15:59:06 +02:00

Add reset handlers action for configurable table

This commit is contained in:
Alex Plate 2021-05-14 09:27:54 +03:00
parent 308ab4b4f5
commit df52f37b69
No known key found for this signature in database
GPG Key ID: 0B97153C8FFEC09F

View File

@ -27,6 +27,7 @@ import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.ui.ComboBoxTableRenderer;
import com.intellij.openapi.ui.StripeTable;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.*;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.containers.ContainerUtil;
@ -100,6 +101,7 @@ public class VimEmulationConfigurable implements Configurable {
ToolbarDecorator decorator = ToolbarDecorator.createDecorator(shortcutConflictsTable);
decorator.setToolbarPosition(ActionToolbarPosition.RIGHT);
decorator.addExtraAction(new CopyForRcAction(model));
decorator.addExtraAction(new ResetHandlersAction(model, shortcutConflictsTable));
final JPanel scrollPane = decorator.createPanel();
scrollPane.setBorder(new LineBorder(JBColor.border()));
@ -397,4 +399,41 @@ public class VimEmulationConfigurable implements Configurable {
ClipboardHandler.setClipboardText(data, Collections.emptyList(), data);
}
}
public static class ResetHandlersAction extends DumbAwareActionButton {
private final VimShortcutConflictsTable.Model myModel;
private final VimShortcutConflictsTable myTable;
public ResetHandlersAction(VimShortcutConflictsTable.@NotNull Model model, VimShortcutConflictsTable table) {
super("Reset Handlers", "Reset handlers", AllIcons.General.Reset);
myModel = model;
myTable = table;
}
@Override
public void updateButton(@NotNull AnActionEvent e) {
boolean enabled = myModel.getRows().stream().anyMatch(it -> it.getOwner() instanceof ShortcutOwnerInfo.AllModes &&
((ShortcutOwnerInfo.AllModes)it.getOwner()).getOwner() !=
ShortcutOwner.UNDEFINED);
e.getPresentation().setEnabled(enabled);
}
@Override
public void actionPerformed(@NotNull AnActionEvent e) {
TableUtil.stopEditing(myTable);
for (VimShortcutConflictsTable.Row row : myModel.getRows()) {
ShortcutOwnerInfo owner = row.getOwner();
if (owner instanceof ShortcutOwnerInfo.AllModes) {
if (((ShortcutOwnerInfo.AllModes)owner).getOwner() != ShortcutOwner.UNDEFINED) {
row.setOwner(ShortcutOwnerInfo.allUndefined);
}
}
}
IdeFocusManager.getGlobalInstance()
.doWhenFocusSettlesDown(() -> IdeFocusManager.getGlobalInstance().requestFocus(myTable, true));
TableUtil.updateScroller(myTable);
}
}
}