/******************************************************************************* * Copyright (c) 2008, 2014 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 *******************************************************************************/ package org.eclipse.e4.ui.css.swt.dom.html; import java.util.function.Supplier; import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.eclipse.e4.ui.css.swt.dom.WidgetElement; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Scrollable; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Widget; /** * w3c Element which wrap SWT widget to manage HTML/XUL selectors. */ public class SWTHTMLElement extends WidgetElement { protected String attributeType; public SWTHTMLElement(Widget widget, CSSEngine engine) { super(widget, engine); attributeType = computeAttributeType(); } @Override protected Supplier<String> internalGetAttribute(String attr) { if ("type".equals(attr)) { return () -> attributeType != null ? attributeType : ""; } return super.internalGetAttribute(attr); } @Override protected String computeLocalName() { Widget widget = getWidget(); // HTML name if (widget instanceof Text) { int style = widget.getStyle(); if ((style | SWT.MULTI) == style) { return "textarea"; } return "input"; } if (widget instanceof Button) { return "input"; } if (widget instanceof Combo) { return "select"; } if (widget instanceof CCombo) { return "select"; } if (widget instanceof Label) { return "label"; } if (widget instanceof Shell) { return "body"; } if (widget instanceof Canvas) { return "canvas"; } if (widget instanceof Scrollable) { return "div"; } if (widget instanceof List) { return "body"; } if (widget instanceof Group) { return "div"; } if (widget instanceof Link) { return "a"; } if (widget instanceof Composite) { return "div"; } // XUL name if (widget instanceof Tree) { return "tree"; } if (widget instanceof Table) { return "listbox"; } return super.computeLocalName(); } protected String computeAttributeType() { Widget widget = getWidget(); if (widget instanceof Button) { Button button = (Button) widget; int style = button.getStyle(); if ((style | SWT.RADIO) == style) { return "radio"; } if ((style | SWT.CHECK) == style) { return "checkbox"; } return "button"; } if (widget instanceof Text) { Text text = (Text) widget; if ((text.getStyle() & SWT.PASSWORD) != 0) { return "password"; } else if ((text.getStyle() & SWT.MULTI) != 0) { return ""; } else { return "text"; } } return ""; } }