/**
* @param propertyName
* @return the property
*/
protected Object calculateProperty(String propertyName) {
ICSSPropertyMeta meta = getPropertyMeta(propertyName);
Object result = null;
// get declaration
CSSStyleDeclaration decl = getDeclaration();
CSSValue value = decl == null ? null : decl
.getPropertyCSSValue(propertyName);
if (value == null) {
if (meta != null) {
result = meta.calculateHTMLAttributeOverride(_element,
getHTMLTag(), propertyName, this);
if (result != null) {
return result;
}
}
decl = getDefaultDeclaration();
}
value = decl == null ? null : decl.getPropertyCSSValue(propertyName);
if (value != null && value.getCssValueType() == CSSValue.CSS_INHERIT) {
result = getParentResultValue(meta, propertyName);
} else if (value == null) {
if (meta != null) {
result = meta.calculateHTMLAttributeOverride(_element,
getHTMLTag(), propertyName, this);
}
if (result == null) {
result = calculateLocalOverride(meta, propertyName);
}
if (result == null) {
if (meta == null) {
result = ICSSPropertyMeta.NOT_SPECIFIED;
} else {
if (meta.isInherited()) {
result = getParentResultValue(meta, propertyName);
} else {
result = meta.getInitialValue(propertyName, this);
}
}
}
} else {
result = calculateCSSValueResult(meta, value, propertyName);