Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package cz.vutbr.web.css;
import java.util.Collection;
import cz.vutbr.web.css.CSSProperty.ValueType;
/**
* Wrap of CSS properties defined for element. Enumeration values follows this
* syntax:
*
*
* UPPERCASE terminal symbols, direct values present in stylesheet, such
* as background-color: transparent;
* lowercase non-terminal symbols, just information that concrete value
* is stored somewhere else
*
* @author kapy
* @author burgetr
*/
public interface NodeData {
/**
* Returns property of given name and supposed type. Inherited properties
* are included.
*
* @param
* Type of property returned. Let compiler infer returning type
* from left part of statement, otherwise return just CSSProperty
* @param name
* Name of property
* @return Value of property of type T or null
*/
public T getProperty(String name);
/**
* Returns property of given name and supposed type. Inherited properties
* can be avoided
*
* @param
* Type of property returned. Let compiler infer returning type
* from left part of statement, otherwise return just CSSProperty
* @param name
* Name of property
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property of type T or null
*/
public T getProperty(String name, boolean includeInherited);
/**
* Returns n-th property of given name and supposed type. Inherited properties
* are included. This is used for properties of the {@link ValueType#LIST} type
* which can have multiple values.
*
* @param
* Type of property returned. Let compiler infer returning type
* from left part of statement, otherwise return just CSSProperty
* @param name
* Name of property
* @param index
* Property value index
* @return Value of property of type T or null
*/
public T getProperty(String name, int index);
/**
* Returns n-th property of given name and supposed type. Inherited properties
* are included. This is used for properties of the {@link ValueType#LIST} type
* which can have multiple values.
*
* @param
* Type of property returned. Let compiler infer returning type
* from left part of statement, otherwise return just CSSProperty
* @param name
* Name of property
* @param index
* Property value index
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property of type T or null
*/
public T getProperty(String name, int index, boolean includeInherited);
/**
* Returns the property of the given name after applying the defaulting processes.
*
* @param name
* Property name
* @return The specified value of the property of the type T or {@code null} if the
* value is not available and no default value is applicable.
*/
public T getSpecifiedProperty(String name);
/**
* Returns the cascaded value of property of given name.
* Inherited values can be avoided.
*
* @param name
* Name of property
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property or null
*/
public Term> getValue(String name, boolean includeInherited);
/**
* Returns the cascaded value of property of given name and supposed type.
* Inherited values can be avoided.
*
* @param
* Type of value returned
* @param clazz
* Class of type
* @param name
* Name of property
* @return Value of property of type T or null
*/
public > T getValue(Class clazz, String name);
/**
* Returns the cascaded value of property of given name and supposed type.
* Inherited values can be avoided.
*
* @param
* Type of value returned
* @param clazz
* Class of type
* @param name
* Name of property
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property of type T or null
*/
public > T getValue(Class clazz, String name,
boolean includeInherited);
/**
* Returns the cascaded value of a list property of given name.
* Inherited values can be avoided.
*
* @param name
* Name of property
* @param index
* Property value index
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property or null
*/
public Term> getValue(String name, int index, boolean includeInherited);
/**
* Returns the cascaded value of a list property of given name and supposed type.
* Inherited values can be avoided.
*
* @param
* Type of value returned
* @param clazz
* Class of type
* @param name
* Name of property
* @param index
* Property value index
* @return Value of property of type T or null
*/
public > T getValue(Class clazz, String name, int index);
/**
* Returns the cascaded value of a list property of given name and supposed type.
* Inherited values can be avoided.
*
* @param
* Type of value returned
* @param clazz
* Class of type
* @param name
* Name of property
* @param index
* Property value index
* @param includeInherited
* Whether to include inherited properties or not
* @return Value of property of type T or null
*/
public > T getValue(Class clazz, String name, int index,
boolean includeInherited);
/**
* Returns the specified value of a property which corresponds to the
* cascaded value (obtained by {@link NodeData#getValue(String, boolean)}) with
* applying the defaulting processes.
* @param name the property name
* @return the property value or {@code null} when the property value is not defined
* and no default value is available.
*/
public Term> getSpecifiedValue(String name);
/**
* Returns the specified value of a property which corresponds to the
* cascaded value (obtained by {@link NodeData#getValue(String, boolean)}) with
* applying the defaulting processes.
*
* @param clazz the expected class of the result
* @param name the property name
* @return the property value or {@code null} when the property value is not defined
* and no default value is available.
*/
public > T getSpecifiedValue(Class clazz, String name);
/**
* Returns a string representation of the property value.
*
* @param name
* Property name
* @param includeInherited
* Whether to include inherited properties or not
* @return The string representation of the assigned property value
* or {@code null} when the property is not defined.
*/
public String getAsString(String name, boolean includeInherited);
/**
* For list properties, obtains the number of property values in the nested list.
*
* @param name property name
* @param includeInherited Whether to include inherited properties or not
* @return the number of property values defined in the list
*/
public int getListSize(String name, boolean includeInherited);
/**
* Accepts values from parent as its own. null parent is
* allowed, than instance is returned unchanged.
*
* @param parent
* Source of inheritance
* @return Modified instance
* @throws ClassCastException When parent implementation class is not the same
*/
public NodeData inheritFrom(NodeData parent) throws ClassCastException;
/**
* Replaces all {@code inherit}, {@code initial} and {@code unset} CSS properties
* with the inherited values or default values of user agent.
*
* @return Modified property
*/
public NodeData concretize();
/**
* Adds data stored in declaration into current instance
*
* @param d
* Declaration to be added
* @return Modified instance
*
*/
public NodeData push(Declaration d);
/**
* Returns the names of all the that are available in the current node.
*
* @return the name of the properties.
*/
public Collection getPropertyNames();
/**
* Obtains the source declaration used for the given property. Inherited properties are included.
* @param name The property name.
* @return the source declaration
*/
public Declaration getSourceDeclaration(String name);
/**
* Obtains the source declaration used for the given property.
* @param name The property name.
* @param includeInherited whether to include the inherited properties.
* @return the source declaration
*/
public Declaration getSourceDeclaration(String name, boolean includeInherited);
}