/******************************************************************************* * Copyright (c) 2011, 2015 EclipseSource 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: * EclipseSource - initial API and implementation ******************************************************************************/ package org.eclipse.swt.internal.widgets.tabfolderkit; import org.eclipse.rap.rwt.internal.theme.WidgetMatcher; import org.eclipse.rap.rwt.internal.theme.WidgetMatcher.Constraint; import org.eclipse.rap.rwt.theme.BoxDimensions; import org.eclipse.swt.SWT; import org.eclipse.swt.internal.widgets.controlkit.ControlThemeAdapterImpl; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Widget; public class TabFolderThemeAdapter extends ControlThemeAdapterImpl { @Override protected void configureMatcher( WidgetMatcher matcher ) { super.configureMatcher( matcher ); matcher.addState( "bottom", createItemOnBottomMatcher() ); matcher.addState( "selected", createSelectedItemMatcher() ); matcher.addState( "first", createFirstItemMatcher() ); matcher.addState( "last", createLastItemMatcher() ); } public BoxDimensions getContentContainerBorder( TabFolder folder ) { return getCssBorder( "TabFolder-ContentContainer", folder ); } public BoxDimensions getItemBorder( TabItem item ) { return getCssBorder( "TabItem", item ); } public BoxDimensions getItemPadding( TabItem item ) { return getCssBoxDimensions( "TabItem", "padding", item ).dimensions; } public BoxDimensions getItemMargin( TabItem item ) { return getCssBoxDimensions( "TabItem", "margin", item ).dimensions; } private static Constraint createItemOnBottomMatcher() { return new Constraint() { @Override public boolean matches( Widget widget ) { if( widget instanceof TabItem ) { TabItem item = ( TabItem )widget; return ( item.getParent().getStyle() & SWT.BOTTOM ) != 0; } return false; } }; } private static Constraint createSelectedItemMatcher() { return new Constraint() { @Override public boolean matches( Widget widget ) { if( widget instanceof TabItem ) { TabItem item = ( TabItem )widget; TabItem[] selection = item.getParent().getSelection(); return selection.length > 0 && selection[ 0 ] == item; } return false; } }; } private static Constraint createFirstItemMatcher() { return new Constraint() { @Override public boolean matches( Widget widget ) { if( widget instanceof TabItem ) { TabItem item = ( TabItem )widget; TabFolder folder = item.getParent(); return folder.getItem( 0 ) == item; } return false; } }; } private static Constraint createLastItemMatcher() { return new Constraint() { @Override public boolean matches( Widget widget ) { if( widget instanceof TabItem ) { TabItem item = ( TabItem )widget; TabFolder folder = item.getParent(); return folder.getItem( folder.getItemCount() - 1 ) == item; } return false; } }; } }