blob: 68841647b64a7475e7393d42532b55045a0a6bfe [file] [log] [blame]
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.workspace;
import org.apache.myrmidon.listeners.ProjectListener;
/**
* Support for the project listener event dispatching.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class ProjectListenerSupport
implements ProjectListener
{
private ProjectListener[] m_listeners = new ProjectListener[ 0 ];
/**
* Add an extra project listener that wants to receive notification of listener events.
*
* @param listener the listener
*/
public void addProjectListener( final ProjectListener listener )
{
final ProjectListener[] listeners = new ProjectListener[ m_listeners.length + 1 ];
System.arraycopy( m_listeners, 0, listeners, 0, m_listeners.length );
listeners[ m_listeners.length ] = listener;
m_listeners = listeners;
}
/**
* Remove a project listener that wants to receive notification of listener events.
*
* @param listener the listener
*/
public void removeProjectListener( final ProjectListener listener )
{
int found = -1;
for( int i = 0; i < m_listeners.length; i++ )
{
if( listener == m_listeners[ i ] )
{
found = i;
break;
}
}
if( -1 == found ) return;
final ProjectListener[] listeners = new ProjectListener[ m_listeners.length - 1 ];
System.arraycopy( m_listeners, 0, listeners, 0, found );
final int count = m_listeners.length - found - 1;
System.arraycopy( m_listeners, found, listeners, found + 1, count );
m_listeners = listeners;
}
/**
* Fire a projectStarted event.
*/
public void projectStarted()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].projectStarted();
}
}
/**
* Fire a projectFinished event.
*/
public void projectFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].projectFinished();
}
}
/**
* Fire a targetStarted event.
*
* @param targetName the name of target
*/
public void targetStarted( String targetName )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].targetStarted( targetName );
}
}
/**
* Fire a targetFinished event.
*/
public void targetFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].targetFinished();
}
}
/**
* Fire a targetStarted event.
*
* @param targetName the name of target
*/
public void taskStarted( String taskName )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].taskStarted( taskName );
}
}
/**
* Fire a taskFinished event.
*/
public void taskFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].taskFinished();
}
}
/**
* Fire a log event.
*
* @param message the log message
*/
public void log( String message )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].log( message );
}
}
/**
* Fire a log event.
*
* @param message the log message
* @param throwable the throwable to be logged
*/
public void log( String message, Throwable throwable )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].log( message, throwable );
}
}
}