package org.freeplane.features.styles;
import java.util.Collection;
import org.freeplane.core.util.TextUtils;
import org.freeplane.features.filter.condition.ASelectableCondition;
import org.freeplane.features.filter.condition.ConditionFactory;
import org.freeplane.features.map.NodeModel;
import org.freeplane.n3.nanoxml.XMLElement;
public class StyleContainsCondition extends ASelectableCondition {
static final String NAME = "style_contains_condition";
final private Object value;
public StyleContainsCondition(final IStyle value) {
this.value = value;
}
public boolean checkNode(final NodeModel node) {
final Collection<IStyle> styles = LogicalStyleController.getController().getStyles(node);
return styles.contains(value);
}
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 StyleContainsCondition(new StyleString(text));
}
final String name = element.getAttribute("LOCALIZED_TEXT", null);
if (name != null) {
return new StyleContainsCondition(new StyleNamedObject(name));
}
return null;
}
protected String createDescription() {
final String style = TextUtils.getText(LogicalStyleFilterController.FILTER_STYLE);
final String simpleCondition = TextUtils.getText(ConditionFactory.FILTER_CONTAINS);
return ConditionFactory.createDescription(style, simpleCondition, value.toString(), false, false);
}
@Override
protected String getName() {
return NAME;
}
}