package org.tessell.model.validation.rules; import org.tessell.model.events.PropertyChangedEvent; import org.tessell.model.events.PropertyChangedHandler; import org.tessell.model.properties.Property; /** A rule that fires immediately, until the source property changes. */ public class Transient<T> extends AbstractRule<T> { private boolean hasChanged; public Transient(String message) { super(message); } @Override public void setProperty(final Property<T> property) { super.setProperty(property); property.reassess(); property.addPropertyChangedHandler(new PropertyChangedHandler<T>() { public void onPropertyChanged(PropertyChangedEvent<T> event) { hasChanged = true; property.reassess(); } }); } @Override protected boolean isValid() { return hasChanged; } }