/**
*
*/
package org.nightlabs.jfire.reporting.ui.layout.scheduled.action;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.jface.action.IAction;
import org.nightlabs.base.ui.action.registry.AbstractActionRegistry;
import org.nightlabs.base.ui.action.registry.ActionVisibilityDecider;
import org.nightlabs.eclipse.extension.EPProcessorException;
import org.nightlabs.jfire.reporting.ui.ReportingPlugin;
/**
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*
*/
public class ScheduledReportActionRegistry extends AbstractActionRegistry {
public static final String EXTENSION_POINT_ID = ReportingPlugin.class.getPackage().getName() + ".scheduledReportAction";
private static final String ACTION_ELEMENT_NAME = "scheduledReportAction";
public ScheduledReportActionRegistry(ActionVisibilityDecider actionVisibilityDecider) {
super(actionVisibilityDecider);
}
/**
*
*/
public ScheduledReportActionRegistry() {
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.action.registry.AbstractActionRegistry#createActionOrContributionItem(org.eclipse.core.runtime.IExtension, org.eclipse.core.runtime.IConfigurationElement)
*/
@Override
protected Object createActionOrContributionItem(IExtension extension, IConfigurationElement element) throws EPProcessorException {
try {
return (IScheduledReportAction) element.createExecutableExtension("class");
} catch (Exception e) {
throw new EPProcessorException(e);
}
}
protected void initAction(IAction action, IExtension extension, IConfigurationElement element) throws EPProcessorException {
super.initAction(action, extension, element);
action.setEnabled(true);
}
/* (non-Javadoc)
* @see org.nightlabs.base.ui.extensionpoint.AbstractEPProcessor#getExtensionPointID()
*/
@Override
public String getExtensionPointID() {
return EXTENSION_POINT_ID;
}
@Override
protected String getActionElementName() {
return ACTION_ELEMENT_NAME;
}
private static ScheduledReportActionRegistry sharedInstance;
private static boolean initializingSharedInstance = false;
public static synchronized ScheduledReportActionRegistry sharedInstance()
throws EPProcessorException
{
if (initializingSharedInstance)
throw new IllegalStateException("Circular call to the method sharedInstance() during initialization!"); //$NON-NLS-1$
if (sharedInstance == null) {
initializingSharedInstance = true;
try {
sharedInstance = new ScheduledReportActionRegistry();
sharedInstance.process();
} finally {
initializingSharedInstance = false;
}
}
return sharedInstance;
}
}