com.jgoodies.binding.value

Class Trigger

Implemented Interfaces:
Observable, Serializable, ValueModel

public final class Trigger
extends AbstractValueModel

A ValueModel implementation that is intended to be used as trigger channel for instances of BufferedValueModel. API users shall trigger commit and flush events using #triggerCommit and #triggerFlush.

This Trigger class works around an inconvenient situation when using a general ValueHolder as trigger channel of a BufferedValueModel. BufferedValueHolder performs commit and flush events only if the trigger channel value reports a change. And a ValueHolder doesn't report a change if #setValue tries to set the current value. For example if you set Boolean.TRUE twice, the latter doesn't fire a property change event. The methods #triggerCommit and #triggerFlush check for the current state and guarantee that the appropriate PropertyChangeEvent is fired. On the other hand, the implementation minimizes the number of events necessary to commit or flush buffered values.

Constraints: The value is of type Boolean.

The following example delays the commit of a buffered value:

 ValueModel subject = new ValueHolder();
 Trigger trigger = new Trigger();
 BufferedValueModel buffer = new BufferedValueModel(subject, trigger);
 
 buffer.setValue("value");
 ...
 trigger.triggerCommit();
 
Version:
$Revision: 1.3 $
Author:
Karsten Lentzsch
See Also:
BufferedValueModel

Field Summary

Fields inherited from class com.jgoodies.binding.value.AbstractValueModel

PROPERTYNAME_VALUE

Constructor Summary

Trigger()
Constructs a Trigger set to neutral.

Method Summary

Object
getValue()
Returns a Boolean that indicates the current trigger state.
void
setValue(Object newValue)
Sets a new Boolean value and rejects all non-Boolean values.
void
triggerCommit()
Triggers a commit event in BufferedValueModels that share this Trigger.
void
triggerFlush()
Triggers a flush event in BufferedValueModels that share this Trigger.

Methods inherited from class com.jgoodies.binding.value.AbstractValueModel

addValueChangeListener, booleanValue, doubleValue, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, floatValue, getString, intValue, longValue, removeValueChangeListener, setValue, setValue, setValue, setValue, setValue, toString

Methods inherited from class com.jgoodies.binding.beans.Model

addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, equals, fireMultiplePropertiesChanged, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener

Constructor Details

Trigger

public Trigger()
Constructs a Trigger set to neutral.

Method Details

getValue

public Object getValue()
Returns a Boolean that indicates the current trigger state.
Specified by:
getValue in interface ValueModel
Returns:
a Boolean that indicates the current trigger state

setValue

public void setValue(Object newValue)
Sets a new Boolean value and rejects all non-Boolean values. Fires no change event if the new value is equal to the previously set value.

This method is not intended to be used by API users. Instead you should trigger commit and flush events by invoking #triggerCommit or #triggerFlush.

Specified by:
setValue in interface ValueModel
Parameters:
newValue - the Boolean value to be set

triggerCommit

public void triggerCommit()
Triggers a commit event in BufferedValueModels that share this Trigger. Sets the value to Boolean.TRUE and ensures that dependents are notified about a value change to this new value. Only if necessary the value is temporarily set to null. This way it minimizes the number of PropertyChangeEvents fired by this Trigger.

triggerFlush

public void triggerFlush()
Triggers a flush event in BufferedValueModels that share this Trigger. Sets the value to Boolean.FALSE and ensures that dependents are notified about a value change to the new value. Only if necessary the value is temporarily set to null. This way it minimizes the number of PropertyChangeEvents fired by this Trigger.

Copyright © 2002-2007 JGoodies Karsten Lentzsch. All Rights Reserved.