use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.
the class KeymapGenerator method main.
@Override
public void main(String[] args) {
ActionManager actionManager = ActionManager.getInstance();
StringBuilder xml = new StringBuilder();
xml.append("<Keymaps>\n");
for (Keymap keymap : KeymapManagerEx.getInstanceEx().getAllKeymaps()) {
xml.append(" <Keymap name=\"").append(keymap.getPresentableName()).append("\">\n");
for (String id : keymap.getActionIdList()) {
String shortcuts = KeymapUtil.getShortcutsText(keymap.getShortcuts(id));
if (!StringUtil.isEmpty(shortcuts)) {
AnAction action = actionManager.getAction(id);
xml.append(" <Action id=\"").append(id).append("\">\n");
Set<String> addedShortcuts = new THashSet<>();
for (Shortcut shortcut : keymap.getShortcuts(id)) {
// Different shortcuts may have equal display strings (e.g. shift+minus and shift+subtract)
// We don't want them do be duplicated for users
String shortcutText = KeymapUtil.getShortcutText(shortcut);
if (addedShortcuts.add(shortcutText)) {
xml.append(" <Shortcut>").append(shortcutText).append("</Shortcut>\n");
}
}
if (action != null) {
String text = action.getTemplatePresentation().getText();
if (text != null) {
xml.append(" <Text>").append(StringUtil.escapeXml(text)).append("</Text>\n");
}
}
xml.append(" </Action>\n");
}
}
xml.append(" </Keymap>\n");
}
xml.append("</Keymaps>");
final String path = args.length == 2 ? args[1] : PathManager.getHomePath() + File.separator + "AllKeymaps.xml";
File out = new File(path);
try {
FileUtil.writeToFile(out, xml.toString());
System.out.println("Saved to: " + out.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
System.exit(0);
}
use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.
the class TipUIUtil method updateShortcuts.
private static void updateShortcuts(StringBuffer text) {
int lastIndex = 0;
while (true) {
lastIndex = text.indexOf(SHORTCUT_ENTITY, lastIndex);
if (lastIndex < 0)
return;
final int actionIdStart = lastIndex + SHORTCUT_ENTITY.length();
int actionIdEnd = text.indexOf(";", actionIdStart);
if (actionIdEnd < 0) {
return;
}
final String actionId = text.substring(actionIdStart, actionIdEnd);
String shortcutText = getShortcutText(actionId, KeymapManager.getInstance().getActiveKeymap());
if (shortcutText == null) {
Keymap defKeymap = KeymapManager.getInstance().getKeymap(DefaultKeymap.getInstance().getDefaultKeymapName());
if (defKeymap != null) {
shortcutText = getShortcutText(actionId, defKeymap);
if (shortcutText != null) {
shortcutText += " in default keymap";
}
}
}
if (shortcutText == null) {
shortcutText = "<no shortcut for action " + actionId + ">";
}
text.replace(lastIndex, actionIdEnd + 1, shortcutText);
lastIndex += shortcutText.length();
}
}
use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.
the class PreviewManagerImpl method checkGlobalState.
protected void checkGlobalState() {
ToolWindowManagerImpl toolWindowManager = (ToolWindowManagerImpl) ToolWindowManager.getInstance(myProject);
if (!isAvailable() && toolWindowManager.getToolWindow(ToolWindowId.PREVIEW) != null) {
myHistory.clear();
myContentManager.removeAllContents(true);
toolWindowManager.unregisterToolWindow(ToolWindowId.PREVIEW);
return;
}
if (isAvailable() && toolWindowManager.getToolWindow(ToolWindowId.PREVIEW) == null) {
myToolWindow = (ToolWindowImpl) toolWindowManager.registerToolWindow(ToolWindowId.PREVIEW, myEmptyStatePanel, ToolWindowAnchor.RIGHT, myProject, false);
myContentManager = myToolWindow.getContentManager();
myToolWindow.setIcon(AllIcons.Toolwindows.ToolWindowPreview);
myToolWindow.setContentUiType(ToolWindowContentUiType.COMBO, null);
myToolWindow.setAutoHide(true);
myEmptyStateContent = myContentManager.getContent(0);
final MoveToStandardViewAction moveToStandardViewAction = new MoveToStandardViewAction();
myContentManager.addContentManagerListener(new ContentManagerAdapter() {
@Override
public void selectionChanged(ContentManagerEvent event) {
if (myInnerSelectionChange || event.getOperation() != ContentManagerEvent.ContentOperation.add)
return;
PreviewInfo previewInfo = event.getContent().getUserData(INFO_KEY);
if (previewInfo != null) {
preview(previewInfo, false);
myToolWindow.setTitleActions(previewInfo.supportsStandardPlace() ? moveToStandardViewAction : null);
}
}
});
moveToStandardViewAction.registerCustomShortcutSet(new ShortcutSet() {
@NotNull
@Override
public Shortcut[] getShortcuts() {
Keymap keymap = KeymapManager.getInstance().getActiveKeymap();
return keymap.getShortcuts("ShowContent");
}
}, myToolWindow.getComponent());
myToolWindow.setTitleActions(moveToStandardViewAction);
ArrayList<AnAction> myGearActions = new ArrayList<>();
for (PreviewPanelProvider provider : myProviders) {
myGearActions.add(new ContentTypeToggleAction(provider));
}
myToolWindow.setAdditionalGearActions(new DefaultActionGroup("Preview", myGearActions));
myToolWindow.activate(() -> myToolWindow.activate(null));
}
}
use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.
the class KeymapsTestCase method testDuplicateShortcuts.
public void testDuplicateShortcuts() {
StringBuilder failMessage = new StringBuilder();
Map<String, Map<String, List<String>>> knownDuplicates = getKnownDuplicates();
for (Keymap keymap : KeymapManagerEx.getInstanceEx().getSchemeManager().getAllSchemes()) {
String failure = checkDuplicatesInKeymap((KeymapImpl) keymap, knownDuplicates);
if (failMessage.length() > 0) {
failMessage.append("\n");
}
failMessage.append(failure);
}
if (failMessage.length() > 0) {
TestCase.fail(failMessage + "\n" + "Please specify 'use-shortcut-of' attribute for your action if it is similar to another action (but it won't appear in Settings/Keymap),\n" + "reassign shortcut or, if absolutely must, modify the 'known duplicates list'");
}
}
use of com.intellij.openapi.keymap.Keymap in project intellij-community by JetBrains.
the class KeymapsTestCase method testValidActionIds.
public void testValidActionIds() {
THashSet<String> unknownActions = new THashSet<>();
collectUnknownActions(unknownActions);
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection") Map<String, List<String>> missingActions = new FactoryMap<String, List<String>>() {
@Override
protected Map<String, List<String>> createMap() {
return new LinkedHashMap<>();
}
@Nullable
@Override
protected List<String> create(String key) {
return new ArrayList<>();
}
};
for (Keymap keymap : KeymapManagerEx.getInstanceEx().getAllKeymaps()) {
List<String> ids = new ArrayList<>(keymap.getActionIdList());
ids.sort(null);
assertThat(ids).isEqualTo(new ArrayList<>(new LinkedHashSet<>(ids)));
for (String cid : ids) {
if (unknownActions.contains(cid))
continue;
AnAction action = ActionManager.getInstance().getAction(cid);
if (action == null) {
if (OUTPUT_TEST_DATA) {
System.out.print("\"" + cid + "\", ");
} else {
missingActions.get(keymap.getName()).add(cid);
}
}
}
}
List<String> reappearedAction = new ArrayList<>();
for (String id : unknownActions) {
AnAction action = ActionManager.getInstance().getAction(id);
if (action != null) {
reappearedAction.add(id);
}
}
if (!missingActions.isEmpty() || !reappearedAction.isEmpty()) {
StringBuilder message = new StringBuilder();
if (!missingActions.isEmpty()) {
for (Map.Entry<String, List<String>> keymapAndActions : missingActions.entrySet()) {
message.append("Unknown actions in keymap ").append(keymapAndActions.getKey()).append(", add them to unknown actions list:\n");
for (String action : keymapAndActions.getValue()) {
message.append("\"").append(action).append("\",").append("\n");
}
}
}
if (!reappearedAction.isEmpty()) {
message.append("The following actions have reappeared, remove them from unknown action list:\n");
for (String action : reappearedAction) {
message.append(action).append("\n");
}
}
fail("\n" + message);
}
}
Aggregations