diff options
Diffstat (limited to 'bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/util/declaration/ClipSubStyleAdapter.java')
-rw-r--r-- | bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/util/declaration/ClipSubStyleAdapter.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/util/declaration/ClipSubStyleAdapter.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/util/declaration/ClipSubStyleAdapter.java new file mode 100644 index 0000000000..dc7792f3ad --- /dev/null +++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/util/declaration/ClipSubStyleAdapter.java @@ -0,0 +1,132 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.wst.css.core.util.declaration; + + + +import org.eclipse.wst.css.core.document.ICSSValue; +import org.eclipse.wst.css.core.internal.contentmodel.IValID; +import org.eclipse.wst.css.core.internal.contentmodel.PropCMProperty; +import org.w3c.dom.css.Rect; + + +/** + * Abstract class for clip sub-properties + */ +abstract public class ClipSubStyleAdapter implements ISubPropertyAdapter { + + /** + * + */ + public ClipSubStyleAdapter() { + super(); + } + + /** + * + */ + public String get(ICSS2Properties properties) { + String str = null; + Object obj = properties.get(PropCMProperty.getInstanceOf(PropCMProperty.P_CLIP)); + if (obj != null) { + if (obj instanceof org.w3c.dom.css.Rect) { + str = get((org.w3c.dom.css.Rect) obj); + } + else { + if (obj instanceof ICSSValue) { + str = ((ICSSValue) obj).getCSSValueText(); + } + else { + str = obj.toString(); + } + str = str.trim().toLowerCase(); + int pos = str.indexOf("rect(");//$NON-NLS-1$ + if (pos >= 0) { + String subStr = null; + pos += 5; + int i = 0; + do { + int posEnd = str.indexOf(",", pos);//$NON-NLS-1$ + if (posEnd < 0) + posEnd = str.indexOf(")", pos);//$NON-NLS-1$ + if (posEnd < 0 && pos < str.length()) + posEnd = str.length(); + if (posEnd >= pos) { + subStr = str.substring(pos, posEnd); + pos = posEnd + 1; + } + else + pos = -1; + } + while (i++ < index() && pos > 0); + + if (pos > 0) + str = subStr.trim(); + else + str = null; + } + else + str = null; + } + } + return (str != null) ? str : "";//$NON-NLS-1$ + } + + /** + * + */ + abstract String get(Rect rect); + + /** + * + */ + abstract int index(); + + /** + * + */ + public void set(ICSS2Properties properties, String value) throws org.w3c.dom.DOMException { + } + + /** + * Insert the method's description here. Creation date: (2001/10/04 + * 19:25:46) + * + * @param properties + * org.eclipse.wst.css.core.util.declaration.ICSS2Properties + * @param top + * java.lang.String + * @param right + * java.lang.String + * @param bottom + * java.lang.String + * @param left + * java.lang.String + * @param removeCheck + * boolean + */ + void set(ICSS2Properties properties, String top, String right, String bottom, String left, boolean removeCheck) { + if (top == null || top.length() == 0) + top = IValID.V_AUTO; + if (right == null || right.length() == 0) + right = IValID.V_AUTO; + if (bottom == null || bottom.length() == 0) + bottom = IValID.V_AUTO; + if (left == null || left.length() == 0) + left = IValID.V_AUTO; + + if (removeCheck && top.trim().equalsIgnoreCase(IValID.V_AUTO) && right.trim().equalsIgnoreCase(IValID.V_AUTO) && bottom.trim().equalsIgnoreCase(IValID.V_AUTO) && left.trim().equalsIgnoreCase(IValID.V_AUTO)) { + properties.set(PropCMProperty.getInstanceOf(PropCMProperty.P_CLIP), null); + } + else + properties.set(PropCMProperty.getInstanceOf(PropCMProperty.P_CLIP), "rect(" + top + ", " + right + ", " + bottom + ", " + left + ")");//$NON-NLS-5$//$NON-NLS-4$//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$ + } +}
\ No newline at end of file |