Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Becker2018-08-23 14:54:25 +0000
committerSarika Sinha2018-10-17 16:39:18 +0000
commit0c40c1089b8338ffe690c09c4be80401d9ddda92 (patch)
tree2d836549fc041e5ace55823fa373c517da1c8a62
parentb327577295c8556bbda56c6fda0f02c9243ab8c6 (diff)
downloadeclipse.jdt.ui-0c40c1089b8338ffe690c09c4be80401d9ddda92.tar.gz
eclipse.jdt.ui-0c40c1089b8338ffe690c09c4be80401d9ddda92.tar.xz
eclipse.jdt.ui-0c40c1089b8338ffe690c09c4be80401d9ddda92.zip
Bug 538211: Refactoring Preview has wrong colors in dark theme
- For new files the brackround and foreground color as well as selection background and forground color were not set and thus wrong in the dark theme. Change-Id: I8d73433f1ea1da4234b47dd4a4e8c1426f639c05 Signed-off-by: Matthias Becker <ma.becker@sap.com>
-rw-r--r--org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java106
1 files changed, 103 insertions, 3 deletions
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
index e1280cf9f3..fd075a971a 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/CreateTextFileChangePreviewViewer.java
@@ -13,27 +13,40 @@
*******************************************************************************/
package org.eclipse.jdt.internal.ui.refactoring;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.IVerticalRuler;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.texteditor.AbstractTextEditor;
+
+import org.eclipse.ui.editors.text.EditorsUI;
+
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.ui.refactoring.ChangePreviewViewerInput;
import org.eclipse.ltk.ui.refactoring.IChangePreviewViewer;
@@ -100,6 +113,95 @@ public final class CreateTextFileChangePreviewViewer implements IChangePreviewVi
}
+ private static class FileChangeSourceViewer extends SourceViewer {
+
+ private final Map<String, Color> customColors= new HashMap<>();
+
+ public FileChangeSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
+ super(parent, ruler, styles);
+ setColors();
+ StyledText textWidget= getTextWidget();
+ textWidget.setEditable(false);
+ textWidget.setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT));
+ }
+
+ @Override
+ protected void handleDispose() {
+ for (Color color : customColors.values()) {
+ if (color != null) {
+ color.dispose();
+ }
+ }
+ customColors.clear();
+ super.handleDispose();
+ }
+
+ private void setColors() {
+ IPreferenceStore store= EditorsUI.getPreferenceStore();
+ StyledText styledText= getTextWidget();
+ setColor(styledText, store,
+ AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND,
+ store.getBoolean(
+ AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT));
+ setColor(styledText, store,
+ AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND,
+ store.getBoolean(
+ AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT));
+ setColor(styledText, store,
+ AbstractTextEditor.PREFERENCE_COLOR_SELECTION_FOREGROUND,
+ store.getBoolean(
+ AbstractTextEditor.PREFERENCE_COLOR_SELECTION_FOREGROUND_SYSTEM_DEFAULT));
+ setColor(styledText, store,
+ AbstractTextEditor.PREFERENCE_COLOR_SELECTION_BACKGROUND,
+ store.getBoolean(
+ AbstractTextEditor.PREFERENCE_COLOR_SELECTION_BACKGROUND_SYSTEM_DEFAULT));
+ }
+
+ private void setColor(StyledText styledText, IPreferenceStore store,
+ String key, boolean useDefault) {
+ Color newColor= useDefault
+ ? null
+ : createColor(styledText.getDisplay(), store, key);
+ switch (key) {
+ case AbstractTextEditor.PREFERENCE_COLOR_FOREGROUND:
+ styledText.setForeground(newColor);
+ break;
+ case AbstractTextEditor.PREFERENCE_COLOR_BACKGROUND:
+ styledText.setBackground(newColor);
+ break;
+ case AbstractTextEditor.PREFERENCE_COLOR_SELECTION_FOREGROUND:
+ styledText.setSelectionForeground(newColor);
+ break;
+ case AbstractTextEditor.PREFERENCE_COLOR_SELECTION_BACKGROUND:
+ styledText.setSelectionBackground(newColor);
+ break;
+ default:
+ return;
+ }
+ Color oldColor= customColors.remove(key);
+ if (oldColor != null) {
+ oldColor.dispose();
+ }
+ customColors.put(key, newColor);
+ }
+
+ private static Color createColor(Display display, IPreferenceStore store,
+ String key) {
+ RGB rgb= null;
+ if (store.contains(key)) {
+ if (store.isDefault(key)) {
+ rgb= PreferenceConverter.getDefaultColor(store, key);
+ } else {
+ rgb= PreferenceConverter.getColor(store, key);
+ }
+ if (rgb != null) {
+ return new Color(display, rgb);
+ }
+ }
+ return null;
+ }
+ }
+
private CreateTextFilePreviewer fPane;
private SourceViewer fSourceViewer;
@@ -109,9 +211,7 @@ public final class CreateTextFileChangePreviewViewer implements IChangePreviewVi
fPane= new CreateTextFilePreviewer(parent, SWT.BORDER | SWT.FLAT);
Dialog.applyDialogFont(fPane);
- fSourceViewer= new SourceViewer(fPane, null, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
- fSourceViewer.setEditable(false);
- fSourceViewer.getControl().setFont(JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT));
+ fSourceViewer= new FileChangeSourceViewer(fPane, null, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
fPane.setContent(fSourceViewer.getControl());
}

Back to the top