package com.dubture.composer.ui.wizard.project; import java.util.Observable; import org.apache.commons.lang.WordUtils; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.php.internal.ui.wizards.NameGroup; 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.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.ui.PlatformUI; import com.dubture.composer.core.ComposerPluginConstants; import com.dubture.composer.ui.ComposerUIPlugin; import com.dubture.composer.ui.wizard.AbstractWizardFirstPage; import com.dubture.composer.ui.wizard.AbstractWizardSecondPage; import com.dubture.getcomposer.core.objects.Namespace; @SuppressWarnings("restriction") public class ComposerProjectWizardSecondPage extends AbstractWizardSecondPage { protected AutoloadGroup autoloadGroup; private AutoloadValidator validator; public ComposerProjectWizardSecondPage(AbstractWizardFirstPage mainPage) { super(mainPage, "Dependencies"); } @Override public void createControl(Composite parent) { int numColumns = 1; Composite composite = new Composite(parent, SWT.NONE); composite.setFont(parent.getFont()); composite.setLayout(new GridLayout(numColumns, false)); final Group group = new Group(composite, SWT.None); group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); group.setLayout(new GridLayout(numColumns, false)); group.setText("PSR-4"); autoloadGroup = new AutoloadGroup(group, getShell()); autoloadGroup.addObserver(this); validator = new AutoloadValidator(this); autoloadGroup.addObserver(validator); Dialog.applyDialogFont(composite); setControl(composite); ((ComposerProjectWizardFirstPage)firstPage).settingsGroup.addObserver(this); ((ComposerProjectWizardFirstPage)firstPage).nameGroup.addObserver(this); setHelpContext(composite); } @Override public void update(Observable observable, Object object) { if (observable instanceof BasicSettingsGroup || observable instanceof NameGroup) { ComposerProjectWizardFirstPage fPage = (ComposerProjectWizardFirstPage) firstPage; autoloadGroup.setNamespace(WordUtils.capitalize(fPage.settingsGroup.getVendor()) + "\\" + WordUtils.capitalize(fPage.nameGroup.getName()) + "\\"); return; } updateNamespace(autoloadGroup.getNamespace()); } protected void updateNamespace(String namespace) { Namespace ns = new Namespace(); ns.setNamespace(namespace); ns.add(ComposerPluginConstants.DEFAULT_SRC_FOLDER); firstPage.getPackage().getAutoload().getPsr4().clear(); firstPage.getPackage().getAutoload().getPsr4().add(ns); } @Override protected String getPageTitle() { return "Autoloading settings"; } @Override protected String getPageDescription() { return "Setup autoloading for your project."; } @Override protected void finishPage(IProgressMonitor monitor) throws Exception { monitor.setTaskName("Creating project structure"); addComposerJson(monitor); monitor.worked(4); monitor.setTaskName("Installing composer.phar"); installComposer(monitor); monitor.worked(4); monitor.setTaskName("Dumping autoloader"); dumpAutoload(monitor); monitor.worked(2); } @Override protected void beforeFinish(IProgressMonitor monitor) throws Exception { // TODO Auto-generated method stub } @Override protected void setHelpContext(Control control) { PlatformUI.getWorkbench().getHelpSystem().setHelp(control, ComposerUIPlugin.PLUGIN_ID + "." + "help_project_wizard_autoload"); } }