blob: 849d150912eb917d2c38ac599b3af297850c1aa2 [file] [log] [blame]
/*******************************************************************************
* 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";
}
}