/** * */ package com.aptana.editor.php.internal.ui.wizard; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org2.eclipse.php.internal.core.PHPVersion; import com.aptana.core.logging.IdeLog; import com.aptana.core.projects.templates.IProjectTemplate; import com.aptana.editor.php.PHPEditorPlugin; import com.aptana.editor.php.internal.ui.preferences.Messages; import com.aptana.editor.php.internal.ui.preferences.PHPVersionConfigurationBlock; import com.aptana.projects.wizards.CommonWizardNewProjectCreationPage; /** * New PHP project main creation page. * * @author Shalom Gibly <sgibly@aptana.com> */ public class PHPWizardNewProjectCreationPage extends CommonWizardNewProjectCreationPage { private Combo fPHPVersions; private String selectedAlias; public PHPWizardNewProjectCreationPage(String pageName, IProjectTemplate projectTemplate) { super(pageName, projectTemplate); } /* * (non-Javadoc) * @see org.eclipse.ui.dialogs.WizardNewProjectCreationPage#createControl(org.eclipse.swt.widgets.Composite) */ @Override public void createControl(Composite parent) { super.createControl(parent); Composite control = (Composite) getControl(); Group group = new Group(control, SWT.NONE); group.setLayout(new GridLayout(2, false)); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group.setText(Messages.PHPDevelopmentPage_compatibility); Label label = new Label(group, SWT.NONE); label.setText(Messages.PHPDevelopmentPage_phpVersion); fPHPVersions = new Combo(group, SWT.BORDER | SWT.READ_ONLY | SWT.DROP_DOWN); fPHPVersions.setItems(PHPVersionConfigurationBlock.PHP_VERSION_NAMES .toArray(new String[PHPVersionConfigurationBlock.PHP_VERSION_NAMES.size()])); selectedAlias = PHPVersion.getLatest().getAlias(); setSelectedVersion(selectedAlias); // Update the 'selectedAlias' on combo selection changes. // We do that to avoid a 'widget dispose' errors when accessing this field after the page was disposed. fPHPVersions.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { selectedAlias = PHPVersionConfigurationBlock.PHP_ALIASES.get(fPHPVersions.getSelectionIndex()); } public void widgetDefaultSelected(SelectionEvent e) { } }); Dialog.applyDialogFont(control); setControl(control); } /* * (non-Javadoc) * @see com.aptana.projects.internal.wizards.IWizardProjectCreationPage#isCloneFromGit() */ public boolean isCloneFromGit() { return false; } /* * (non-Javadoc) * @see com.aptana.projects.internal.wizards.IWizardProjectCreationPage#getCloneURI() */ public String getCloneURI() { return null; } /** * Returns the selected PHP version. * * @return The selected PHP version. */ public String getSelectedVersion() { return selectedAlias; } /** * Select a PHP version. * * @param phpAlias * The version alias. */ private void setSelectedVersion(String phpAlias) { int index = PHPVersionConfigurationBlock.PHP_ALIASES.indexOf(phpAlias); if (index < 0) { IdeLog.logWarning( PHPEditorPlugin.getDefault(), "Unresolved PHP version: " + phpAlias, new Exception("Unresolved PHP version"), PHPEditorPlugin.DEBUG_SCOPE); //$NON-NLS-1$ //$NON-NLS-2$ index = 0; } fPHPVersions.select(index); } @Override public String getStepName() { return com.aptana.editor.php.internal.ui.wizard.Messages.NewPHPProjectWizard_projectWizardStepLbl; } }