mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
provide keyboard navigation
This commit is contained in:
@@ -22,6 +22,7 @@ import com.intellij.ide.util.PropertiesComponent;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.diff.impl.dir.actions.DirDiffToolbarActions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
@@ -190,7 +191,9 @@ public class DirDiffPanel implements Disposable {
|
||||
column.setMinWidth(120);
|
||||
}
|
||||
}
|
||||
final ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("DirDiff", new DirDiffToolbarActions(myModel), true);
|
||||
final DirDiffToolbarActions actions = new DirDiffToolbarActions(myModel, this.getPanel());
|
||||
final ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("DirDiff", actions, true);
|
||||
registerCustomShortcuts(actions, myRootPanel);
|
||||
myToolBarPanel.add(toolbar.getComponent(), BorderLayout.CENTER);
|
||||
final JBLoadingPanel loadingPanel = new JBLoadingPanel(new BorderLayout(), wnd.getDisposable());
|
||||
loadingPanel.add(myComponent, BorderLayout.CENTER);
|
||||
@@ -288,6 +291,13 @@ public class DirDiffPanel implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
private void registerCustomShortcuts(DirDiffToolbarActions actions, JPanel rootPanel) {
|
||||
final ActionManager mgr = ActionManager.getInstance();
|
||||
for (AnAction action : actions.getChildren(null)) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void focusTable() {
|
||||
final IdeFocusManager focusManager = myModel.getProject().isDefault()
|
||||
? IdeFocusManager.getGlobalInstance() : IdeFocusManager.getInstance(myModel.getProject());
|
||||
|
||||
+16
-5
@@ -16,9 +16,7 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.ide.diff.DirDiffSettings;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.ex.ComboBoxAction;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
@@ -31,9 +29,10 @@ import java.util.ArrayList;
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public class ChangeCompareModeGroup extends ComboBoxAction {
|
||||
public class ChangeCompareModeGroup extends ComboBoxAction implements ShortcutProvider{
|
||||
private final DefaultActionGroup myGroup;
|
||||
private DirDiffSettings mySettings;
|
||||
private JButton myButton;
|
||||
|
||||
public ChangeCompareModeGroup(DirDiffTableModel model) {
|
||||
mySettings = model.getSettings();
|
||||
@@ -51,6 +50,11 @@ public class ChangeCompareModeGroup extends ComboBoxAction {
|
||||
myGroup = new DefaultActionGroup(actions.toArray(new ChangeCompareModeAction[actions.size()]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
myButton.doClick();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
super.update(e);
|
||||
@@ -62,8 +66,10 @@ public class ChangeCompareModeGroup extends ComboBoxAction {
|
||||
public JComponent createCustomComponent(Presentation presentation) {
|
||||
JPanel panel = new JPanel(new BorderLayout());
|
||||
final JLabel label = new JLabel("Compare by:");
|
||||
label.setDisplayedMnemonicIndex(0);
|
||||
panel.add(label, BorderLayout.WEST);
|
||||
panel.add(super.createCustomComponent(presentation).getComponent(0), BorderLayout.CENTER);
|
||||
myButton = (JButton)super.createCustomComponent(presentation).getComponent(0);
|
||||
panel.add(myButton, BorderLayout.CENTER);
|
||||
panel.setBorder(IdeBorderFactory.createEmptyBorder(2, 6, 2, 0));
|
||||
return panel;
|
||||
}
|
||||
@@ -73,4 +79,9 @@ public class ChangeCompareModeGroup extends ComboBoxAction {
|
||||
protected DefaultActionGroup createPopupActionGroup(JComponent button) {
|
||||
return myGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("alt C");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.ShortcutProvider;
|
||||
import com.intellij.openapi.actionSystem.ToggleAction;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffIcons;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
@@ -25,7 +26,7 @@ import javax.swing.*;
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public abstract class DirDiffAction extends ToggleAction implements DirDiffIcons {
|
||||
public abstract class DirDiffAction extends ToggleAction implements DirDiffIcons, ShortcutProvider {
|
||||
private final DirDiffTableModel myModel;
|
||||
|
||||
protected DirDiffAction(DirDiffTableModel model, String name, Icon icon) {
|
||||
|
||||
+9
-5
@@ -15,14 +15,13 @@
|
||||
*/
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.ActionGroup;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.Separator;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
@@ -30,7 +29,7 @@ public class DirDiffToolbarActions extends ActionGroup {
|
||||
private final AnAction[] myActions;
|
||||
private final DirDiffTableModel myModel;
|
||||
|
||||
public DirDiffToolbarActions(DirDiffTableModel model) {
|
||||
public DirDiffToolbarActions(DirDiffTableModel model, JComponent panel) {
|
||||
super("Directory Diff Actions", false);
|
||||
myModel = model;
|
||||
myActions = new AnAction[] {
|
||||
@@ -44,6 +43,11 @@ public class DirDiffToolbarActions extends ActionGroup {
|
||||
new ChangeCompareModeGroup(myModel),
|
||||
Separator.getInstance()
|
||||
};
|
||||
for (AnAction action : myActions) {
|
||||
if (action instanceof ShortcutProvider) {
|
||||
action.registerCustomShortcutSet(new CustomShortcutSet(((ShortcutProvider)action).getShortcut()), panel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
|
||||
/**
|
||||
@@ -34,4 +36,9 @@ public class EnableEqual extends DirDiffAction {
|
||||
public void updateState(boolean state) {
|
||||
getModel().setShowEqual(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("alt EQUALS");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
|
||||
/**
|
||||
@@ -34,4 +36,9 @@ public class EnableLeft extends DirDiffAction {
|
||||
public void updateState(boolean state) {
|
||||
getModel().setShowNewOnSource(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("alt RIGHT");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
|
||||
/**
|
||||
@@ -34,4 +36,9 @@ public class EnableNotEqual extends DirDiffAction {
|
||||
public void updateState(boolean state) {
|
||||
getModel().setShowDifferent(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("alt MINUS");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
|
||||
/**
|
||||
@@ -34,4 +36,9 @@ public class EnableRight extends DirDiffAction {
|
||||
public void updateState(boolean state) {
|
||||
getModel().setShowNewOnTarget(state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("alt LEFT");
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -16,6 +16,8 @@
|
||||
package com.intellij.openapi.diff.impl.dir.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Shortcut;
|
||||
import com.intellij.openapi.diff.impl.dir.DirDiffTableModel;
|
||||
import com.intellij.util.Icons;
|
||||
|
||||
@@ -36,4 +38,9 @@ public class RefreshDirDiffAction extends DirDiffAction {
|
||||
protected void updateState(boolean state) {
|
||||
getModel().updateFromUI();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shortcut getShortcut() {
|
||||
return KeyboardShortcut.fromString("F5");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user