com.jgoodies.binding.value

Class AbstractVetoableValueModel

Implemented Interfaces:
Observable, Serializable, ValueModel

public abstract class AbstractVetoableValueModel
extends AbstractValueModel

A ValueModel that allows to accept or reject proposed value changes. Useful to request information from the user or to perform operations before a value is changed.

Wraps a given subject ValueModel and always returns the subject value as this model's value. Observes subject value changes and forwards them to listeners of this model. If a value is set to this model, the abstract method #proposedChange is invoked. In this method implementors define how to accept or reject value changes.

Implementors may veto against a proposed change based on the application state or by asking the user, and may also perform additional operations during the check, for example to save editor contents. Here's an example:

 public class CheckPendingEditValueModel extends AbstractVetoableValueModel {

     public CheckPendingEditValueModel(ValueModel subject) {
         super(subject);
     }

     public boolean proposedChange(Object oldValue, Object proposedNewValue) {
         if (equals(oldValue, proposedNewValue))
             return true;
         int option = JOptionPane.showConfirmDialog(
             Application.getDefaultParentFrame(),
             "Do you want to save the editor contents.");
         if (option == JOptionPane.YES_OPTION)
             model.save();
         return option != JOptionPane.CANCEL_OPTION;
     }
 }
 
Version:
$Revision: 1.9 $
Author:
Karsten Lentzsch
Since:
1.1

Field Summary

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

PROPERTYNAME_VALUE

Constructor Summary

AbstractVetoableValueModel(ValueModel subject)
Constructs an AbstractVetoableValueModel for the given ValueModel.

Method Summary

Object
getValue()
Returns this model's current subject value.
abstract boolean
proposedChange(Object oldValue, Object proposedNewValue)
Checks and answers whether the proposed value change shall be accepted or rejected.
void
setValue(Object newValue)
Sets the given value as new subject value if and only if 1) the new value differs from the old value and 2) the proposed change is accepted as checked by proposedChange(oldValue, newValue).

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

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

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

addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, equals, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, 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

AbstractVetoableValueModel

protected AbstractVetoableValueModel(ValueModel subject)
Constructs an AbstractVetoableValueModel for the given ValueModel.
Parameters:
subject - the underlying (or wrapped) ValueModel

Method Details

getValue

public final Object getValue()
Returns this model's current subject value.
Specified by:
getValue in interface ValueModel
Returns:
this model's current subject value.

proposedChange

public abstract boolean proposedChange(Object oldValue,
                                       Object proposedNewValue)
Checks and answers whether the proposed value change shall be accepted or rejected. Implementors may perform additional operations, for example to save a pending editor content.
Parameters:
oldValue - the value before the change
proposedNewValue - the new value if the change is accepted
Returns:
true to accept the proposed value, false to veto against it.

setValue

public final void setValue(Object newValue)
Sets the given value as new subject value if and only if 1) the new value differs from the old value and 2) the proposed change is accepted as checked by proposedChange(oldValue, newValue).
Specified by:
setValue in interface ValueModel
Parameters:
newValue - the value to set

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