This commit is contained in:
Vladimir Krivosheev
2015-06-22 16:14:40 +02:00
parent 8f74b9d2d8
commit 96b593fd75
2 changed files with 16 additions and 17 deletions
@@ -23,9 +23,9 @@ import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.SystemInfo;
import org.jdom.Document;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.net.URL;
import java.util.ArrayList;
@@ -42,19 +42,18 @@ public class DefaultKeymap {
@NonNls
private static final String NAME_ATTRIBUTE = "name";
private final ArrayList<Keymap> myKeymaps = new ArrayList<Keymap>();
private final List<Keymap> myKeymaps = new ArrayList<Keymap>();
public static DefaultKeymap getInstance() {
return ServiceManager.getService(DefaultKeymap.class);
}
public DefaultKeymap() {
for(BundledKeymapProvider provider: getProviders()) {
for (BundledKeymapProvider provider : getProviders()) {
final List<String> fileNames = provider.getKeymapFileNames();
for (String fileName : fileNames) {
try {
final Document document = JDOMUtil.loadResourceDocument(new URL("file:///idea/" + fileName));
loadKeymapsFromElement(document.getRootElement());
loadKeymapsFromElement(JDOMUtil.loadResourceDocument(new URL("file:///idea/" + fileName)).getRootElement());
}
catch (Exception e) {
LOG.error(e);
@@ -63,23 +62,22 @@ public class DefaultKeymap {
}
}
@NotNull
protected BundledKeymapProvider[] getProviders() {
return Extensions.getExtensions(BundledKeymapProvider.EP_NAME);
}
private void loadKeymapsFromElement(final Element element) throws InvalidDataException {
@SuppressWarnings("unchecked") final List<Element> children = (List<Element>)element.getChildren();
for (Element child : children) {
if (KEY_MAP.equals(child.getName())) {
String keymapName = child.getAttributeValue(NAME_ATTRIBUTE);
DefaultKeymapImpl keymap = keymapName.startsWith(KeymapManager.MAC_OS_X_KEYMAP) ? new MacOSDefaultKeymap() : new DefaultKeymapImpl();
keymap.readExternal(child, myKeymaps.toArray(new Keymap[myKeymaps.size()]));
keymap.setName(keymapName);
myKeymaps.add(keymap);
}
private void loadKeymapsFromElement(@NotNull Element element) throws InvalidDataException {
for (Element child : element.getChildren(KEY_MAP)) {
String keymapName = child.getAttributeValue(NAME_ATTRIBUTE);
DefaultKeymapImpl keymap = keymapName.startsWith(KeymapManager.MAC_OS_X_KEYMAP) ? new MacOSDefaultKeymap() : new DefaultKeymapImpl();
keymap.readExternal(child, myKeymaps.toArray(new Keymap[myKeymaps.size()]));
keymap.setName(keymapName);
myKeymaps.add(keymap);
}
}
@NotNull
public Keymap[] getKeymaps() {
return myKeymaps.toArray(new Keymap[myKeymaps.size()]);
}
@@ -96,7 +94,7 @@ public class DefaultKeymap {
}
}
public String getKeymapPresentableName(KeymapImpl keymap) {
public String getKeymapPresentableName(@NotNull KeymapImpl keymap) {
String name = keymap.getName();
return KeymapManager.DEFAULT_IDEA_KEYMAP.equals(name) ? "Default" : name;
}
@@ -2,6 +2,7 @@ package com.intellij.openapi.keymap.impl;
import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
public class GenericKeymapManager extends DefaultKeymap {
@Override
@@ -18,7 +19,7 @@ public class GenericKeymapManager extends DefaultKeymap {
}
@Override
public String getKeymapPresentableName(KeymapImpl keymap) {
public String getKeymapPresentableName(@NotNull KeymapImpl keymap) {
final String name = keymap.getName();
if (getDefaultKeymapName().equals(name)) {