static void parseShorthandBorder(MutableAttributeSet attributes,
CSS.Attribute key,
String value) {
Object[] parts = new Object[CSSBorder.PARSERS.length];
String[] strings = parseStrings(value);
for (String s : strings) {
boolean valid = false;
for (int i = 0; i < parts.length; i++) {
Object v = CSSBorder.PARSERS[i].parseCssValue(s);
if (v != null) {
if (parts[i] == null) {
parts[i] = v;
valid = true;
}
break;
}
}
if (!valid) {
// Part is non-parseable or occured more than once.
return;
}
}
// Unspecified parts get default values.
for (int i = 0; i < parts.length; i++) {
if (parts[i] == null) {
parts[i] = CSSBorder.DEFAULTS[i];
}
}
// Dispatch collected values to individual properties.
for (int i = 0; i < keys.length; i++) {
if ((key == Attribute.BORDER) || (key == keys[i])) {
for (int k = 0; k < parts.length; k++) {
attributes.addAttribute(
CSSBorder.ATTRIBUTES[k][i], parts[k]);
}
}
}
}
|