001    /*
002     * Copyright 2002-2005 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.binding.value.support;
017    
018    import org.springframework.binding.value.PropertyChangePublisher;
019    import org.springframework.binding.value.ValueModel;
020    
021    /**
022     * Adds the <code>dirty</code> aspect to a valueModel, tracking changes when needed.
023     */
024    public interface DirtyTrackingValueModel extends ValueModel, PropertyChangePublisher
025    {
026    
027        /** The name of the bound property <em>dirty</em>. */
028        String DIRTY_PROPERTY = "dirty";
029    
030        /**
031         * Returns <code>true</code> if value held by this model has changed since the last call to reset or the
032         * last time a value came up from the inner model.
033         */
034        boolean isDirty();
035    
036        /**
037         * Resets the dirty state of this model to <code>false</code>.
038         */
039        void clearDirty();
040    
041        /**
042         * Reverts the value held by this model to the original value at the last call to reset or the last time a
043         * value came up from the inner model.
044         */
045        void revertToOriginal();
046    }