/*
 * Created on 2004-08-19
 *
 * Part of the Symbian development plug-in for Eclipse
 * Copyright (C) Mikołaj Zalewski, 2004
 */
package pl.zalewski.mikolaj.symbdev.templates;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;

import pl.zalewski.mikolaj.symbdev.wizards.IWizardContentProvider;

/**
 * @author mikolaj
 *
 * This interface declares a project template used by the New Project Wizard
 */
public interface IProjectTemplate
{
    /**
     * @return A short name of the template
     */
    public String getName();
    
    /**
     * @return A longer description of the template
     */
    public String getDescription();
    
    /**
     * Apply this template to this project. This project has been just created and
     * has the C, C++ and Symbian natures
     * @throws CoreException
     */
    public void applyToProject(IProject prj, IProgressMonitor monitor) throws CoreException;

    /** 
     * @return true if this template add pages to the New Project wizard
     */
    public boolean hasWizardPages();
    
    /**
     * The content provider will create a composite with the
     * options for this template. If it provides a control,
     * the function should call wiz.setPageCompleted(true/false)
     * @return The provider of the extra wizard page
     */
    public IWizardContentProvider getWizardContentProvider();
}
