Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 22 additions & 131 deletions bundles/org.eclipse.e4.ui.css.swt/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -136,33 +136,36 @@
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyBorderVisibleSWTHandler">
<property-name
name="border-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyTabPositionSWTHandler">
<property-name
name="swt-tab-position">
</property-name>
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyCTabFolderSWTHandler">
<property-name name="border-visible"/>
<property-name name="swt-maximize-visible"/>
<property-name name="swt-minimize-visible"/>
<property-name name="swt-maximized"/>
<property-name name="swt-minimized"/>
<property-name name="swt-simple"/>
<property-name name="swt-single"/>
<property-name name="swt-unselected-close-visible"/>
<property-name name="swt-unselected-image-visible"/>
<property-name name="swt-selected-image-visible"/>
<property-name name="swt-tab-height"/>
<property-name name="swt-tab-text-minimum-characters"/>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyOuterKeylineSWTHandler">
<property-name
name="swt-outer-keyline-color">
</property-name>
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyCTabFolderRendererSWTHandler">
<property-name name="swt-inner-keyline-color"/>
<property-name name="swt-outer-keyline-color"/>
<property-name name="swt-tab-outline"/>
<property-name name="swt-unselected-hot-tab-color-background"/>
<property-name name="swt-draw-custom-tab-content-background"/>
</handler>
<handler
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyInnerKeylineSWTHandler">
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyTabPositionSWTHandler">
<property-name
name="swt-inner-keyline-color">
name="swt-tab-position">
</property-name>
</handler>
<handler
Expand Down Expand Up @@ -282,94 +285,6 @@
name="font-weight">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertySimpleSWTHandler">
<property-name
name="swt-simple">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyMaximizeVisibleSWTHandler">
<property-name
name="swt-maximize-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyMinimizeVisibleSWTHandler">
<property-name
name="swt-minimize-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyMaximizedSWTHandler">
<property-name
name="swt-maximized">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyMinimizedSWTHandler">
<property-name
name="swt-minimized">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyTabHeightHandler">
<property-name
name="swt-tab-height">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyTabTextMinimumCharactersSWTHandler">
<property-name
name="swt-tab-text-minimum-characters">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertySingleSWTHandler">
<property-name
name="swt-single">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyUnselectedCloseVisibleSWTHandler">
<property-name
name="swt-unselected-close-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyUnselectedImageVisibleSWTHandler">
<property-name
name="swt-unselected-image-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertySelectedImageVisibleSWTHandler">
<property-name
name="swt-selected-image-visible">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
Expand All @@ -378,14 +293,6 @@
name="swt-selected-tabs-background">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyCustomTabContentBackgroundSWTHandler">
<property-name
name="swt-draw-custom-tab-content-background">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
Expand All @@ -400,22 +307,6 @@
name="swt-selected-tab-fill">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertye4TabOutline">
<property-name
name="swt-tab-outline">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="false"
handler="org.eclipse.e4.ui.css.swt.properties.custom.CSSPropertyUnselectHotTabsColorBackgroundHandler">
<property-name
name="swt-unselected-hot-tab-color-background">
</property-name>
</handler>
<handler
adapter="org.eclipse.e4.ui.css.swt.dom.CTabFolderElement"
composite="true"
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*******************************************************************************
* Copyright (c) 2026 Lars Vogel and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Lars Vogel <Lars.Vogel@vogella.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.e4.ui.css.swt.properties.custom;

import java.util.Map;
import java.util.function.BiConsumer;

import org.eclipse.e4.ui.css.core.engine.CSSEngine;
import org.eclipse.e4.ui.css.core.impl.dom.CssValues.CssPrimitive;
import org.eclipse.e4.ui.css.swt.properties.AbstractCSSPropertySWTHandler;
import org.eclipse.e4.ui.internal.css.swt.ICTabRendering;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Control;
import org.w3c.dom.css.CSSValue;

/**
* Applies the CSS properties that map directly onto a single
* {@link ICTabRendering} setter of a {@link CTabFolder} renderer.
*/
public class CSSPropertyCTabFolderRendererSWTHandler extends AbstractCSSPropertySWTHandler {

private static final Map<String, BiConsumer<ICTabRendering, Color>> COLOR_SETTERS = Map.of(
"swt-inner-keyline-color", ICTabRendering::setInnerKeyline, //$NON-NLS-1$
"swt-outer-keyline-color", ICTabRendering::setOuterKeyline, //$NON-NLS-1$
"swt-tab-outline", ICTabRendering::setTabOutline, //$NON-NLS-1$
"swt-unselected-hot-tab-color-background", ICTabRendering::setUnselectedHotTabsColorBackground); //$NON-NLS-1$

private static final Map<String, BiConsumer<ICTabRendering, Boolean>> BOOLEAN_SETTERS = Map.of(
"swt-draw-custom-tab-content-background", ICTabRendering::setDrawCustomTabContentBackground); //$NON-NLS-1$

@Override
protected void applyCSSProperty(Control control, String property, CSSValue value, String pseudo, CSSEngine engine)
throws Exception {
if (!(control instanceof CTabFolder folder) || !(value instanceof CssPrimitive)) {
return;
}
BiConsumer<ICTabRendering, Color> colorSetter = COLOR_SETTERS.get(property);
if (colorSetter != null) {
Color color = (Color) engine.convert(value, Color.class, control.getDisplay());
if (folder.getRenderer() instanceof ICTabRendering renderer) {
colorSetter.accept(renderer, color);
}
return;
}
BiConsumer<ICTabRendering, Boolean> booleanSetter = BOOLEAN_SETTERS.get(property);
if (booleanSetter != null) {
Boolean enabled = (Boolean) engine.convert(value, Boolean.class, control.getDisplay());
if (folder.getRenderer() instanceof ICTabRendering renderer) {
booleanSetter.accept(renderer, enabled);
}
}
}

@Override
protected String retrieveCSSProperty(Control control, String property, String pseudo, CSSEngine engine)
throws Exception {
return null;
}
}
Loading
Loading