/******************************************************************************* * Copyright (c) 2007, 2008 Oracle. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0, which accompanies this distribution * and is available at http://www.eclipse.org/legal/epl-v10.html. * * Contributors: * Oracle - initial API and implementation ******************************************************************************/ package org.eclipse.jpt.utility.model; import org.eclipse.jpt.utility.model.listener.CollectionChangeListener; import org.eclipse.jpt.utility.model.listener.ListChangeListener; import org.eclipse.jpt.utility.model.listener.PropertyChangeListener; import org.eclipse.jpt.utility.model.listener.StateChangeListener; import org.eclipse.jpt.utility.model.listener.TreeChangeListener; /** * Interface to be implemented by models that notify listeners of * changes to bound properties, collections, lists, and/or trees. * * Provisional API: This interface is part of an interim API that is still * under development and expected to change significantly before reaching * stability. It is available at this early stage to solicit feedback from * pioneering adopters on the understanding that any code that uses this API * will almost certainly be broken (repeatedly) as the API evolves. */ public interface Model { // ********** state change ********** /** * Add a listener that listens to all state change events. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addStateChangeListener(StateChangeListener listener); /** * Remove the specified state change listener. If the listener * was added more than once, it will be notified one less time * after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeStateChangeListener(StateChangeListener listener); // ********** property change ********** /** * Add a listener that listens to all property change events, * regardless of the property name associated with that event. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addPropertyChangeListener(PropertyChangeListener listener); /** * Add a listener that listens to all property change events with * the specified property name. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addPropertyChangeListener(String propertyName, PropertyChangeListener listener); /** * Remove a listener that listens to all property change events, * regardless of the property name associated with that event. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removePropertyChangeListener(PropertyChangeListener listener); /** * Remove a listener that listens to all property change events, * with the specified property name. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removePropertyChangeListener(String propertyName, PropertyChangeListener listener); // ********** collection change ********** /** * Add a listener that listens to all collection change events, * regardless of the collection name associated with that event. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addCollectionChangeListener(CollectionChangeListener listener); /** * Add a listener that listens to all collection change events with * the specified collection name. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addCollectionChangeListener(String collectionName, CollectionChangeListener listener); /** * Remove a listener that listens to all collection change events, * regardless of the collection name associated with that event. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeCollectionChangeListener(CollectionChangeListener listener); /** * Remove a listener that listens to all collection change events, * with the specified collection name. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener); // ********** list change ********** /** * Add a listener that listens to all list change events, * regardless of the list name associated with that event. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addListChangeListener(ListChangeListener listener); /** * Add a listener that listens to all list change events with * the specified list name. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addListChangeListener(String listName, ListChangeListener listener); /** * Remove a listener that listens to all list change events, * regardless of the list name associated with that event. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeListChangeListener(ListChangeListener listener); /** * Remove a listener that listens to all list change events, * with the specified list name. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeListChangeListener(String listName, ListChangeListener listener); // ********** tree change ********** /** * Add a listener that listens to all tree change events, * regardless of the tree name associated with that event. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addTreeChangeListener(TreeChangeListener listener); /** * Add a listener that listens to all tree change events with * the specified tree name. * The same listener may be added more than once and will be called * as many times as it is added. The listener cannot be null. */ void addTreeChangeListener(String treeName, TreeChangeListener listener); /** * Remove a listener that listens to all tree change events, * regardless of the tree name associated with that event. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeTreeChangeListener(TreeChangeListener listener); /** * Remove a listener that listens to all tree change events, * with the specified tree name. * If the listener was added more than once, it will be notified one less * time after being removed. An exception will be thrown if the * listener is null or if the listener was never added. */ void removeTreeChangeListener(String treeName, TreeChangeListener listener); }