/**
*
*/
package org.nightlabs.jfire.reporting.ui.parameter;
import org.eclipse.core.runtime.IExecutableExtension;
import org.nightlabs.jfire.reporting.parameter.config.ValueProviderConfig;
import org.nightlabs.jfire.reporting.parameter.id.ValueProviderID;
/**
* Implementations of {@link IValueProviderGUIFactory} are registered as extension to the
* extension-point <code>org.nightlabs.jfire.reporting.ui.valueProviderGUIFactory</code>
* and is responsible for creating instances of {@link IValueProviderGUI} for the
* {@link ValueProviderID} it is registered for. The factory is registered only by class
* in the extension and bound to a ValueProvider by querying its id by {@link #getValueProviderID()}.
*
* @author Alexander Bieber <!-- alex [AT] nightlabs [DOT] de -->
*/
public interface IValueProviderGUIFactory extends IExecutableExtension {
/**
* @return The id of the ValueProvider this factory creates UI for.
*/
public ValueProviderID getValueProviderID();
/**
* Create a new instance of {@link IValueProviderGUI} that will create UI that
* is used to let the user build report parameters.
*
* @param valueProviderConfig The {@link ValueProviderConfig} the ui can use to build messages etc.
* @param isScheduledReport Whether this {@link IValueProviderGUI} is created to configure the parameters of a scheduledReport.
* @return A new instance of {@link IValueProviderGUI}.
*/
IValueProviderGUI<?> createValueProviderGUI(ValueProviderConfig valueProviderConfig, boolean isScheduledReport);
}