Search in sources :

Example 11 with Group

use of com.intellij.openapi.keymap.impl.ui.Group in project intellij-community by JetBrains.

the class VcsKeymapExtension method createGroup.

public KeymapGroup createGroup(final Condition<AnAction> filtered, final Project project) {
    KeymapGroup result = KeymapGroupFactory.getInstance().createGroup(KeyMapBundle.message("version.control.group.title"));
    AnAction[] versionControlsGroups = ActionsTreeUtil.getActions("VcsGroup");
    AnAction[] keymapGroups = ActionsTreeUtil.getActions("Vcs.KeymapGroup");
    for (AnAction action : ContainerUtil.concat(versionControlsGroups, keymapGroups)) {
        ActionsTreeUtil.addAction(result, action, filtered, false);
    }
    AnAction[] generalActions = ActionsTreeUtil.getActions("VcsGeneral.KeymapGroup");
    for (AnAction action : generalActions) {
        ActionsTreeUtil.addAction(result, action, filtered, true);
    }
    if (result instanceof Group) {
        ((Group) result).normalizeSeparators();
    }
    return result;
}
Also used : KeymapGroup(com.intellij.openapi.keymap.KeymapGroup) Group(com.intellij.openapi.keymap.impl.ui.Group) KeymapGroup(com.intellij.openapi.keymap.KeymapGroup) AnAction(com.intellij.openapi.actionSystem.AnAction)

Example 12 with Group

use of com.intellij.openapi.keymap.impl.ui.Group in project intellij-community by JetBrains.

the class CustomizationUtil method getActionUrl.

public static ActionUrl getActionUrl(final TreePath treePath, int actionType) {
    ActionUrl url = new ActionUrl();
    for (int i = 0; i < treePath.getPath().length - 1; i++) {
        Object o = ((DefaultMutableTreeNode) treePath.getPath()[i]).getUserObject();
        if (o instanceof Group) {
            url.getGroupPath().add(((Group) o).getName());
        }
    }
    final DefaultMutableTreeNode component = ((DefaultMutableTreeNode) treePath.getLastPathComponent());
    url.setComponent(component.getUserObject());
    final TreeNode parent = component.getParent();
    url.setAbsolutePosition(parent != null ? parent.getIndex(component) : 0);
    url.setActionType(actionType);
    return url;
}
Also used : Group(com.intellij.openapi.keymap.impl.ui.Group) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreeNode(javax.swing.tree.TreeNode) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode)

Example 13 with Group

use of com.intellij.openapi.keymap.impl.ui.Group in project intellij-community by JetBrains.

the class CustomizationUtil method optimizeSchema.

public static void optimizeSchema(final JTree tree, final CustomActionsSchema schema) {
    //noinspection HardCodedStringLiteral
    Group rootGroup = new Group("root", null, null);
    DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootGroup);
    root.removeAllChildren();
    schema.fillActionGroups(root);
    final JTree defaultTree = new Tree(new DefaultTreeModel(root));
    final List<ActionUrl> actions = new ArrayList<>();
    TreeUtil.traverseDepth((TreeNode) tree.getModel().getRoot(), node -> {
        DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) node;
        Object userObject = treeNode.getUserObject();
        if (treeNode.isLeaf() && !(userObject instanceof Group)) {
            return true;
        }
        ActionUrl url = getActionUrl(new TreePath(treeNode.getPath()), 0);
        String groupName = ((Group) userObject).getName();
        url.getGroupPath().add(groupName);
        final TreePath treePath = getTreePath(defaultTree, url);
        if (treePath != null) {
            final DefaultMutableTreeNode visited = (DefaultMutableTreeNode) treePath.getLastPathComponent();
            final ActionUrl[] defaultUserObjects = getChildUserObjects(visited, url);
            final ActionUrl[] currentUserObjects = getChildUserObjects(treeNode, url);
            computeDiff(defaultUserObjects, currentUserObjects, actions);
        } else {
            url.getGroupPath().remove(url.getParentGroup());
            if (actions.contains(url)) {
                url.getGroupPath().add(groupName);
                actions.addAll(schema.getChildActions(url));
            }
        }
        return true;
    });
    schema.setActions(actions);
}
Also used : Group(com.intellij.openapi.keymap.impl.ui.Group) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) TreePath(javax.swing.tree.TreePath) ArrayList(java.util.ArrayList) Tree(com.intellij.ui.treeStructure.Tree) DefaultTreeModel(javax.swing.tree.DefaultTreeModel)

Aggregations

Group (com.intellij.openapi.keymap.impl.ui.Group)13 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)5 ActionGroup (com.intellij.openapi.actionSystem.ActionGroup)4 KeymapGroup (com.intellij.openapi.keymap.KeymapGroup)4 TreePath (javax.swing.tree.TreePath)4 AnAction (com.intellij.openapi.actionSystem.AnAction)3 Tree (com.intellij.ui.treeStructure.Tree)2 DefaultTreeModel (javax.swing.tree.DefaultTreeModel)2 TreeNode (javax.swing.tree.TreeNode)2 AllIcons (com.intellij.icons.AllIcons)1 DataManager (com.intellij.ide.DataManager)1 CustomActionsSchema (com.intellij.ide.ui.customization.CustomActionsSchema)1 com.intellij.openapi.actionSystem (com.intellij.openapi.actionSystem)1 DefaultActionGroup (com.intellij.openapi.actionSystem.DefaultActionGroup)1 Separator (com.intellij.openapi.actionSystem.Separator)1 ActionManagerEx (com.intellij.openapi.actionSystem.ex.ActionManagerEx)1 ApplicationManager (com.intellij.openapi.application.ApplicationManager)1 ExtensionPoint (com.intellij.openapi.extensions.ExtensionPoint)1 ExternalSystemKeymapExtension (com.intellij.openapi.externalSystem.service.project.manage.ExternalSystemKeymapExtension)1 KeymapGroupFactory (com.intellij.openapi.keymap.KeymapGroupFactory)1