mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
resource bundle editor propagate value check writable IDEA-159109
This commit is contained in:
+18
-8
@@ -20,6 +20,7 @@
|
||||
package com.intellij.lang.properties.editor;
|
||||
|
||||
import com.intellij.codeHighlighting.BackgroundEditorHighlighter;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.ide.FileEditorProvider;
|
||||
import com.intellij.ide.SelectInContext;
|
||||
import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
@@ -61,7 +62,10 @@ import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileListener;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.openapi.wm.StatusBar;
|
||||
import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.pom.Navigatable;
|
||||
@@ -72,7 +76,10 @@ import com.intellij.ui.JBColor;
|
||||
import com.intellij.ui.JBSplitter;
|
||||
import com.intellij.ui.OnePixelSplitter;
|
||||
import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.EditorPopupHandler;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.containers.Stack;
|
||||
@@ -924,13 +931,16 @@ public class ResourceBundleEditor extends UserDataHolderBase implements Document
|
||||
}
|
||||
ApplicationManager.getApplication().runWriteAction(() -> WriteCommandAction.runWriteCommandAction(myProject, () -> {
|
||||
try {
|
||||
for (Map.Entry<VirtualFile, EditorEx> entry : myEditors.entrySet()) {
|
||||
final Editor translationEditor = entry.getValue();
|
||||
if (translationEditor != editor) {
|
||||
final VirtualFile propertiesFile = entry.getKey();
|
||||
myPropertiesInsertDeleteManager.insertOrUpdateTranslation(currentSelectedProperty, valueToPropagate, PropertiesImplUtil.getPropertiesFile(propertiesFile, myProject));
|
||||
translationEditor.getDocument().setText(valueToPropagate);
|
||||
final PropertiesFile[] propertiesFiles = myResourceBundle.getPropertiesFiles().stream().filter(f -> {
|
||||
final IProperty property = f.findPropertyByKey(currentSelectedProperty);
|
||||
return property == null || !valueToPropagate.equals(property.getValue());
|
||||
}).toArray(PropertiesFile[]::new);
|
||||
final PsiFile[] filesToPrepare = Arrays.stream(propertiesFiles).map(PropertiesFile::getContainingFile).toArray(PsiFile[]::new);
|
||||
if (FileModificationService.getInstance().preparePsiElementsForWrite(filesToPrepare)) {
|
||||
for (PropertiesFile file : propertiesFiles) {
|
||||
myPropertiesInsertDeleteManager.insertOrUpdateTranslation(currentSelectedProperty, valueToPropagate, file);
|
||||
}
|
||||
recreateEditorsPanel();
|
||||
}
|
||||
}
|
||||
catch (final IncorrectOperationException e1) {
|
||||
|
||||
Reference in New Issue
Block a user