Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavid_williams2005-04-10 01:59:51 +0000
committerdavid_williams2005-04-10 01:59:51 +0000
commit63219a2d13dec9a190adcbeab4038d788ff4358f (patch)
treed9a3e98042fc2819c0be32393eba4dae9865ed76 /bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java
parentd349d70aa97a92d92705fcf5b7c3dd3d3cb1cf93 (diff)
downloadwebtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.tar.gz
webtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.tar.xz
webtools.sourceediting-63219a2d13dec9a190adcbeab4038d788ff4358f.zip
java doc and specification and internalization
Diffstat (limited to 'bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java')
-rw-r--r--bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java
new file mode 100644
index 0000000000..a728399aad
--- /dev/null
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/declaration/BorderTopShorthandAdapter.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * 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.internal.util.declaration;
+
+
+
+import org.eclipse.wst.css.core.internal.contentmodel.PropCMProperty;
+import org.eclipse.wst.css.core.internal.parserz.CSSRegionContexts;
+import org.eclipse.wst.css.core.internal.parserz.CSSTextParser;
+import org.eclipse.wst.css.core.internal.parserz.CSSTextToken;
+
+
+/**
+ * For 'border-top' property 'border-top' will be expanded to
+ * 'border-top-color', 'border-top-style', 'border-top-width',
+ */
+public class BorderTopShorthandAdapter implements IShorthandAdapter {
+
+ /**
+ *
+ */
+ public BorderTopShorthandAdapter() {
+ super();
+ }
+
+ /**
+ *
+ */
+ public boolean expand(String source, CSSPropertyContext dest) {
+ CSSTextParser parser = new CSSTextParser(CSSTextParser.MODE_DECLARATION_VALUE, source);
+ CSSTextToken[] tokens = parser.getTokens();
+ if (tokens.length <= 0) {
+ return false;
+ }
+ String color = "", style = "", width = "";//$NON-NLS-3$//$NON-NLS-2$//$NON-NLS-1$
+ PropCMProperty propColor = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_COLOR);
+ PropCMProperty propStyle = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_STYLE);
+ PropCMProperty propWidth = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_WIDTH);
+
+ for (int i = 0; i < tokens.length; i++) {
+ if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_IDENT) {
+ if (propStyle.canHave(tokens[i].image))
+ style = tokens[i].image;
+ else if (propWidth.canHave(tokens[i].image))
+ width = tokens[i].image;
+ else if (propColor.canHave(tokens[i].image))
+ color = tokens[i].image;
+ }
+ else if (org.eclipse.wst.css.core.internal.util.CSSUtil.isLength(tokens[i]) || tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_NUMBER) {
+ width = tokens[i].image;
+ }
+ else if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_HASH) {
+ color = tokens[i].image;
+ }
+ else if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_FUNCTION) {
+ StringBuffer buf = new StringBuffer();
+ while (i < tokens.length) {
+ if (tokens[i].kind == CSSRegionContexts.CSS_COMMENT) {
+ i++;
+ continue;
+ }
+ buf.append(tokens[i].image);
+ if (tokens[i++].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_PARENTHESIS_CLOSE)
+ break;
+ }
+ i--;
+ color = buf.toString();
+ }
+ }
+
+ dest.set(propColor.getName(), color);
+ dest.set(propStyle.getName(), style);
+ dest.set(propWidth.getName(), width);
+
+ return true;
+ }
+
+ /**
+ *
+ */
+ public String extract(String source, PropCMProperty propDest) {
+ CSSTextParser parser = new CSSTextParser(CSSTextParser.MODE_DECLARATION_VALUE, source);
+ CSSTextToken[] tokens = parser.getTokens();
+ if (tokens.length <= 0) {
+ return null;
+ }
+ String color = null, style = null, width = null;
+ PropCMProperty propColor = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_COLOR);
+ PropCMProperty propStyle = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_STYLE);
+ PropCMProperty propWidth = PropCMProperty.getInstanceOf(PropCMProperty.P_BORDER_TOP_WIDTH);
+
+ for (int i = 0; i < tokens.length; i++) {
+ if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_IDENT) {
+ if (propStyle.canHave(tokens[i].image))
+ style = tokens[i].image;
+ else if (propWidth.canHave(tokens[i].image))
+ width = tokens[i].image;
+ else if (propColor.canHave(tokens[i].image))
+ color = tokens[i].image;
+ }
+ else if (org.eclipse.wst.css.core.internal.util.CSSUtil.isLength(tokens[i]) || tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_NUMBER) {
+ width = tokens[i].image;
+ }
+ else if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_HASH) {
+ color = tokens[i].image;
+ }
+ else if (tokens[i].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_FUNCTION) {
+ StringBuffer buf = new StringBuffer();
+ while (i < tokens.length) {
+ if (tokens[i].kind == CSSRegionContexts.CSS_COMMENT) {
+ i++;
+ continue;
+ }
+ buf.append(tokens[i].image);
+ if (tokens[i++].kind == CSSRegionContexts.CSS_DECLARATION_VALUE_PARENTHESIS_CLOSE)
+ break;
+ }
+ i--;
+ color = buf.toString();
+ }
+ }
+
+ if (propColor == propDest)
+ return color;
+ else if (propStyle == propDest)
+ return style;
+ else if (propWidth == propDest)
+ return width;
+ else
+ return null;
+ }
+} \ No newline at end of file

Back to the top