blob: 3896bb53c79035a8fda75b604883861381e29db0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 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.contentmodel;
import java.util.Collection;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue;
import org.w3c.dom.css.CSSPrimitiveValue;
/**
*
*/
public class PropCMNumber extends PropCMNode {
private static java.util.Hashtable instances = null;
public final static java.lang.String VAL_ANGLE = "angle";//$NON-NLS-1$
public final static java.lang.String VAL_FREQUENCY = "frequency";//$NON-NLS-1$
public final static java.lang.String VAL_INTEGER = "integer";//$NON-NLS-1$
public final static java.lang.String VAL_LENGTH = "length";//$NON-NLS-1$
public final static java.lang.String VAL_PERCENTAGE = "percentage";//$NON-NLS-1$
public final static java.lang.String VAL_TIME = "time";//$NON-NLS-1$
public final static java.lang.String VAL_HASH = "hash"; //$NON-NLS-1$
public final static java.lang.String VAL_NUM = "number";//$NON-NLS-1$
public final static String DIM_CM = "cm";//$NON-NLS-1$
public final static String DIM_DEG = "deg";//$NON-NLS-1$
public final static String DIM_EMS = "em";//$NON-NLS-1$
public final static String DIM_EXS = "ex";//$NON-NLS-1$
public final static String DIM_GRAD = "grad";//$NON-NLS-1$
public final static String DIM_HASH = "#";//$NON-NLS-1$
public final static String DIM_HZ = "Hz";//$NON-NLS-1$
public final static String DIM_IN = "in";//$NON-NLS-1$
public final static String DIM_INTEGER = "INTEGER";//$NON-NLS-1$
public final static String DIM_KHZ = "kHz";//$NON-NLS-1$
public final static String DIM_MM = "mm";//$NON-NLS-1$
public final static String DIM_MS = "ms";//$NON-NLS-1$
public final static String DIM_NUMBER = "NUMBER";//$NON-NLS-1$
public final static String DIM_PC = "pc";//$NON-NLS-1$
public final static String DIM_PERCENTAGE = "%";//$NON-NLS-1$
public final static String DIM_PT = "pt";//$NON-NLS-1$
public final static String DIM_PX = "px";//$NON-NLS-1$
public final static String DIM_RAD = "rad";//$NON-NLS-1$
public final static String DIM_S = "s";//$NON-NLS-1$
private java.util.Vector fDims = new Vector();
/**
*
*/
protected PropCMNumber(String name) {
super(name);
}
/**
*
*/
public static String getDimension(short primitiveType) {
switch (primitiveType) {
case CSSPrimitiveValue.CSS_CM :
return DIM_CM;
case CSSPrimitiveValue.CSS_DEG :
return DIM_DEG;
case CSSPrimitiveValue.CSS_EMS :
return DIM_EMS;
case CSSPrimitiveValue.CSS_EXS :
return DIM_EXS;
case CSSPrimitiveValue.CSS_GRAD :
return DIM_GRAD;
case ICSSPrimitiveValue.CSS_HASH :
return DIM_HASH; // prefix dimension ....
case CSSPrimitiveValue.CSS_HZ :
return DIM_HZ;
case CSSPrimitiveValue.CSS_IN :
return DIM_IN;
case ICSSPrimitiveValue.CSS_INTEGER :
return "";//$NON-NLS-1$
case CSSPrimitiveValue.CSS_KHZ :
return DIM_KHZ;
case CSSPrimitiveValue.CSS_MM :
return DIM_MM;
case CSSPrimitiveValue.CSS_MS :
return DIM_MS;
case CSSPrimitiveValue.CSS_NUMBER :
return "";//$NON-NLS-1$
case CSSPrimitiveValue.CSS_PC :
return DIM_PC;
case CSSPrimitiveValue.CSS_PERCENTAGE :
return DIM_PERCENTAGE;
case CSSPrimitiveValue.CSS_PT :
return DIM_PT;
case CSSPrimitiveValue.CSS_PX :
return DIM_PX;
case CSSPrimitiveValue.CSS_RAD :
return DIM_RAD;
case CSSPrimitiveValue.CSS_S :
return DIM_S;
}
return null;
}
/**
*
*/
public Set getDimensions() {
HashSet vals = new HashSet();
Iterator it = fDims.iterator();
while (it.hasNext()) {
vals.add(it.next());
}
return vals;
}
/**
*
*/
void getIdentifiers(Set indents) {
}
/**
*
*/
static public PropCMNumber getInstanceOf(String name) {
if (name == null)
return null;
// initialize
if (instances == null)
instances = new Hashtable(20);
// Initialize of DB
if (isNeedInitialize())
PropCMNode.initPropertyCM();
// query
Object node = instances.get(name);
if (node != null)
return (PropCMNumber) node;
// register
if (PropCMNode.isLoading()) {
node = new PropCMNumber(name);
instances.put(name, node);
}
return (PropCMNumber) node;
}
/**
*
*/
public short getType() {
return VAL_NUMBER;
}
/**
*
*/
void getValues(Collection values) {
if (values != null && !values.contains(this))
values.add(this);
}
/**
*
*/
static void initNumberCMDim() {
PropCMNumber num = getInstanceOf(VAL_ANGLE);
num.fDims.add(DIM_DEG);
num.fDims.add(DIM_GRAD);
num.fDims.add(DIM_RAD);
num = getInstanceOf(VAL_FREQUENCY);
num.fDims.add(DIM_HZ);
num.fDims.add(DIM_KHZ);
num = getInstanceOf(VAL_HASH);
num.fDims.add(DIM_HASH);
// num = getInstanceOf(VAL_INTEGER);
// num.fDims.add(DIM_INTEGER);
num = getInstanceOf(VAL_LENGTH);
num.fDims.add(DIM_CM);
num.fDims.add(DIM_EMS);
num.fDims.add(DIM_EXS);
num.fDims.add(DIM_IN);
num.fDims.add(DIM_MM);
num.fDims.add(DIM_PC);
num.fDims.add(DIM_PT);
num.fDims.add(DIM_PX);
// num = getInstanceOf(VAL_NUMBER);
// num.fDims.add(DIM_NUMBER);
num = getInstanceOf(VAL_PERCENTAGE);
num.fDims.add(DIM_PERCENTAGE);
num = getInstanceOf(VAL_TIME);
num.fDims.add(DIM_MS);
num.fDims.add(DIM_S);
}
}