package eu.geclipse.info; /****************************************************************************** * Copyright (c) 2008 g-Eclipse consortium * 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 * * Initial development of the original code was made for * project g-Eclipse founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributor(s): * Nikolaos Tsioutsias - University of Cyprus *****************************************************************************/ import java.util.ArrayList; import eu.geclipse.info.model.IGlueInfoStore; import eu.geclipse.info.model.IGlueStoreChangeListerner; /** * This class is responsible to handle the listener updates of the * @author tnikos * */ public class InfoCacheListenerHandler implements IGlueInfoStore { private static InfoCacheListenerHandler singleton = null; private ArrayList<IGlueStoreChangeListerner> listeners = new ArrayList<IGlueStoreChangeListerner>(); private InfoCacheListenerHandler() { // make constructor private } /** * return a sigleton instance * @return a InfoCacheListenerHandler object */ public static InfoCacheListenerHandler getInstance() { if (singleton == null) singleton = new InfoCacheListenerHandler(); return singleton; } public void addListener( final IGlueStoreChangeListerner listener ) { this.listeners.add( listener ); } public void notifyListeners( ) { for( IGlueStoreChangeListerner listener : this.listeners ) { listener.infoChanged( ); } } public void removeAllListeners() { while( this.listeners.size()>0 ) { removeListener( this.listeners.get( 0 ) ); } } public void removeListener( final IGlueStoreChangeListerner listener ) { if(this.listeners.contains( listener )){ this.listeners.remove( listener ); } } }