Bug 516998 - Default enableThemePreference to true to allow styling of
e4 RCP without PartRenderingEngine#initialize

Adds tests to ensure styling continues to work

Change-Id: I23ea1bfbdf6bafe29adfb9731452d6b861f319f2
Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com>
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
index 6ddabb8..0fb880d 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF
@@ -18,6 +18,8 @@
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: org.eclipse.core.runtime;version="3.5.0",
+ org.eclipse.e4.core.contexts;version="1.6.0",
+ org.eclipse.e4.ui.internal.workbench.swt,
  org.osgi.framework;version="1.7.0";resolution:=optional,
  org.osgi.service.event;version="1.3.0";resolution:=optional
 Eclipse-BundleShape: dir
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/css/cssfortest.css b/tests/org.eclipse.e4.ui.tests.css.swt/css/cssfortest.css
new file mode 100644
index 0000000..cc6a93f
--- /dev/null
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/css/cssfortest.css
@@ -0,0 +1,4 @@
+Label {
+ color:blue;
+ background:red;
+}
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/CssSwtTestSuite.java b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/CssSwtTestSuite.java
index 70ebf05..232ebae 100644
--- a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/CssSwtTestSuite.java
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/CssSwtTestSuite.java
@@ -39,6 +39,7 @@
 import org.eclipse.e4.ui.tests.css.swt.InnerClassElementTest;
 import org.eclipse.e4.ui.tests.css.swt.LabelTest;
 import org.eclipse.e4.ui.tests.css.swt.LabelTextTransformTest;
+import org.eclipse.e4.ui.tests.css.swt.LifeCycleTest;
 import org.eclipse.e4.ui.tests.css.swt.LinkTest;
 import org.eclipse.e4.ui.tests.css.swt.MarginTest;
 import org.eclipse.e4.ui.tests.css.swt.ShellActiveTest;
@@ -67,6 +68,7 @@
 	EclipsePreferencesHelperTest.class,
 	CSSSWTWidgetTest.class,
 	LabelTest.class,
+	LifeCycleTest.class,
 	LinkTest.class,
 	CTabFolderTest.class,
 	CTabItemTest.class,
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/LifeCycleTest.java b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/LifeCycleTest.java
new file mode 100644
index 0000000..c2fa1d5
--- /dev/null
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/LifeCycleTest.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2017 vogella GmbH and others. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Lars Vogel <Lars.Vogel@vogella.com> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.e4.ui.tests.css.swt;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.e4.core.contexts.EclipseContextFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.Test;
+
+/**
+ * Test to ensure that the PartRenderingEngine can be used with an registered
+ * CSS engie. This is useful for example in an e4 lifecycle hook, in which the
+ * CSS engine is not yet initialized
+ *
+ */
+public class LifeCycleTest extends CSSSWTTestCase {
+
+	static final RGB RED = new RGB(255, 0, 0);
+	static final RGB GREEN = new RGB(0, 255, 0);
+	static final RGB BLUE = new RGB(0, 0, 255);
+	private Label label;
+
+	protected Shell createTestShell() {
+		IEclipseContext ctx = EclipseContextFactory.create();
+
+		String cssURI = "platform:/plugin/org.eclipse.e4.ui.tests.css.swt/css/cssfortest.css";
+		ctx.set("applicationCSS", cssURI);
+		Shell shell = new Shell(display, SWT.SHELL_TRIM);
+
+		// Create widgets
+		FillLayout layout = new FillLayout();
+		shell.setLayout(layout);
+		Composite panel = new Composite(shell, SWT.NONE);
+		panel.setLayout(new FillLayout());
+		label = new Label(panel, SWT.NONE);
+		label.setText("");
+
+
+		shell.pack();
+		PartRenderingEngine.initializeStyling(display, ctx);
+		return shell;
+	}
+
+
+	@Test
+	public void testLabelColorViaPartRenderingEngine() {
+		createTestShell();
+		assertEquals(RED, label.getBackground().getRGB());
+		assertEquals(BLUE, label.getForeground().getRGB());
+	}
+
+}
\ No newline at end of file