diff options
| author | Fabian Pfaff | 2017-04-19 20:13:40 +0000 |
|---|---|---|
| committer | Lars Vogel | 2017-04-20 15:47:04 +0000 |
| commit | 9a8613c1e1108657a0c4c52a4c2a023ce6fa2abb (patch) | |
| tree | 8af25179d2ef1237b39e8d80e3651f4e15f0bc16 | |
| parent | 3e6c71492611be186b34e83da80d5351f0a05b88 (diff) | |
| download | eclipse.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>
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 |
