From 62098dcc60e1ee13ad4536d8e6cfe5d6395d39f5 Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Wed, 17 May 2017 13:51:12 +0300 Subject: [PATCH] IDEA-165950 National keyboard layouts support --- .../KeyboardSettingsExternalizable.java | 19 ++++++++++--------- ...ternationalizationNotificationManager.java | 2 +- .../openapi/keymap/impl/ui/KeymapPanel.java | 6 +++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/keymap/KeyboardSettingsExternalizable.java b/platform/platform-api/src/com/intellij/openapi/keymap/KeyboardSettingsExternalizable.java index 0cb39cdee1a8..ba9101408a13 100644 --- a/platform/platform-api/src/com/intellij/openapi/keymap/KeyboardSettingsExternalizable.java +++ b/platform/platform-api/src/com/intellij/openapi/keymap/KeyboardSettingsExternalizable.java @@ -67,7 +67,8 @@ public class KeyboardSettingsExternalizable implements PersistentStateComponent< } public static final class OptionSet { - public boolean USE_NON_ENGLISH_KEYBOARD = false; + public boolean PREFER_KEY_POSITION_OVER_CHAR_OPTION + = "true".equals(System.getProperty("com.jetbrains.use.old.keyevent.processing")); } private OptionSet myOptions = new OptionSet(); @@ -89,19 +90,19 @@ public class KeyboardSettingsExternalizable implements PersistentStateComponent< @Override public void loadState(OptionSet state) { + state.PREFER_KEY_POSITION_OVER_CHAR_OPTION + = state.PREFER_KEY_POSITION_OVER_CHAR_OPTION + || "true".equals(System.getProperty("com.jetbrains.use.old.keyevent.processing")); + myOptions = state; } - public boolean isUkrainianKeyboard (Component c) { - return c!=null && "uk".equals(c.getInputContext().getLocale().getLanguage()); + public boolean isPreferKeyPositionOverCharOption () { + return myOptions.PREFER_KEY_POSITION_OVER_CHAR_OPTION; } - public boolean isNonEnglishKeyboardSupportEnabled () { - return myOptions.USE_NON_ENGLISH_KEYBOARD; - } - - public void setNonEnglishKeyboardSupportEnabled (boolean enabled) { - myOptions.USE_NON_ENGLISH_KEYBOARD = enabled; + public void setPreferKeyPositionOverCharOption (boolean enabled) { + myOptions.PREFER_KEY_POSITION_OVER_CHAR_OPTION = enabled; } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/KeyboardInternationalizationNotificationManager.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/KeyboardInternationalizationNotificationManager.java index 6a6dce00d1fb..ded7a3587016 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/KeyboardInternationalizationNotificationManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/KeyboardInternationalizationNotificationManager.java @@ -83,7 +83,7 @@ public class KeyboardInternationalizationNotificationManager { if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { final String description = event.getDescription(); if ("enable".equals(description)) { - KeyboardSettingsExternalizable.getInstance().setNonEnglishKeyboardSupportEnabled(true); + KeyboardSettingsExternalizable.getInstance().setPreferKeyPositionOverCharOption(true); } else if ("settings".equals(description)) { final ShowSettingsUtil util = ShowSettingsUtil.getInstance(); diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java index e7b87e22414f..d4d5b0190ae4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/KeymapPanel.java @@ -87,15 +87,15 @@ public class KeymapPanel extends JPanel implements SearchableConfigurable, Confi preferKeyPositionOverCharOption = new JCheckBox(new AbstractAction(" " + KeyMapBundle.message("prefer.key.position")) { @Override public void actionPerformed(ActionEvent e) { + KeyboardSettingsExternalizable.getInstance().setPreferKeyPositionOverCharOption(preferKeyPositionOverCharOption.isSelected()); VMOptions.writeOption("com.jetbrains.use.old.keyevent.processing", "=", - Boolean.toString(preferKeyPositionOverCharOption.isSelected())); + Boolean.toString(KeyboardSettingsExternalizable.getInstance().isPreferKeyPositionOverCharOption())); ApplicationManager.getApplication().invokeLater( () -> ApplicationManager.getApplication().restart(), ModalityState.NON_MODAL ); } }); - //preferKeyPositionOverCharOption.setSelected(); preferKeyPositionOverCharOption.setBorder(new EmptyBorder(0, 0, 0, 0)); keymapPanel.add(preferKeyPositionOverCharOption, BorderLayout.SOUTH); } @@ -438,7 +438,7 @@ public class KeymapPanel extends JPanel implements SearchableConfigurable, Confi @Override public void reset() { if (preferKeyPositionOverCharOption != null) { - preferKeyPositionOverCharOption.setSelected(KeyboardSettingsExternalizable.getInstance().isNonEnglishKeyboardSupportEnabled()); + preferKeyPositionOverCharOption.setSelected(KeyboardSettingsExternalizable.getInstance().isPreferKeyPositionOverCharOption()); } myManager.reset(); }