From 4122e62d7d34c6ba8240a646aa97fed1749294be Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Tue, 1 Jul 2014 12:37:47 +0400 Subject: [PATCH] resource bundle editor -- after change another property previous will save now --- .../editor/ResourceBundleEditor.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java index a68eeb4d25ca..32ba85943826 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java @@ -132,6 +132,16 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit if (getSelectedPropertyName() == null) return; if (!Comparing.strEqual(selectedPropertyName, getSelectedPropertyName()) || !Comparing.equal(selectedPropertiesFile, getSelectedPropertiesFile())) { + + if (e.getOldLeadSelectionPath() != null) { + for (Map.Entry entry : myEditors.entrySet()) { + if (entry.getValue() == mySelectedEditor) { + writeEditorPropertyValue(mySelectedEditor, entry.getKey(), selectedPropertyName); + break; + } + } + } + selectedPropertyName = getSelectedPropertyName(); selectedPropertiesFile = getSelectedPropertiesFile(); selectionChanged(); @@ -283,9 +293,9 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit return value instanceof ResourceBundleEditorViewElement ? (ResourceBundleEditorViewElement) value : null; } - private void writeEditorPropertyValue(final Editor editor, final PropertiesFile propertiesFile) { + private void writeEditorPropertyValue(final Editor editor, final PropertiesFile propertiesFile, final @Nullable String propertyName) { final String currentValue = editor.getDocument().getText(); - final String currentSelectedProperty = getSelectedPropertyName(); + final String currentSelectedProperty = propertyName == null ? getSelectedPropertyName() : propertyName; assert currentSelectedProperty != null; @@ -350,7 +360,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit @Override public void focusLost(final Editor eventEditor) { - writeEditorPropertyValue(editor, propertiesFile); + writeEditorPropertyValue(editor, propertiesFile, null); } }); editor.getDocument().putUserData(UndoConstants.DONT_RECORD_UNDO, Boolean.TRUE); @@ -521,7 +531,6 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit } private void selectionChanged() { myBackSlashPressed.clear(); - UIUtil.invokeLaterIfNeeded(new Runnable() { @Override public void run() { @@ -699,7 +708,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit if (mySelectedEditor != null) { for (final Map.Entry entry : myEditors.entrySet()) { if (mySelectedEditor.equals(entry.getValue())) { - writeEditorPropertyValue(mySelectedEditor, entry.getKey()); + writeEditorPropertyValue(mySelectedEditor, entry.getKey(), null); } } }