/**
* Aptana Studio
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
* Please see the license.html included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.aptana.ide.syncing.ui.old.views;
import org.eclipse.core.runtime.ListenerList;
import com.aptana.core.logging.IdeLog;
import com.aptana.ide.core.io.IConnectionPoint;
import com.aptana.ide.syncing.core.old.ISmartSyncListener;
import com.aptana.ide.syncing.core.old.SmartSyncEvent;
import com.aptana.ide.syncing.core.old.VirtualFileSyncPair;
import com.aptana.ide.syncing.ui.SyncingUIPlugin;
/**
* @author Kevin Sawicki (ksawicki@aptana.com)
*/
public class SmartSyncEventManager
{
private static SmartSyncEventManager manager;
private ListenerList listeners;
private SmartSyncEventManager()
{
listeners = new ListenerList();
}
/**
* Adds a listener
*
* @param listener
*/
public void addListener(ISmartSyncListener listener)
{
listeners.add(listener);
}
/**
* Removes a listener
*
* @param listener
*/
public void removeListener(ISmartSyncListener listener)
{
listeners.remove(listener);
}
/**
* Fires a smart sync event
*
* @param completedPairs
* @param sourceManager
* @param destinationManager
* @param comment
*/
public void fireEvent(VirtualFileSyncPair[] completedPairs, IConnectionPoint sourceManager,
IConnectionPoint destinationManager, String comment)
{
SmartSyncEvent event = new SmartSyncEvent();
event.sourceManager = sourceManager;
event.destinationManager = destinationManager;
event.completedPairs = completedPairs;
event.comment = comment;
Object[] listens = listeners.getListeners();
for (Object listener : listens)
{
if (listener instanceof ISmartSyncListener)
{
try
{
((ISmartSyncListener) listener).smartSyncComplete(event);
}
catch (Exception e)
{
IdeLog.logError(SyncingUIPlugin.getDefault(),
Messages.SmartSyncEventManager_ERR_ExceptionNotifyingSmartSyncListener, e);
}
catch (Error e)
{
IdeLog.logError(SyncingUIPlugin.getDefault(),
Messages.SmartSyncEventManager_ERR_ErrorNotifyingSmartSyncListener, e);
}
}
}
}
/**
* Gets the smart sync event manager
*
* @return - event manager
*/
public synchronized static SmartSyncEventManager getManager()
{
if (manager == null)
{
manager = new SmartSyncEventManager();
}
return manager;
}
}