package org.objectstyle.wolips.wizards.template;
import java.util.List;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.objectstyle.wolips.templateengine.ProjectTemplate;
public class SelectTemplateWizardPage extends WizardPage implements ISelectionChangedListener, IDoubleClickListener {
private List<ProjectTemplate> _templates;
private ListViewer _templateViewer;
private ProjectTemplate _selectedProjectTemplate;
protected SelectTemplateWizardPage() {
super("Select Template");
setPageComplete(false);
_templates = ProjectTemplate.loadProjectTemplates(ProjectTemplate.PROJECT_TEMPLATES);
}
public List<ProjectTemplate> getProjectTemplates() {
return _templates;
}
public ProjectTemplate getSelectedProjectTemplate() {
return _selectedProjectTemplate;
}
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setFont(parent.getFont());
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
initializeDialogUnits(parent);
if (_templates.size() == 0) {
setTitle("No Templates Found");
Label noTemplatesLabel = new Label(composite, SWT.NONE);
noTemplatesLabel.setText("There are no templates available.");
} else {
setTitle("Select a Template");
_templateViewer = new ListViewer(composite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
_templateViewer.setLabelProvider(new TemplateLabelProvider());
_templateViewer.setContentProvider(new TemplateContentProvider());
_templateViewer.setInput(_templates);
_templateViewer.getList().setLayoutData(new GridData(GridData.FILL_BOTH));
_templateViewer.addSelectionChangedListener(this);
_templateViewer.addDoubleClickListener(this);
}
setControl(composite);
}
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection templateSelection = (IStructuredSelection) event.getSelection();
_selectedProjectTemplate = (ProjectTemplate) templateSelection.getFirstElement();
setPageComplete(_selectedProjectTemplate != null);
}
public void doubleClick(DoubleClickEvent event) {
if (isPageComplete()) {
getWizard().getContainer().showPage(getNextPage());
}
}
}