package org.freeplane.features.styles;
import org.freeplane.core.util.TextUtils;
import org.freeplane.features.filter.condition.ASelectableCondition;
import org.freeplane.features.map.NodeModel;
import org.freeplane.n3.nanoxml.XMLElement;
public class StyleCondition extends ASelectableCondition {
static final String NAME = "style_equals_condition";
final private Object value;
public StyleCondition(final IStyle value) {
this.value = value;
}
public boolean checkNode(final NodeModel node) {
IStyle firstStyle = LogicalStyleController.getController().getFirstStyle(node);
return value.equals(firstStyle);
}
public void fillXML(final XMLElement child) {
if (value instanceof StyleString) {
child.setAttribute("TEXT", value.toString());
}
else if (value instanceof StyleNamedObject) {
child.setAttribute("LOCALIZED_TEXT", ((StyleNamedObject) value).getObject().toString());
}
}
public static ASelectableCondition load(final XMLElement element) {
final String text = element.getAttribute("TEXT", null);
if (text != null) {
return new StyleCondition(new StyleString(text));
}
final String name = element.getAttribute("LOCALIZED_TEXT", null);
if (name != null) {
return new StyleCondition(new StyleNamedObject(name));
}
return null;
}
protected String createDescription() {
final String filterStyle = TextUtils.getText(LogicalStyleFilterController.FILTER_STYLE);
return filterStyle + " '" + value.toString() + '\'';
}
@Override
protected String getName() {
return NAME;
}
}