blob: dc7792f3ad676f9d4bfa2aa6b6650cc989cd496e [file] [log] [blame]
/*******************************************************************************
* 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$
}
}