| /******************************************************************************* |
| * Copyright (c) 2008, 2013 Angelo Zerr and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.e4.ui.css.core.css2; |
| |
| import org.eclipse.e4.ui.css.core.dom.properties.css2.CSS2FontProperties; |
| import org.eclipse.e4.ui.css.core.dom.properties.css2.CSS2FontPropertiesImpl; |
| import org.eclipse.e4.ui.css.core.engine.CSSElementContext; |
| import org.w3c.dom.css.CSSPrimitiveValue; |
| import org.w3c.dom.css.CSSValue; |
| import org.w3c.dom.css.CSSValueList; |
| |
| /** |
| * |
| * @version 1.0.0 |
| * @author <a href="mailto:angelo.zerr@gmail.com">Angelo ZERR</a> |
| * |
| */ |
| public class CSS2FontPropertiesHelpers { |
| |
| /** |
| * Constant used to store {@link CSS2FontProperties} instance into |
| * {@link CSSElementContext} context. |
| */ |
| public static final String CSS2FONT_KEY = "org.eclipse.e4.ui.css.core.css2.CSS2FONT_KEY"; |
| |
| /** |
| * Get {@link CSS2FontProperties} from {@link CSSElementContext} context. |
| * |
| * @param control |
| * @return |
| */ |
| public static CSS2FontProperties getCSS2FontProperties(CSSElementContext context) { |
| // Search into Data of context if CSS2FontProperties exist. |
| return (CSS2FontProperties) context.getData(CSS2FONT_KEY); |
| } |
| |
| /** |
| * Set {@link CSS2FontProperties} <code>fontProperties</code> into |
| * {@link CSSElementContext} context. |
| * |
| * @param fontProperties |
| * @param context |
| */ |
| public static void setCSS2FontProperties(CSS2FontProperties fontProperties, CSSElementContext context) { |
| if (fontProperties == null) { |
| return; |
| } |
| context.setData(CSS2FONT_KEY, fontProperties); |
| } |
| |
| /** |
| * Create and return {@link CSS2FontProperties} instance from |
| * <code>value</code>. |
| * |
| * @param value |
| * @param property |
| * @return |
| */ |
| public static CSS2FontProperties createCSS2FontProperties(CSSValue value, String property) { |
| CSS2FontProperties fontProperties = new CSS2FontPropertiesImpl(); |
| updateCSSPropertyFont(fontProperties, property, value); |
| return fontProperties; |
| } |
| |
| /** |
| * Update the <code>property of</code> <code>fontProperties</code> instance with |
| * the <code>value</code>. |
| * |
| * @param fontProperties |
| * @param property |
| * @param value |
| */ |
| public static void updateCSSPropertyFont(CSS2FontProperties fontProperties, String property, CSSValue value) { |
| switch (property) { |
| case "font-family": |
| updateCSSPropertyFontFamily(fontProperties, value); |
| break; |
| case "font-size": |
| updateCSSPropertyFontSize(fontProperties, value); |
| break; |
| case "font-style": |
| updateCSSPropertyFontStyle(fontProperties, value); |
| break; |
| case "font-weight": |
| updateCSSPropertyFontWeight(fontProperties, value); |
| break; |
| case "font": |
| updateCSSPropertyFontComposite(fontProperties, value); |
| break; |
| default: |
| break; |
| } |
| } |
| |
| /** |
| * Update <code>fontProperties</code> instance with the {@link CSSValue} |
| * <code>value</code>. value can be {@link CSSPrimitiveValue} or |
| * {@link CSSValueList}. |
| * |
| * @param font |
| * @param value |
| */ |
| public static void updateCSSPropertyFontComposite(CSS2FontProperties font, CSSValue value) { |
| if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) { |
| CSSValueList valueList = (CSSValueList) value; |
| int length = valueList.getLength(); |
| for (int i = 0; i < length; i++) { |
| CSSValue value2 = valueList.item(i); |
| updateCSSPropertyFontComposite(font, value2); |
| } |
| } else if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| String property = CSS2FontHelper.getCSSFontPropertyName((CSSPrimitiveValue) value); |
| updateCSSPropertyFont(font, property, value); |
| } |
| } |
| |
| /** |
| * Update CSS2FontProperties instance with font-family. |
| * |
| * @param font |
| * @param value |
| * @throws Exception |
| */ |
| public static void updateCSSPropertyFontFamily(CSS2FontProperties font, CSSValue value) { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| font.setFamily((CSSPrimitiveValue) value); |
| } |
| } |
| |
| /** |
| * Update CSS2FontProperties instance with font-size. |
| * |
| * @param font |
| * @param value |
| * @throws Exception |
| */ |
| public static void updateCSSPropertyFontSize(CSS2FontProperties font, CSSValue value) { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| font.setSize((CSSPrimitiveValue) value); |
| } |
| } |
| |
| /** |
| * Update CSS2FontProperties instance with font-style. |
| * |
| * @param font |
| * @param value |
| * @throws Exception |
| */ |
| public static void updateCSSPropertyFontStyle(CSS2FontProperties font, CSSValue value) { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| font.setStyle((CSSPrimitiveValue) value); |
| } |
| } |
| |
| /** |
| * Update CSS2FontProperties instance with font-weight. |
| * |
| * @param font |
| * @param value |
| * @throws Exception |
| */ |
| public static void updateCSSPropertyFontWeight(CSS2FontProperties font, CSSValue value) { |
| if (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE) { |
| font.setWeight((CSSPrimitiveValue) value); |
| } |
| } |
| } |