001 /*
002 * Copyright 2002-2004 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;
017
018 import java.util.Iterator;
019
020 import org.springframework.richclient.util.EventListenerListHelper;
021
022 /**
023 * A class that can be used to trigger an event on a group of objects. Mainly
024 * intended to be used to trigger flush/revert in
025 * <code>BufferedValueModel</code> but is useful in general.
026 *
027 * @author Keith Donald
028 * @author Oliver Hutchison
029 */
030 public class CommitTrigger {
031
032 private final EventListenerListHelper listeners = new EventListenerListHelper(CommitTriggerListener.class);
033
034 /**
035 * Constructs a <code>CommitTrigger</code>.
036 */
037 public CommitTrigger() {
038 }
039
040 /**
041 * Triggers a commit event.
042 */
043 public void commit() {
044 for (Iterator i = listeners.iterator(); i.hasNext();) {
045 ((CommitTriggerListener) i.next()).commit();
046 }
047 }
048
049 /**
050 * Triggers a revert event.
051 */
052 public void revert() {
053 for (Iterator i = listeners.iterator(); i.hasNext();) {
054 ((CommitTriggerListener) i.next()).revert();
055 }
056 }
057
058 /**
059 * Adds the provided listener to the list of listeners that will be notified
060 * whenever a commit or revert event is fired.
061 *
062 * @param listener the <code>CommitTriggerListener</code> to add
063 */
064 public void addCommitTriggerListener(CommitTriggerListener listener) {
065 listeners.add(listener);
066 }
067
068 /**
069 * Removed the provided listener to the list of listeners that will be
070 * notified whenever a commit or revert event is fired.
071 *
072 * @param listener the <code>CommitTriggerListener</code> to remove
073 */
074 public void removeCommitTriggerListener(CommitTriggerListener listener) {
075 listeners.remove(listener);
076 }
077 }