/******************************************************************************* * Copyright (c) 2008, 2015 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.core.dom.properties.providers; import org.eclipse.e4.ui.css.core.dom.CSSStylableElement; import org.eclipse.e4.ui.css.core.dom.properties.ICSSPropertyHandlerProvider; import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.w3c.dom.Element; import org.w3c.dom.css.CSSStyleDeclaration; /** * Abstract CSS Property handler. */ public abstract class AbstractCSSPropertyHandlerProvider implements ICSSPropertyHandlerProvider { @Override public CSSStyleDeclaration getDefaultCSSStyleDeclaration(CSSEngine engine, Object widget, CSSStyleDeclaration newStyle, String pseudoE) throws Exception { Element elt = engine.getElement(widget); if (elt != null) { if (elt instanceof CSSStylableElement) { CSSStylableElement stylableElement = (CSSStylableElement) elt; return getDefaultCSSStyleDeclaration(engine, stylableElement, newStyle, pseudoE); } } return null; } /** * Return the CSS property from the CSS <code>propertyName</code> of the * <code>stylableElement</code>. * * @param engine * @param stylableElement * @param propertyName * @return */ protected String getCSSPropertyStyle(CSSEngine engine, CSSStylableElement stylableElement, String propertyName, String pseudo) { String propertyValue = engine.retrieveCSSProperty(stylableElement, propertyName, pseudo); if (propertyValue == null) { return null; } StringBuffer style = new StringBuffer(); style.append(propertyName); style.append(":"); style.append(propertyValue); style.append(";"); return style.toString(); } /** * Return the default CSS style declaration of the * {@link CSSStylableElement} <code>stylableElement</code> before apply * the <code>newStyle</code> {@link CSSStyleDeclaration}. * * @param engine * @param stylableElement * @param newStyle * @return * @throws Exception */ protected abstract CSSStyleDeclaration getDefaultCSSStyleDeclaration( CSSEngine engine, CSSStylableElement stylableElement, CSSStyleDeclaration newStyle, String pseudoE) throws Exception; }