/******************************************************************************* * Copyright (c) 2009 xored software, Inc. * * 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: * xored software, Inc. - initial API and Implementation (Alex Panchenko) *******************************************************************************/ package org.eclipse.dltk.ui.wizards; import java.util.Collections; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.DLTKLanguageManager; import org.eclipse.dltk.core.IBuildpathEntry; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.internal.core.ModelManager; import org.eclipse.dltk.internal.core.builder.State; import org.eclipse.dltk.launching.IInterpreterInstall; import org.eclipse.dltk.launching.ScriptRuntime; import org.eclipse.jface.wizard.IWizardPage; public class ProjectWizardUtils { public static void reuseInterpreterLibraries(IProject fCurrProject, IInterpreterInstall projectInterpreter, IProgressMonitor monitor) throws CoreException { State lastState = (State) ModelManager.getModelManager() .getLastBuiltState(fCurrProject, monitor); if (lastState == null) { lastState = new State(fCurrProject); } IProject[] projects = ResourcesPlugin.getWorkspace().getRoot() .getProjects(); for (int i = 0; i < projects.length; i++) { if (projects[i].isAccessible() && DLTKLanguageManager.hasScriptNature(projects[i])) { IScriptProject scriptProject = DLTKCore.create(projects[i]); IInterpreterInstall install = ScriptRuntime .getInterpreterInstall(scriptProject); if (projectInterpreter.equals(install)) { // We found project with same interpreter. State state = (State) ModelManager.getModelManager() .getLastBuiltState(projects[i], monitor); if (state != null) { lastState.getExternalFolders().addAll( state.getExternalFolders()); } } } } lastState.setNoCleanExternalFolders(); ModelManager.getModelManager().setLastBuiltState(fCurrProject, lastState); } /** * Returns List of IBuildpathEntry or empty list. * * @param firstPage * @return */ static List<IBuildpathEntry> getDefaultBuildpathEntry( ILocationGroup firstPage) { IPath InterpreterEnvironmentContainerPath = new Path( ScriptRuntime.INTERPRETER_CONTAINER); IInterpreterInstall inst = firstPage.getInterpreter(); if (inst != null) { IPath newPath = InterpreterEnvironmentContainerPath.append( inst.getInterpreterInstallType().getId()).append( inst.getName()); return Collections.singletonList(DLTKCore .newContainerEntry(newPath)); } final IBuildpathEntry defaultPath = ScriptRuntime .getDefaultInterpreterContainerEntry(); if (defaultPath != null) return Collections.singletonList(defaultPath); return Collections.emptyList(); } /** * @param page * @return * @since 2.0 */ public static boolean isProjectRequredFor(IWizardPage page) { return !(page instanceof ProjectWizardFirstPage); } }