vcs: Reused in "commit dialog" action group (and shortcuts) as in "UnversionedViewDialog"

This commit is contained in:
Konstantin Kolosovsky
2016-04-20 18:10:19 +03:00
parent 5f176262f2
commit 7baf49da1f
2 changed files with 33 additions and 23 deletions
@@ -36,6 +36,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.ui.ScrollPaneFactory;
import com.intellij.util.EditSourceOnDoubleClickHandler;
import com.intellij.util.EditSourceOnEnterKeyHandler;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.tree.TreeUtil;
import org.jetbrains.annotations.NotNull;
@@ -43,7 +44,6 @@ import javax.swing.*;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -110,10 +110,12 @@ public class UnversionedViewDialog extends DialogWrapper {
final DefaultActionGroup group = new DefaultActionGroup();
final ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar("UNVERSIONED_DIALOG", group, true);
final ActionGroup operatingActions = (ActionGroup)ActionManager.getInstance().getAction("Unversioned.Files.Dialog");
registerShortcuts(operatingActions, actionToolbar.getToolbarDataContext());
refreshViewAfterActionPerformed(operatingActions);
group.add(operatingActions);
registerUnversionedActionsShortcuts(actionToolbar.getToolbarDataContext(), myView);
// special shortcut for deleting a file
EmptyAction.registerWithShortcutSet("ChangesView.DeleteUnversioned.From.Dialog", CommonShortcuts.getDelete(), myView);
refreshViewAfterActionPerformed(getUnversionedActionGroup());
group.add(getUnversionedActionGroup());
final CommonActionsManager cam = CommonActionsManager.getInstance();
final Expander expander = new Expander();
@@ -126,23 +128,12 @@ public class UnversionedViewDialog extends DialogWrapper {
myPanel.add(ScrollPaneFactory.createScrollPane(myView), BorderLayout.CENTER);
final DefaultActionGroup secondGroup = new DefaultActionGroup();
secondGroup.addAll(operatingActions);
secondGroup.addAll(getUnversionedActionGroup());
myView.setMenuActions(secondGroup);
myView.setShowFlatten(false);
}
private void registerShortcuts(@NotNull ActionGroup opActionGroup, @NotNull DataContext dataContext) {
List<AnAction> opActions = new ArrayList<AnAction>();
Utils.expandActionGroup(opActionGroup, opActions, new PresentationFactory(), dataContext, "", ActionManager.getInstance());
for (AnAction action : opActions) {
action.registerCustomShortcutSet(action.getShortcutSet(), myView);
}
// special shortcut for deleting a file
EmptyAction.registerWithShortcutSet("ChangesView.DeleteUnversioned.From.Dialog", CommonShortcuts.getDelete(), myView);
}
private void refreshViewAfterActionPerformed(@NotNull final ActionGroup opActionGroup) {
ActionManager.getInstance().addAnActionListener(new AnActionListener.Adapter() {
@Override
@@ -157,6 +148,21 @@ public class UnversionedViewDialog extends DialogWrapper {
}, myDisposable);
}
@NotNull
public static ActionGroup getUnversionedActionGroup() {
return (ActionGroup)ActionManager.getInstance().getAction("Unversioned.Files.Dialog");
}
public static void registerUnversionedActionsShortcuts(@NotNull DataContext dataContext, @NotNull JComponent component) {
ActionManager manager = ActionManager.getInstance();
List<AnAction> actions = ContainerUtil.newArrayList();
Utils.expandActionGroup(getUnversionedActionGroup(), actions, new PresentationFactory(), dataContext, "", manager);
for (AnAction action : actions) {
action.registerCustomShortcutSet(action.getShortcutSet(), component);
}
}
@Override
protected String getDimensionServiceKey() {
return "com.intellij.openapi.vcs.changes.UnversionedViewDialog";
@@ -16,6 +16,7 @@
package com.intellij.openapi.vcs.changes.ui;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.AnActionListener;
import com.intellij.openapi.application.ApplicationManager;
@@ -304,9 +305,6 @@ public class MultipleChangeListBrowser extends ChangesBrowserBase<Object> {
protected void buildToolBar(@NotNull DefaultActionGroup toolBarGroup) {
super.buildToolBar(toolBarGroup);
EmptyAction.registerWithShortcutSet(IdeActions.MOVE_TO_ANOTHER_CHANGE_LIST, CommonShortcuts.getMove(), myViewer);
toolBarGroup.add(ActionManager.getInstance().getAction(IdeActions.MOVE_TO_ANOTHER_CHANGE_LIST));
toolBarGroup.add(new AnAction("Refresh Changes", null, AllIcons.Actions.Refresh) {
@Override
public void actionPerformed(AnActionEvent e) {
@@ -314,10 +312,16 @@ public class MultipleChangeListBrowser extends ChangesBrowserBase<Object> {
}
});
if (Registry.is("vcs.unversioned.files.in.commit")) {
toolBarGroup.add(ActionManager.getInstance().getAction("ChangesView.AddUnversioned.From.Dialog"));
toolBarGroup.add(ActionManager.getInstance().getAction("ChangesView.DeleteUnversioned.From.Dialog"));
toolBarGroup.add(ActionManager.getInstance().getAction("ChangesView.Ignore"));
toolBarGroup.add(UnversionedViewDialog.getUnversionedActionGroup());
}
else {
toolBarGroup.add(ActionManager.getInstance().getAction(IdeActions.MOVE_TO_ANOTHER_CHANGE_LIST));
}
UnversionedViewDialog.registerUnversionedActionsShortcuts(DataManager.getInstance().getDataContext(this), myViewer);
// We do not add "Delete" key shortcut for deleting unversioned files as this shortcut is already used to uncheck
// checkboxes in the tree.
EmptyAction.registerWithShortcutSet(IdeActions.MOVE_TO_ANOTHER_CHANGE_LIST, CommonShortcuts.getMove(), myViewer);
RollbackDialogAction rollback = new RollbackDialogAction();
EmptyAction.setupAction(rollback, IdeActions.CHANGES_VIEW_ROLLBACK, this);
toolBarGroup.add(rollback);