public void apply() { if (myRenamingList != null) { for (Pair<String, String> pair : myRenamingList) { Keymap[] allKeymaps = KeymapManagerEx.getInstanceEx().getAllKeymaps(); for (Keymap keymap : allKeymaps) { keymap.removeAllActionShortcuts(ActionMacro.MACRO_ACTION_PREFIX + pair.getSecond()); for (Shortcut shortcut : keymap.getShortcuts(ActionMacro.MACRO_ACTION_PREFIX + pair.getFirst())) { keymap.addShortcut(ActionMacro.MACRO_ACTION_PREFIX + pair.getSecond(), shortcut); } keymap.removeAllActionShortcuts(ActionMacro.MACRO_ACTION_PREFIX + pair.getFirst()); } } } final ActionMacroManager manager = ActionMacroManager.getInstance(); ActionMacro[] macros = manager.getAllMacros(); HashSet<String> removedIds = new HashSet<String>(); for (ActionMacro macro1 : macros) { removedIds.add(macro1.getActionId()); } manager.removeAllMacros(); final Enumeration newMacros = myMacrosModel.elements(); while (newMacros.hasMoreElements()) { ActionMacro macro = (ActionMacro) newMacros.nextElement(); manager.addMacro(macro); removedIds.remove(macro.getActionId()); } manager.registerActions(); for (String id : removedIds) { Keymap[] allKeymaps = KeymapManagerEx.getInstanceEx().getAllKeymaps(); for (Keymap keymap : allKeymaps) { keymap.removeAllActionShortcuts(id); } } }
private static void patchKeymap() { Set<String> droppedActions = ContainerUtil.newHashSet( "AddToFavoritesPopup", "DatabaseView.ImportDataSources", "CompileDirty", "Compile", // hidden "AddNewFavoritesList", "EditFavorites", "RenameFavoritesList", "RemoveFavoritesList"); KeymapManagerEx keymapManager = KeymapManagerEx.getInstanceEx(); for (Keymap keymap : keymapManager.getAllKeymaps()) { if (keymap.canModify()) continue; KeymapImpl keymapImpl = (KeymapImpl) keymap; for (String id : keymapImpl.getOwnActionIds()) { if (droppedActions.contains(id)) keymapImpl.clearOwnActionsId(id); } } }