void (final EditorEx editor) { EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); editor.setColorsScheme(scheme); editor.setBorder(BorderFactory.createLineBorder(JBColor.border(), 1)); EditorSettings settings = editor.getSettings(); settings.setLineNumbersShown(false); settings.setWhitespacesShown(false); settings.setLineMarkerAreaShown(false); settings.setIndentGuidesShown(false); settings.setFoldingOutlineShown(false); settings.setAdditionalColumnsCount(0); settings.setAdditionalLinesCount(0); settings.setRightMarginShown(true); settings.setRightMargin(60); settings.setVirtualSpace(false); editor.setHighlighter(new LexerEditorHighlighter(new PropertiesValueHighlighter(), scheme)); editor.setVerticalScrollbarVisible(true); editor.installPopupHandler(new ContextMenuPopupHandler() { @Override public ActionGroup getActionGroup(@NotNull EditorMouseEvent event) { DefaultActionGroup group = new DefaultActionGroup(); group.add(CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.GROUP_CUT_COPY_PASTE)); group.add(CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.ACTION_EDIT_SOURCE)); group.addSeparator(); group.add(new AnAction(ResourceBundleEditorBundle.messagePointer("action.PropagateValue.text")) { @Override public void actionPerformed(@NotNull AnActionEvent e) { final String valueToPropagate = editor.getDocument().getText(); final String currentSelectedProperty = getSelectedPropertyName(); if (currentSelectedProperty == null) { return; } ApplicationManager.getApplication().runWriteAction(() -> WriteCommandAction.runWriteCommandAction(myProject, ResourceBundleEditorBundle.message("action.PropagateValue.text"), null, () -> { try { 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) { LOG.error(e1); } })); } }); return group; } }); }