package org.tessell.model.dsl; import java.util.List; import org.tessell.model.properties.BooleanProperty; public class BooleanPropertyToListBinder<V> { private final Binder b; private final BooleanProperty p; private final List<V> values; public BooleanPropertyToListBinder(Binder b, BooleanProperty p, List<V> values) { this.b = b; this.p = p; this.values = values; } public void has(final V value) { b.add(p.addPropertyChangedHandler(e -> update(value))); if (b.canSetInitialValue(p)) { p.setInitialValue(values.contains(value)); } else { update(value); // set initial } } private void update(V value) { if (p.isTrue() && !values.contains(value)) { values.add(value); } else if (!p.isTrue() && values.contains(value)) { values.remove(value); } } }