Bug 572002: Adapt use of SWTs Color to current recommendation
  - Change to Color constructors without Device
  - Remove calls to Color.dispose
  - Adapt to removed ColorManager

Change-Id: I9745f870733ff871c46898c3802e5392e2179bc4
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/TextViewerEditorColorUpdater.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/TextViewerEditorColorUpdater.java
index 91561ff..de5dcf8 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/TextViewerEditorColorUpdater.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/TextViewerEditorColorUpdater.java
@@ -34,31 +34,29 @@
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
 
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 
+@NonNullByDefault
 public class TextViewerEditorColorUpdater {
 	
 	
-	protected final ISourceViewer fViewer;
-	protected final IPreferenceStore fPreferenceStore;
+	protected final ISourceViewer viewer;
+	protected final IPreferenceStore preferenceStore;
 	
-	private IPropertyChangeListener fListener;
-	
-	private Color fForegroundColor;
-	private Color fBackgroundColor;
-	private Color fSelectionForegroundColor;
-	private Color fSelectionBackgroundColor;
+	private @Nullable IPropertyChangeListener listener;
 	
 	
 	public TextViewerEditorColorUpdater(final SourceViewer viewer, final IPreferenceStore preferenceStore) {
 		assert (viewer != null);
 		assert (preferenceStore != null);
 		
-		this.fViewer= viewer;
-		this.fPreferenceStore= preferenceStore;
+		this.viewer= viewer;
+		this.preferenceStore= preferenceStore;
 		
 		viewer.getTextWidget().addDisposeListener(new DisposeListener() {
 			@Override
@@ -67,7 +65,7 @@
 			}
 		});
 		
-		this.fListener= new IPropertyChangeListener() {
+		this.listener= new IPropertyChangeListener() {
 			@Override
 			public void propertyChange(final PropertyChangeEvent event) {
 				if (PREFERENCE_COLOR_FOREGROUND.equals(event.getProperty())
@@ -82,98 +80,63 @@
 				}
 			}
 		};
-		this.fPreferenceStore.addPropertyChangeListener(this.fListener);
+		this.preferenceStore.addPropertyChangeListener(this.listener);
 		
 		updateColors();
 	}
 	
 	
 	protected void updateColors() {
-		final StyledText styledText= this.fViewer.getTextWidget();
+		final StyledText styledText= this.viewer.getTextWidget();
 		if (UIAccess.isOkToUse(styledText)) {
 			{	// foreground color
-				final Color color= this.fPreferenceStore.getBoolean(
+				final Color color= this.preferenceStore.getBoolean(
 						PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT) ? null :
-						createColor(this.fPreferenceStore, PREFERENCE_COLOR_FOREGROUND,
-								styledText.getDisplay() );
+								createColor(this.preferenceStore, PREFERENCE_COLOR_FOREGROUND);
 				styledText.setForeground(color);
-				if (this.fForegroundColor != null) {
-					this.fForegroundColor.dispose();
-				}
-				this.fForegroundColor= color;
 			}
 			{	// background color
-				final Color color= this.fPreferenceStore.getBoolean(
+				final Color color= this.preferenceStore.getBoolean(
 						PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT) ? null :
-						createColor(this.fPreferenceStore, PREFERENCE_COLOR_BACKGROUND,
-								styledText.getDisplay() );
+								createColor(this.preferenceStore, PREFERENCE_COLOR_BACKGROUND);
 				styledText.setBackground(color);
-				if (this.fBackgroundColor != null) {
-					this.fBackgroundColor.dispose();
-				}
-				this.fBackgroundColor= color;
 			}
 			{	// selection foreground color
-				final Color color= this.fPreferenceStore.getBoolean(
+				final Color color= this.preferenceStore.getBoolean(
 						PREFERENCE_COLOR_SELECTION_FOREGROUND_SYSTEM_DEFAULT) ? null :
-						createColor(this.fPreferenceStore, PREFERENCE_COLOR_SELECTION_FOREGROUND,
-								styledText.getDisplay() );
+								createColor(this.preferenceStore, PREFERENCE_COLOR_SELECTION_FOREGROUND);
 				styledText.setSelectionForeground(color);
-				if (this.fSelectionForegroundColor != null) {
-					this.fSelectionForegroundColor.dispose();
-				}
-				this.fSelectionForegroundColor= color;
 			}
 			{	// selection background color
-				final Color color= this.fPreferenceStore.getBoolean(
+				final Color color= this.preferenceStore.getBoolean(
 						PREFERENCE_COLOR_SELECTION_BACKGROUND_SYSTEM_DEFAULT) ? null :
-						createColor(this.fPreferenceStore, PREFERENCE_COLOR_SELECTION_BACKGROUND,
-								styledText.getDisplay() );
+								createColor(this.preferenceStore, PREFERENCE_COLOR_SELECTION_BACKGROUND);
 				styledText.setSelectionBackground(color);
-				if (this.fSelectionBackgroundColor != null) {
-					this.fSelectionBackgroundColor.dispose();
-				}
-				this.fSelectionBackgroundColor= color;
 			}
 		}
 	}
 	
-	protected Color createColor(final IPreferenceStore store, final String key,
-			final Display display) {
+	protected @Nullable Color createColor(final IPreferenceStore store, final String key) {
 		final RGB rgb= PreferenceConverter.getColor(store, key);
-		return (rgb != null) ? new Color(display, rgb) : null;
+		return (rgb != null) ? new Color(rgb) : null;
 	}
 	
 	
 	protected void dispose() {
-		if (this.fListener != null) {
-			this.fPreferenceStore.removePropertyChangeListener(this.fListener);
-			this.fListener= null;
+		{	final var listener= this.listener;
+			if (listener != null) {
+				this.listener= null;
+				this.preferenceStore.removePropertyChangeListener(listener);
+			}
 		}
 		
-		final StyledText styledText= this.fViewer.getTextWidget();
+		final StyledText styledText= this.viewer.getTextWidget();
 		if (UIAccess.isOkToUse(styledText)) {
 			styledText.setForeground(null);
 			styledText.setBackground(null);
 			styledText.setSelectionForeground(null);
 			styledText.setSelectionBackground(null);
 		}
-		if (this.fForegroundColor != null) {
-			this.fForegroundColor.dispose();
-			this.fForegroundColor= null;
-		}
-		if (this.fBackgroundColor != null) {
-			this.fBackgroundColor.dispose();
-			this.fBackgroundColor= null;
-		}
-		if (this.fSelectionForegroundColor != null) {
-			this.fSelectionForegroundColor.dispose();
-			this.fSelectionForegroundColor= null;
-		}
-		if (this.fSelectionBackgroundColor != null) {
-			this.fSelectionBackgroundColor.dispose();
-			this.fSelectionBackgroundColor= null;
-		}
 	}
 	
 }
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/presentation/AbstractTextStylesConfigurationBlock.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/presentation/AbstractTextStylesConfigurationBlock.java
index 8b56fc0..1de17db 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/presentation/AbstractTextStylesConfigurationBlock.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/presentation/AbstractTextStylesConfigurationBlock.java
@@ -84,7 +84,6 @@
 import org.eclipse.statet.ecommons.text.ui.TextViewerJFaceUpdater;
 import org.eclipse.statet.ecommons.text.ui.presentation.AbstractTextStylesConfigurationBlock.SyntaxNode.UseStyle;
 import org.eclipse.statet.ecommons.text.ui.settings.TextStyleManager;
-import org.eclipse.statet.ecommons.ui.ColorManager;
 import org.eclipse.statet.ecommons.ui.util.LayoutUtils;
 import org.eclipse.statet.ecommons.ui.util.MessageUtils;
 import org.eclipse.statet.ecommons.ui.util.PixelConverter;
@@ -530,7 +529,6 @@
 	private Button strikethroughCheckbox;
 	private Button underlineCheckbox;
 	
-	private ColorManager colorManager;
 	private TextStyleManager textStyles;
 	
 	protected SourceViewer previewViewer;
@@ -699,13 +697,11 @@
 	}
 	
 	private Control createPreviewer(final Composite parent) {
-		this.colorManager= new ColorManager();
-		
 		final IPreferenceStore store= new ChainedPreferenceStore(new IPreferenceStore[] {
 				this.fOverlayStore, EditorsUI.getPreferenceStore() });
 		this.previewViewer= new SourceViewer(parent, null, null, false, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
 		this.previewViewer.setEditable(false);
-		this.configuration= getSourceViewerConfiguration(this.colorManager, store);
+		this.configuration= getSourceViewerConfiguration(store);
 		this.previewViewer.configure(this.configuration);
 		new TextViewerJFaceUpdater(this.previewViewer, store);
 		new TextViewerEditorColorUpdater(this.previewViewer, store);
@@ -721,8 +717,8 @@
 	protected abstract String getPreviewFileName();
 	
 	protected SourceEditorViewerConfiguration getSourceViewerConfiguration(
-			final ColorManager colorManager, final IPreferenceStore preferenceStore) {
-		this.textStyles= new TextStyleManager(colorManager, preferenceStore, getSettingsGroup());
+			final IPreferenceStore preferenceStore) {
+		this.textStyles= new TextStyleManager(preferenceStore, getSettingsGroup());
 		return getSourceEditorViewerConfiguration(preferenceStore, this.textStyles);
 	}
 	
@@ -899,10 +895,6 @@
 			this.dbc.dispose();
 			this.dbc= null;
 		}
-		if (this.colorManager != null) {
-			this.colorManager.dispose();
-			this.colorManager= null;
-		}
 		super.dispose();
 	}
 	
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/CssTextStyleManager.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/CssTextStyleManager.java
index aa43bf0..2186c49 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/CssTextStyleManager.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/CssTextStyleManager.java
@@ -53,7 +53,7 @@
 	
 	public CssTextStyleManager(final IPreferenceStore preferenceStore, final String stylesGroupId,
 			final String defaultRootKey) {
-		super(null, preferenceStore, stylesGroupId);
+		super(preferenceStore, stylesGroupId);
 		this.defaultRootKey= defaultRootKey;
 	}
 	
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/TextStyleManager.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/TextStyleManager.java
index 43e850f..befc0af 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/TextStyleManager.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ecommons/text/ui/settings/TextStyleManager.java
@@ -24,11 +24,11 @@
 import org.eclipse.jface.text.rules.IToken;
 import org.eclipse.jface.text.rules.Token;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.RGB;
 
 import org.eclipse.statet.ecommons.preferences.SettingsChangeNotifier.ManageListener;
 import org.eclipse.statet.ecommons.text.ui.presentation.ITextPresentationConstants;
-import org.eclipse.statet.ecommons.ui.ColorManager;
 import org.eclipse.statet.ecommons.ui.util.UIAccess;
 
 
@@ -38,7 +38,6 @@
 public class TextStyleManager implements ManageListener {
 	
 	
-	protected ColorManager colorManager;
 	protected IPreferenceStore preferenceStore;
 	protected String[] tokenNames;
 	private final String stylesGroupId;
@@ -46,10 +45,9 @@
 	private final Map<String, Token> tokenMap= new HashMap<>();
 	
 	
-	public TextStyleManager(final ColorManager colorManager, final IPreferenceStore preferenceStore,
+	public TextStyleManager(final IPreferenceStore preferenceStore,
 			final String stylesGroupId) {
 		super();
-		this.colorManager= colorManager;
 		this.preferenceStore= preferenceStore;
 		this.stylesGroupId= stylesGroupId;
 	}
@@ -104,7 +102,7 @@
 			style |= TextAttribute.STRIKETHROUGH;
 		}
 		
-		return new TextAttribute(this.colorManager.getColor(rgb), null, style);
+		return new TextAttribute(new Color(rgb), null, style);
 	}
 	
 	public boolean affectsTextPresentation(final Set<String> groupIds) {
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceViewerDecorationSupport.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceViewerDecorationSupport.java
index dd75250..d658909 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceViewerDecorationSupport.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/SourceViewerDecorationSupport.java
@@ -21,9 +21,6 @@
 import org.eclipse.jface.text.source.ISharedTextColors;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-
-import org.eclipse.statet.ecommons.ui.SharedUIResources;
 
 import org.eclipse.statet.internal.ltk.ui.OverwriteTextStyleStrategy;
 
@@ -55,8 +52,8 @@
 		
 		painter.addTextStyleStrategy("org.eclipse.statet.Overwrite", fgOverwriteStrategy);
 		painter.addAnnotationType("org.eclipse.statet.ecommons.text.editorAnnotations.ContentAssistOverwrite", "org.eclipse.statet.Overwrite");
-		final Color color= SharedUIResources.getColors().getColor(new RGB(255, 0, 0));
-		painter.setAnnotationTypeColor("org.eclipse.statet.ecommons.text.editorAnnotations.ContentAssistOverwrite", color);
+		painter.setAnnotationTypeColor("org.eclipse.statet.ecommons.text.editorAnnotations.ContentAssistOverwrite",
+				new Color(255, 0, 0) );
 		
 		return painter;
 	}
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistPreferences.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistPreferences.java
index a138da5..ffdf010 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistPreferences.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/sourceediting/assist/AssistPreferences.java
@@ -26,8 +26,6 @@
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 import org.eclipse.statet.ecommons.preferences.core.util.PreferenceUtils;
 import org.eclipse.statet.ecommons.preferences.ui.RGBPref;
-import org.eclipse.statet.ecommons.ui.ColorManager;
-import org.eclipse.statet.ecommons.ui.SharedUIResources;
 
 import org.eclipse.statet.ltk.ui.LTKUIPreferences;
 
@@ -150,7 +148,6 @@
 	 * Configure the given content assistant according common StatET settings.
 	 */
 	public void configure(final ContentAssistant assistant) {
-		final ColorManager manager= SharedUIResources.getColors();
 		final PreferenceAccess prefs= PreferenceUtils.getInstancePrefs();
 		
 		assistant.enableAutoActivation(prefs.getPreferenceValue(this.autoActivationEnabled));
@@ -159,13 +156,13 @@
 		assistant.enableAutoInsert(prefs.getPreferenceValue(this.autoInsertSingle));
 		assistant.enablePrefixCompletion(prefs.getPreferenceValue(this.autoInsertPrefix));
 		
-		{	final Color c= manager.getColor(prefs.getPreferenceValue(this.informationForeground));
-			assistant.setContextInformationPopupForeground(c);
-			assistant.setContextSelectorForeground(c);
+		{	final var color= new Color(prefs.getPreferenceValue(this.informationForeground));
+			assistant.setContextInformationPopupForeground(color);
+			assistant.setContextSelectorForeground(color);
 		}
-		{	final Color c= manager.getColor(prefs.getPreferenceValue(this.informationBackground));
-			assistant.setContextInformationPopupBackground(c);
-			assistant.setContextSelectorBackground(c);
+		{	final var color= new Color(prefs.getPreferenceValue(this.informationBackground));
+			assistant.setContextInformationPopupBackground(color);
+			assistant.setContextSelectorBackground(color);
 		}
 		
 		if (assistant instanceof ContentAssist) {