/**
*
*/
package de.hannesniederhausen.storynotes.ui.services;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IAction;
import org.eclipse.swt.widgets.Composite;
import de.hannesniederhausen.storynotes.model.Category;
import de.hannesniederhausen.storynotes.model.Note;
import de.hannesniederhausen.storynotes.ui.views.InputMask;
/**
* The service used to specify a category type.
*
*
* @author Hannes Niederhausen
*
*/
public interface ICategoryProviderService {
/**
* Creates and returns the input mask class should be instanciated using the {@link ContextInjectionFactory}
*
*/
public Class<? extends InputMask> getCategoryInputMaskClass();
/**
* Creates and returns the input mask class should be instanciated using the {@link ContextInjectionFactory}
*
* @param noteClass
* @return
*/
public Class<? extends InputMask> getNoteInputMaskClass(Class<? extends Note> noteClass);
/**
* An array of actions, which can be executed at the categories
* navigation node.
*
* @param context the {@link IEclipseContext} of the rcp application
* @param parent the parent object
*
* @return an array of actions. Must not be <code>null</code>
*/
public IAction[] getNoteActions(IEclipseContext context, EObject parent);
/**
* An array of actions, which will be added to the projects action list.
*
* @param context the {@link IEclipseContext} of the rcp application
* @param parent the parent object
*
* @return an array of actions. Must not be <code>null</code>
*/
public IAction getCategoryActions(IEclipseContext context, EObject parent);
/**
* Returns the class object of the category which will be crated by this service. This is used to lookup the service
* in the UI, e.g. when asking for input masks
*
* @return the class object of the category
*/
public Class<? extends Category> getCategoryClass();
}