Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Pfaff2017-04-19 20:13:40 +0000
committerLars Vogel2017-04-20 15:47:04 +0000
commit9a8613c1e1108657a0c4c52a4c2a023ce6fa2abb (patch)
tree8af25179d2ef1237b39e8d80e3651f4e15f0bc16
parent3e6c71492611be186b34e83da80d5351f0a05b88 (diff)
downloadeclipse.platform.ui-9a8613c1e1108657a0c4c52a4c2a023ce6fa2abb.tar.gz
eclipse.platform.ui-9a8613c1e1108657a0c4c52a4c2a023ce6fa2abb.tar.xz
eclipse.platform.ui-9a8613c1e1108657a0c4c52a4c2a023ce6fa2abb.zip
Bug 515391 - [CSS] [Dark Theme] Allow to set the
TitleBarForeground of ExpandableComposite via CSS Adds new css property for ExpandableComposite to set title bar foreground color: "titlebar-color" with Test case Change-Id: Id6030316718fd908a4c33072f63394e5db963b8f Signed-off-by: Lars Vogel <Lars.Vogel@vogella.com> Signed-off-by: Fabian Pfaff <fabian.pfaff@vogella.com>
-rw-r--r--bundles/org.eclipse.ui.forms/plugin.xml17
-rw-r--r--bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElement.java14
-rw-r--r--bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElementProvider.java17
-rw-r--r--bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/properties/css2/CSSPropertyExpandableCompositeHandler.java34
-rw-r--r--tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF3
-rw-r--r--tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/ExpandableCompositeTest.java59
6 files changed, 143 insertions, 1 deletions
diff --git a/bundles/org.eclipse.ui.forms/plugin.xml b/bundles/org.eclipse.ui.forms/plugin.xml
index 95fd1465a41..5f5fac5735d 100644
--- a/bundles/org.eclipse.ui.forms/plugin.xml
+++ b/bundles/org.eclipse.ui.forms/plugin.xml
@@ -43,6 +43,14 @@
name="tb-toggle-hover-color"> <!-- IFormColors.TB_TOGGLE_HOVER -->
</property-name>
</handler>
+ <handler
+ adapter="org.eclipse.ui.internal.forms.css.dom.ExpandableCompositeElement"
+ composite="true"
+ handler="org.eclipse.ui.internal.forms.css.properties.css2.CSSPropertyExpandableCompositeHandler">
+ <property-name
+ name="titlebar-color">
+ </property-name>
+ </handler>
</extension>
<extension
point="org.eclipse.e4.ui.css.core.elementProvider">
@@ -54,4 +62,13 @@
class="org.eclipse.ui.forms.widgets.Form"></widget>
</provider>
</extension>
+ <extension
+ point="org.eclipse.e4.ui.css.core.elementProvider">
+ <provider
+ class="org.eclipse.ui.internal.forms.css.dom.ExpandableCompositeElementProvider">
+ <widget
+ class="org.eclipse.ui.forms.widgets.ExpandableComposite">
+ </widget>
+ </provider>
+ </extension>
</plugin>
diff --git a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElement.java b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElement.java
new file mode 100644
index 00000000000..be1f7fb5c82
--- /dev/null
+++ b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElement.java
@@ -0,0 +1,14 @@
+package org.eclipse.ui.internal.forms.css.dom;
+
+import org.eclipse.e4.ui.css.core.engine.CSSEngine;
+import org.eclipse.e4.ui.css.swt.dom.CompositeElement;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
+public class ExpandableCompositeElement extends CompositeElement {
+
+ public ExpandableCompositeElement(ExpandableComposite composite, CSSEngine engine) {
+ super(composite, engine);
+ }
+
+
+}
diff --git a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElementProvider.java b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElementProvider.java
new file mode 100644
index 00000000000..2f6427c56dc
--- /dev/null
+++ b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/dom/ExpandableCompositeElementProvider.java
@@ -0,0 +1,17 @@
+package org.eclipse.ui.internal.forms.css.dom;
+import org.eclipse.e4.ui.css.core.dom.IElementProvider;
+import org.eclipse.e4.ui.css.core.engine.CSSEngine;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.w3c.dom.Element;
+
+public class ExpandableCompositeElementProvider implements IElementProvider {
+
+ @Override
+ public Element getElement(Object element, CSSEngine engine) {
+ if (element instanceof ExpandableComposite) {
+ return new ExpandableCompositeElement((ExpandableComposite) element, engine);
+ }
+ return null;
+ }
+
+}
diff --git a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/properties/css2/CSSPropertyExpandableCompositeHandler.java b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/properties/css2/CSSPropertyExpandableCompositeHandler.java
new file mode 100644
index 00000000000..1267c3e64f5
--- /dev/null
+++ b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/css/properties/css2/CSSPropertyExpandableCompositeHandler.java
@@ -0,0 +1,34 @@
+package org.eclipse.ui.internal.forms.css.properties.css2;
+
+import org.eclipse.e4.ui.css.core.engine.CSSEngine;
+import org.eclipse.e4.ui.css.swt.properties.AbstractCSSPropertySWTHandler;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.w3c.dom.css.CSSValue;
+
+public class CSSPropertyExpandableCompositeHandler extends AbstractCSSPropertySWTHandler {
+
+ private static final String TITLE_BAR_FOREGROUND = "titlebar-color"; //$NON-NLS-1$
+
+ @Override
+ protected void applyCSSProperty(Control control, String property, CSSValue value, String pseudo, CSSEngine engine)
+ throws Exception {
+ if (!(control instanceof ExpandableComposite)) {
+ return;
+ }
+ if (TITLE_BAR_FOREGROUND.equalsIgnoreCase(property)) {
+ if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) {
+ Color newColor = (Color) engine.convert(value, Color.class, control.getDisplay());
+ ((ExpandableComposite) control).setTitleBarForeground(newColor);
+ }
+ }
+ }
+
+ @Override
+ protected String retrieveCSSProperty(Control control, String property, String pseudo, CSSEngine engine)
+ throws Exception {
+ return null;
+ }
+
+}
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 19cf2c61d8d..a67c0eb82ba 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
@@ -12,7 +12,8 @@ Require-Bundle: org.junit,
org.eclipse.ui;bundle-version="3.106.0",
org.hamcrest;bundle-version="1.1.0",
org.mockito;bundle-version="1.8.4",
- org.eclipse.equinox.preferences;bundle-version="3.5.200"
+ org.eclipse.equinox.preferences;bundle-version="3.5.200",
+ org.eclipse.ui.forms
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: org.eclipse.core.runtime;version="3.5.0",
diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/ExpandableCompositeTest.java b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/ExpandableCompositeTest.java
new file mode 100644
index 00000000000..7778877c41c
--- /dev/null
+++ b/tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/ExpandableCompositeTest.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.forms;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.e4.ui.tests.css.swt.CSSSWTTestCase;
+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.Shell;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.junit.Test;
+
+public class ExpandableCompositeTest 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);
+
+ protected ExpandableComposite createTestExpandableComposite(String styleSheet) {
+ engine = createEngine(styleSheet, display);
+
+ // Create widgets
+ Shell shell = new Shell(display, SWT.SHELL_TRIM);
+ FillLayout layout = new FillLayout();
+ shell.setLayout(layout);
+
+ Composite compositeToTest = new Composite(shell, SWT.NONE);
+ compositeToTest.setLayout(new FillLayout());
+
+ ExpandableComposite test = new ExpandableComposite(shell, SWT.NONE,
+ ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE);
+
+ // Apply styles
+ engine.applyStyles(shell, true);
+
+ shell.pack();
+ return test;
+ }
+
+ @Test
+ public void testExpandableCompositeColor() {
+ ExpandableComposite compositeToTest = createTestExpandableComposite(
+ "ExpandableComposite { titlebar-color: #FF0000; }");
+ assertNotNull(compositeToTest.getTitleBarForeground());
+ assertEquals(RED, compositeToTest.getTitleBarForeground().getRGB());
+ }
+
+} \ No newline at end of file

Back to the top