htiextension/com.nokia.s60tools.hticonnection/src/com/nokia/s60tools/hticonnection/listener/HtiConnectionManager.java
author dpodwall
Tue, 12 Jan 2010 13:17:53 -0600
changeset 0 61163b28edca
permissions -rw-r--r--
initial EPL conversion

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

package com.nokia.s60tools.hticonnection.listener;

import org.eclipse.core.runtime.ListenerList;

import com.nokia.s60tools.hticonnection.core.HtiConnection;
import com.nokia.s60tools.hticonnection.core.HtiConnection.ConnectionStatus;

/**
* Singleton class for managing HTI Connection listeners
*/
public class HtiConnectionManager {
	
	/**
	 * Singleton instance.
	 */
	static private HtiConnectionManager instance = null;
	
	/**
	 * Listeners interested in job completions operations.
	 */
	private ListenerList listeners = null;
	
	/**
	 * Private default constructor.
	 */
	private HtiConnectionManager() {
		listeners = new ListenerList();
	}
	
	/**
	 * Only one instance can exist at one time
	 * @return Current instance
	 */
	public static HtiConnectionManager getInstance(){
		if( instance == null ){
			instance = new HtiConnectionManager();
		}
		return instance;		
	}
	
	/**
	 * Add listener.
	 * Listener will be informed that connection has been started, if
	 * connection is has been started before.
	 * @param obj Listener
	 */
	public void addListener(IHtiConnectionListener obj){
		listeners.add(obj);
		if(HtiConnection.getInstance().getConnectionStatus() == ConnectionStatus.CONNECTED) {
			// Listener is informed that connection has already been started.
			obj.connectionStarted();			
		}

	}
	
	/**
	 * Remove listener
	 * @param obj Listener
	 */
	public void removeListener(IHtiConnectionListener obj){
		listeners.remove(obj);
	}
	
	/**
	 * Inform all listeners of connection termination
	 */
	public void informConnectionTerminated() {
		Object[] listenerArray = listeners.getListeners();
		for (int i = 0; i < listenerArray.length; i++) {
			IHtiConnectionListener listenerObj = (IHtiConnectionListener) listenerArray[i];
			listenerObj.connectionTerminated();
		}
	}

	/**
	 * Inform all listeners of connection termination
	 */
	public void informConnectionStarted() {
		Object[] listenerArray = listeners.getListeners();
		for (int i = 0; i < listenerArray.length; i++) {
			IHtiConnectionListener listenerObj = (IHtiConnectionListener) listenerArray[i];
			listenerObj.connectionStarted();
		}
	}
}