blob: a5b8e1ced71980ada51467415caf6bfa1e0cdfdb [file] [log] [blame]
package org.eclipse.jst.pagedesigner.editors;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.util.TransferDropTargetListener;
import org.eclipse.jst.pagedesigner.IJMTConstants;
import org.eclipse.jst.pagedesigner.PDPlugin;
class OutlineTargetListenerReader
{
private final static String CLASS = "class"; //$NON-NLS-1$
private static List<TransferDropTargetListener> _listeners;
public static synchronized List<TransferDropTargetListener> getListeners()
{
if (_listeners == null)
{
_listeners = readListeners();
}
return Collections.unmodifiableList(_listeners);
}
private static List<TransferDropTargetListener> readListeners()
{
List<TransferDropTargetListener> listeners = new ArrayList<TransferDropTargetListener>();
IExtensionPoint extensionPoint =
Platform.getExtensionRegistry()
.getExtensionPoint(PDPlugin.getPluginId(),
IJMTConstants.EXTENSION_POINT_PAGEDESIGNER);
IExtension[] extensions = extensionPoint.getExtensions();
for (int i=0; i<extensions.length; i++)
{
IExtension ext = extensions[i];
IConfigurationElement[] pageDesignerElements = ext.getConfigurationElements();
for (int j=0; j<pageDesignerElements.length; j++)
{
final IConfigurationElement pageDesignerElement = pageDesignerElements[j];
if (pageDesignerElement.getName().equals(IJMTConstants.OUTLINE_TARGET_LISTENER))
{
pageDesignerElement.getAttribute(CLASS);
Object object;
try
{
object = pageDesignerElement.createExecutableExtension(CLASS);
if (object instanceof TransferDropTargetListener)
{
listeners.add((TransferDropTargetListener)object);
}
}
catch (CoreException e)
{
PDPlugin.log("Problem loading transfer drop target listener for " + //$NON-NLS-1$
pageDesignerElement, e);
}
}
}
}
return listeners;
}
private OutlineTargetListenerReader()
{
throw new IllegalStateException("Should not be instantiated!"); //$NON-NLS-1$
}
}