| /******************************************************************************* |
| * Copyright (c) 2008 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.properties.css2; |
| |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| import org.eclipse.e4.ui.css.core.dom.properties.css2.AbstractCSSPropertyClassificationHandler; |
| import org.eclipse.e4.ui.css.core.dom.properties.css2.ICSSPropertyClassificationHandler; |
| import org.eclipse.e4.ui.css.core.engine.CSSEngine; |
| import org.eclipse.e4.ui.css.swt.helpers.SWTElementHelpers; |
| import org.eclipse.swt.graphics.Cursor; |
| import org.eclipse.swt.widgets.Control; |
| import org.w3c.dom.css.CSSPrimitiveValue; |
| import org.w3c.dom.css.CSSValue; |
| |
| public class CSSPropertyClassificationSWTHandler extends |
| AbstractCSSPropertyClassificationHandler { |
| |
| private static Log logger = LogFactory |
| .getLog(CSSPropertyClassificationSWTHandler.class); |
| |
| public final static ICSSPropertyClassificationHandler INSTANCE = new CSSPropertyClassificationSWTHandler(); |
| |
| public boolean applyCSSProperty(Object element, String property, |
| CSSValue value, String pseudo, CSSEngine engine) throws Exception { |
| Control control = SWTElementHelpers.getControl(element); |
| if (control != null) { |
| super.applyCSSProperty(control, property, value, pseudo, engine); |
| return true; |
| } |
| return false; |
| |
| } |
| |
| public String retrieveCSSProperty(Object element, String property, |
| String pseudo, CSSEngine engine) throws Exception { |
| Control control = SWTElementHelpers.getControl(element); |
| if (control != null) { |
| return super.retrieveCSSProperty(control, property, pseudo, engine); |
| } |
| return null; |
| } |
| |
| public void applyCSSPropertyCursor(Object element, CSSValue value, |
| String pseudo, CSSEngine engine) throws Exception { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| final Control control = (Control) element; |
| Cursor cursor = (Cursor) engine.convert(value, Cursor.class, |
| control.getDisplay()); |
| control.setCursor(cursor); |
| } |
| } |
| |
| public void applyCSSPropertyVisibility(Object element, CSSValue value, |
| String pseudo, CSSEngine engine) throws Exception { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| Control control = (Control) element; |
| CSSPrimitiveValue primitiveValue = (CSSPrimitiveValue) value; |
| String visibility = primitiveValue.getStringValue(); |
| if ("hidden".equals(visibility)) |
| control.setVisible(false); |
| else if ("collapse".equals(visibility)) { |
| // TODO : manage collapse |
| control.setVisible(false); |
| } else |
| control.setVisible(true); |
| } |
| } |
| |
| public String retrieveCSSPropertyCursor(Object element, String pseudo, |
| CSSEngine engine) throws Exception { |
| Control control = (Control) element; |
| Cursor cursor = null; |
| try { |
| cursor = control.getCursor(); |
| } catch (Throwable e) { |
| if (logger.isWarnEnabled()) |
| logger |
| .warn("Impossible to manage cursor, This SWT version doesn't support control.getCursor() Method"); |
| } |
| return engine.convert(cursor, Cursor.class, null); |
| } |
| |
| public String retrieveCSSPropertyVisibility(Object element, String pseudo, |
| CSSEngine engine) throws Exception { |
| Control control = (Control) element; |
| // if (control.isVisible()) |
| return "visible"; |
| // return "hidden"; |
| } |
| } |