blob: e8c77806198fd5e14de918babe24676906f38ad5 [file] [log] [blame]
/*
* Copyright (c) 2007, 2009, 2011-2013, 2020 Eike Stepper (Loehne, Germany) and others.
* 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
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.net4j.util.event;
import org.eclipse.net4j.util.event.INotifier.INotifier2;
/**
* Various static helper methods for dealing with {@link IEvent events}, {@link INotifier notifiers} and
* {@link IListener listeners}.
*
* @author Eike Stepper
*/
public final class EventUtil
{
/**
* @since 3.0
*/
public static final IListener[] NO_LISTENERS = {};
private EventUtil()
{
}
/**
* @since 3.2
*/
public static boolean addUniqueListener(Object notifier, IListener listener)
{
if (notifier instanceof INotifier2)
{
return ((INotifier2)notifier).addUniqueListener(listener);
}
if (notifier instanceof INotifier)
{
if (!hasListener(notifier, listener))
{
((INotifier)notifier).addListener(listener);
return true;
}
}
return false;
}
public static boolean addListener(Object notifier, IListener listener)
{
if (notifier instanceof INotifier)
{
((INotifier)notifier).addListener(listener);
return true;
}
return false;
}
public static boolean removeListener(Object notifier, IListener listener)
{
if (notifier instanceof INotifier)
{
((INotifier)notifier).removeListener(listener);
return true;
}
return false;
}
public static IListener[] getListeners(Object notifier)
{
if (notifier instanceof INotifier)
{
return ((INotifier)notifier).getListeners();
}
return NO_LISTENERS;
}
/**
* @since 3.2
*/
public static boolean hasListener(Object notifier, IListener listener)
{
if (notifier instanceof INotifier2)
{
return ((INotifier2)notifier).hasListener(listener);
}
if (notifier instanceof INotifier)
{
IListener[] listeners = ((INotifier)notifier).getListeners();
for (int i = 0; i < listeners.length; i++)
{
if (listeners[i] == listener)
{
return true;
}
}
}
return false;
}
}