Search in sources :

Example 26 with Keymap

use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.

the class ExternalSystemShortcutsManager method getShortcuts.

@NotNull
private Shortcut[] getShortcuts(@Nullable String projectPath, @Nullable String taskName) {
    String actionId = getActionId(projectPath, taskName);
    if (actionId == null)
        return Shortcut.EMPTY_ARRAY;
    Keymap activeKeymap = KeymapManager.getInstance().getActiveKeymap();
    return activeKeymap.getShortcuts(actionId);
}
Also used : Keymap(com.intellij.openapi.keymap.Keymap) NotNull(org.jetbrains.annotations.NotNull)

Example 27 with Keymap

use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.

the class KeymapsTestCase method checkDuplicatesInKeymap.

@NotNull
@SuppressWarnings({ "HardCodedStringLiteral" })
private static String checkDuplicatesInKeymap(@NotNull KeymapImpl keymap, @NotNull Map<String, Map<String, List<String>>> allKnownDuplicates) {
    Set<String> aids = keymap.getActionIdList();
    removeBoundActionIds(aids);
    Set<Shortcut> shortcuts = new THashSet<>();
    nextId: for (String id : aids) {
        Map<String, List<String>> knownDuplicates = allKnownDuplicates.get(keymap.getName());
        if (knownDuplicates != null) {
            for (List<String> actionsMapping : knownDuplicates.values()) {
                if (actionsMapping.contains(id)) {
                    continue nextId;
                }
            }
        }
        for (Shortcut shortcut : keymap.getShortcuts(id)) {
            if (shortcut instanceof KeyboardShortcut) {
                shortcuts.add(shortcut);
            }
        }
    }
    List<Shortcut> sorted = new ArrayList<>(shortcuts);
    Collections.sort(sorted, Comparator.comparing(KeymapsTestCase::getText));
    if (OUTPUT_TEST_DATA) {
        System.out.println("put(\"" + keymap.getName() + "\", new String[][] {");
    } else {
        System.out.println(keymap.getName());
    }
    StringBuilder failMessage = new StringBuilder();
    for (Shortcut shortcut : sorted) {
        if (!(shortcut instanceof KeyboardShortcut)) {
            continue;
        }
        Set<String> ids = new THashSet<>(Arrays.asList(keymap.getActionIds(shortcut)));
        removeBoundActionIds(ids);
        if (ids.size() == 1) {
            continue;
        }
        Keymap parent = keymap.getParent();
        if (parent != null) {
            // ignore duplicates from default keymap
            boolean differFromParent = false;
            for (String id : ids) {
                Shortcut[] here = keymap.getShortcuts(id);
                Shortcut[] there = parent.getShortcuts(id);
                if (keymap.getName().startsWith("Mac")) {
                    convertMac(there);
                }
                if (!new THashSet<>(Arrays.asList(here)).equals(new THashSet<>(Arrays.asList(there)))) {
                    differFromParent = true;
                    break;
                }
            }
            if (!differFromParent)
                continue;
        }
        String def = "{ " + "\"" + getText(shortcut) + "\"," + StringUtil.repeatSymbol(' ', 25 - getText(shortcut).length()) + StringUtil.join(ids, StringUtil.QUOTER, ", ") + "},";
        if (OUTPUT_TEST_DATA) {
            System.out.println(def);
        } else {
            if (failMessage.length() == 0) {
                failMessage.append("Shortcut '").append(getText(shortcut)).append("' conflicts found in keymap '").append(keymap.getName()).append("':\n");
            }
            failMessage.append(def).append("\n");
        }
    }
    if (OUTPUT_TEST_DATA) {
        System.out.println("});");
    }
    return failMessage.toString();
}
Also used : THashSet(gnu.trove.THashSet) KeyboardShortcut(com.intellij.openapi.actionSystem.KeyboardShortcut) KeyboardShortcut(com.intellij.openapi.actionSystem.KeyboardShortcut) Shortcut(com.intellij.openapi.actionSystem.Shortcut) THashMap(gnu.trove.THashMap) FactoryMap(com.intellij.util.containers.FactoryMap) MacOSDefaultKeymap(com.intellij.openapi.keymap.impl.MacOSDefaultKeymap) Keymap(com.intellij.openapi.keymap.Keymap) NotNull(org.jetbrains.annotations.NotNull)

Example 28 with Keymap

use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.

the class AntToolwindowRegistrar method projectOpened.

@Override
public void projectOpened() {
    final KeymapManagerEx keymapManager = KeymapManagerEx.getInstanceEx();
    final String prefix = AntConfiguration.getActionIdPrefix(myProject);
    final ActionManager actionManager = ActionManager.getInstance();
    for (Keymap keymap : keymapManager.getAllKeymaps()) {
        for (String id : keymap.getActionIdList()) {
            if (id.startsWith(prefix) && actionManager.getAction(id) == null) {
                actionManager.registerAction(id, new TargetActionStub(id, myProject));
            }
        }
    }
    final CompilerManager compilerManager = CompilerManager.getInstance(myProject);
    compilerManager.addBeforeTask(new CompileTask() {

        @Override
        public boolean execute(CompileContext context) {
            final AntConfiguration config = AntConfiguration.getInstance(myProject);
            ((AntConfigurationBase) config).ensureInitialized();
            return config.executeTargetBeforeCompile(createDataContext(context));
        }
    });
    compilerManager.addAfterTask(new CompileTask() {

        @Override
        public boolean execute(CompileContext context) {
            final AntConfigurationBase config = (AntConfigurationBase) AntConfiguration.getInstance(myProject);
            config.ensureInitialized();
            if (context.getMessageCount(CompilerMessageCategory.ERROR) > 0) {
                final AntBuildTarget target = config.getTargetForEvent(ExecuteAfterCompilationEvent.getInstance());
                if (target != null) {
                    context.addMessage(CompilerMessageCategory.INFORMATION, "Skipping ant target \"" + target.getDisplayName() + "\" because of compilation errors", null, -1, -1);
                }
                return true;
            }
            return config.executeTargetAfterCompile(createDataContext(context));
        }
    });
}
Also used : ActionManager(com.intellij.openapi.actionSystem.ActionManager) TargetActionStub(com.intellij.lang.ant.config.actions.TargetActionStub) KeymapManagerEx(com.intellij.openapi.keymap.ex.KeymapManagerEx) AntConfiguration(com.intellij.lang.ant.config.AntConfiguration) AntBuildTarget(com.intellij.lang.ant.config.AntBuildTarget) Keymap(com.intellij.openapi.keymap.Keymap) AntConfigurationBase(com.intellij.lang.ant.config.AntConfigurationBase)

Example 29 with Keymap

use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.

the class QuickChangeKeymapAction method fillActions.

@Override
protected void fillActions(Project project, @NotNull DefaultActionGroup group, @NotNull DataContext dataContext) {
    KeymapManagerEx manager = (KeymapManagerEx) KeymapManager.getInstance();
    Keymap current = manager.getActiveKeymap();
    for (Keymap keymap : manager.getAllKeymaps()) {
        addKeymapAction(group, manager, current, keymap, false);
    }
}
Also used : KeymapManagerEx(com.intellij.openapi.keymap.ex.KeymapManagerEx) Keymap(com.intellij.openapi.keymap.Keymap)

Example 30 with Keymap

use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.

the class ToolWindowManagerImpl method getActivateToolWindowVKs.

@NotNull
private static Set<Integer> getActivateToolWindowVKs() {
    if (ApplicationManager.getApplication() == null)
        return new HashSet<>();
    Keymap keymap = KeymapManager.getInstance().getActiveKeymap();
    Shortcut[] baseShortcut = keymap.getShortcuts("ActivateProjectToolWindow");
    int baseModifiers = SystemInfo.isMac ? InputEvent.META_MASK : InputEvent.ALT_MASK;
    for (Shortcut each : baseShortcut) {
        if (each instanceof KeyboardShortcut) {
            KeyStroke keyStroke = ((KeyboardShortcut) each).getFirstKeyStroke();
            baseModifiers = keyStroke.getModifiers();
            if (baseModifiers > 0) {
                break;
            }
        }
    }
    return getModifiersVKs(baseModifiers);
}
Also used : KeyboardShortcut(com.intellij.openapi.actionSystem.KeyboardShortcut) Shortcut(com.intellij.openapi.actionSystem.Shortcut) KeyboardShortcut(com.intellij.openapi.actionSystem.KeyboardShortcut) Keymap(com.intellij.openapi.keymap.Keymap) RelativePoint(com.intellij.ui.awt.RelativePoint) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Keymap (com.intellij.openapi.keymap.Keymap)47 Shortcut (com.intellij.openapi.actionSystem.Shortcut)14 KeymapManagerEx (com.intellij.openapi.keymap.ex.KeymapManagerEx)10 NotNull (org.jetbrains.annotations.NotNull)10 KeyboardShortcut (com.intellij.openapi.actionSystem.KeyboardShortcut)7 Nullable (org.jetbrains.annotations.Nullable)7 AnAction (com.intellij.openapi.actionSystem.AnAction)6 KeymapManager (com.intellij.openapi.keymap.KeymapManager)5 ActionManager (com.intellij.openapi.actionSystem.ActionManager)4 MacOSDefaultKeymap (com.intellij.openapi.keymap.impl.MacOSDefaultKeymap)4 Pair (com.intellij.openapi.util.Pair)4 FactoryMap (com.intellij.util.containers.FactoryMap)4 THashMap (gnu.trove.THashMap)4 THashSet (gnu.trove.THashSet)4 DefaultKeymap (com.intellij.openapi.keymap.impl.DefaultKeymap)2 KeymapImpl (com.intellij.openapi.keymap.impl.KeymapImpl)2 KeymapManagerImpl (com.intellij.openapi.keymap.impl.KeymapManagerImpl)2 ToolWindow (com.intellij.openapi.wm.ToolWindow)2 KeyEvent (java.awt.event.KeyEvent)2 NonNls (org.jetbrains.annotations.NonNls)2