/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.ui.wizards.project; import java.util.List; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.python.pydev.ui.wizards.files.PythonExistingSourceListGroup; import org.python.pydev.ui.wizards.gettingstarted.AbstractNewProjectPage; /** * */ public class NewProjectExistingSourcesWizardPage extends AbstractNewProjectPage implements IWizardNewProjectExistingSourcesPage { private PythonExistingSourceListGroup group; /** * Creates a wizard page that can be used in a Java project creation wizard. * It contains UI to configure a the classpath and the output folder. * * <p> * After constructing, a call to {@link #init(IJavaProject, IPath, IClasspathEntry[], boolean)} is required. * </p> */ public NewProjectExistingSourcesWizardPage(String pageName) { super(pageName); setTitle("Add Existing Sources"); setDescription("Add links to existing source folders from external locations."); setPageComplete(false); } /* (non-Javadoc) * Method declared on IDialogPage. */ @Override public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NULL); composite.setLayout(new GridLayout()); composite.setFont(parent.getFont()); group = new PythonExistingSourceListGroup(composite, new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { if (validatePage()) { setPageComplete(true); setErrorMessage(group.getErrorMessage()); setMessage(group.getWarningMessage(), WARNING); } else { setPageComplete(false); } } @Override public void widgetDefaultSelected(SelectionEvent e) { } }); setPageComplete(validatePage()); setControl(composite); } @Override public boolean isPageComplete() { //If external sources are not selected, just validate the page. If they aren't, this page gets ignored anyways. if (((PythonProjectWizard) getWizard()).projectPage.getSourceFolderConfigurationStyle() != IWizardNewProjectNameAndLocationPage.PYDEV_NEW_PROJECT_EXISTING_SOURCES) { return true; } return super.isPageComplete(); } /** * Returns whether this page's controls currently all contain valid * values. * * @return <code>true</code> if all controls are valid, and * <code>false</code> if at least one is invalid */ protected boolean validatePage() { if (group.getLinkTargets().size() == 0) { setErrorMessage("No existing sources selected."); return false; } setErrorMessage(null); setMessage(null); return true; } @Override public List<IPath> getExistingSourceFolders() { return group.getLinkTargets(); } }