/******************************************************************************* * Copyright (c) 2008, 2016 Angelo Zerr 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: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation * Lars Vogel <Lars.Vogel@gmail.com> - Bug 430639 * Fabio Zadrozny <fabiofz@gmail.com> - Bug 434201, 434309, 430278 *******************************************************************************/ package org.eclipse.e4.ui.css.swt.dom; import org.eclipse.e4.ui.css.core.dom.IElementProvider; import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Scale; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Widget; import org.w3c.dom.Element; /** * Returns the CSS class which is responsible for styling a SWT widget * * Registered via the "org.eclipse.e4.ui.css.core.elementProvider" extension * point for the SWT widgets * * * * {@link IElementProvider} SWT implementation to retrieve w3c Element * {@link SWTElement} linked to SWT widget. * */ public class SWTElementProvider implements IElementProvider { public static final IElementProvider INSTANCE = new SWTElementProvider(); @Override public Element getElement(Object element, CSSEngine engine) { // Note that the order is important (must appear before // Control/Item/Widget) if (element instanceof Text) { return new TextElement((Text) element, engine); } if (element instanceof Button) { return new ButtonElement((Button) element, engine); } if (element instanceof Scale) { return new ScaleElement((Scale) element, engine); } if (element instanceof Shell) { return new ShellElement((Shell) element, engine); } if (element instanceof CTabFolder) { return new CTabFolderElement((CTabFolder) element, engine); } if (element instanceof ToolBar) { return new ToolBarElement((ToolBar) element, engine); } if (element instanceof Tree) { return new TreeElement((Tree) element, engine); } if (element instanceof Table) { return new TableElement((Table) element, engine); } if (element instanceof StyledText) { return new StyledTextElement((StyledText) element, engine); } if (element instanceof Link) { return new LinkElement((Link) element, engine); } if (element instanceof Composite) { return new CompositeElement((Composite) element, engine); } if (element instanceof Control) { return new ControlElement((Control) element, engine); } if (element instanceof CTabItem) { return new CTabItemElement((CTabItem) element, engine); } if (element instanceof TableItem) { return new TableItemElement((TableItem) element, engine); } if (element instanceof ToolItem) { return new ToolItemElement((ToolItem) element, engine); } if (element instanceof Item) { return new ItemElement((Item) element, engine); } if (element instanceof Widget) { return new WidgetElement((Widget) element, engine); } return null; } }