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:
parent
308ab4b4f5
commit
df52f37b69
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user