blob: 07de09aef00d4f404100c24582f8ebfe627860f0 [file] [log] [blame]
package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib;
import org.eclipse.jst.jsf.common.internal.locator.ILocatorChangeListener;
/**
* A listener for locator detected tag library changes
* @author cbateman
*
*/
public abstract class Listener implements ILocatorChangeListener
{
/**
* Indicates that a tag library has changed
* @author cbateman
*
*/
public static class TaglibChangedEvent extends LocatorChangeEvent
{
/**
* TODO: what happens if one locator has a namespace collision with
* another one?
*/
public enum CHANGE_TYPE
{
/**
* Indicates that the library is new
*/
ADDED,
/**
* Indicates that the library was removed.
*/
REMOVED,
/**
* Indicates that the library is not new, but it's content
* has changed
*/
CHANGED
}
private final TaglibChangedEvent.CHANGE_TYPE _changeType;
private final IFaceletTagRecord _oldValue;
private final IFaceletTagRecord _newValue;
/**
* @param source
* @param oldValue
* @param newValue
* @param changeType
*/
public TaglibChangedEvent(
final AbstractFaceletTaglibLocator source,
final IFaceletTagRecord oldValue,
final IFaceletTagRecord newValue,
TaglibChangedEvent.CHANGE_TYPE changeType)
{
super(source);
_changeType = changeType;
_oldValue = oldValue;
_newValue = newValue;
}
/**
*
*/
private static final long serialVersionUID = -4060018031568577836L;
@Override
public AbstractFaceletTaglibLocator getSource()
{
return (AbstractFaceletTaglibLocator) super.getSource();
}
/**
* @return the type of the change
*/
public final TaglibChangedEvent.CHANGE_TYPE getChangeType()
{
return _changeType;
}
/**
* @return the old value. This is null if the event is ADDED
*/
public final IFaceletTagRecord getOldValue()
{
return _oldValue;
}
/**
* @return the new value. This is null if the event is REMOVED
*/
public final IFaceletTagRecord getNewValue()
{
return _newValue;
}
}
public final void changed(final LocatorChangeEvent event)
{
changed((TaglibChangedEvent)event);
}
/**
* @param event
*
*/
public abstract void changed(Listener.TaglibChangedEvent event);
}