/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.wizards; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.IBuildpathEntry; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.ui.util.IStatusChangeListener; import org.eclipse.dltk.ui.wizards.BuildpathsBlock; import org.eclipse.php.internal.ui.IPHPHelpContextIds; import org.eclipse.php.internal.ui.Logger; import org.eclipse.php.internal.ui.preferences.includepath.PHPBuildPathsBlock; import org.eclipse.php.internal.ui.util.BusyIndicatorRunnableContext; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.PlatformUI; /** * New PHP Project Wizard - 3rd page - Build Paths configuration Consists of the * 2nd page (IncludePath) most functionality * * @author nir.c * */ public class PHPProjectWizardThirdPage extends PHPProjectWizardSecondPage { public PHPProjectWizardThirdPage(PHPProjectWizardFirstPage mainPage) { super(mainPage); } @Override protected BuildpathsBlock createBuildpathBlock(IStatusChangeListener listener) { PHPBuildPathsBlock buildPathsBlock = new PHPBuildPathsBlock(new BusyIndicatorRunnableContext(), listener, 0, useNewSourcePage(), null); return buildPathsBlock; } @Override public void setVisible(boolean visible) { super.setVisible(visible); if (visible) { try { updateProject(new NullProgressMonitor()); } catch (Exception e) { Logger.logException(e); } } } @Override protected void updateProject(IProgressMonitor monitor) throws CoreException, InterruptedException { IProject projectHandle = fFirstPage.getProjectHandle(); IScriptProject scriptProject = DLTKCore.create(projectHandle); if (scriptProject != null) { IBuildpathEntry[] rawBuildpath = new IBuildpathEntry[0]; if (scriptProject.isOpen()) { rawBuildpath = scriptProject.getRawBuildpath(); } init(scriptProject, rawBuildpath, true); } else { throw new IllegalStateException(); } } @Override public void performFinish(IProgressMonitor monitor) throws CoreException, InterruptedException { if (getContainer().getCurrentPage() == this) { BuildpathsBlock fBuildPathsBlock = getBuildPathsBlock(); if (fBuildPathsBlock.hasChangesInDialog()) { fBuildPathsBlock.configureScriptProject(monitor); } } } @Override protected void setHelpContext(Control control) { PlatformUI.getWorkbench().getHelpSystem().setHelp(control, IPHPHelpContextIds.CONFIGURING_BUILD_PATHS); } }