| /******************************************************************************* |
| * Copyright (c) 2000, 2005 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 |
| *******************************************************************************/ |
| package org.eclipse.jdt.ui.tests.dialogs; |
| |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.List; |
| |
| import junit.extensions.TestSetup; |
| import junit.framework.Test; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.core.runtime.Path; |
| |
| import org.eclipse.core.resources.IFolder; |
| |
| import org.eclipse.jdt.core.IClasspathEntry; |
| import org.eclipse.jdt.core.IJavaProject; |
| import org.eclipse.jdt.core.JavaCore; |
| import org.eclipse.jdt.core.JavaModelException; |
| |
| import org.eclipse.jdt.ui.PreferenceConstants; |
| |
| import org.eclipse.jdt.internal.ui.JavaPlugin; |
| import org.eclipse.jdt.internal.ui.util.CoreUtility; |
| |
| import org.eclipse.jdt.testplugin.JavaProjectHelper; |
| import org.eclipse.jdt.testplugin.TestOptions; |
| |
| |
| public class NewProjectTestSetup extends TestSetup { |
| |
| public static final String WORKSPACE_PROJECT= "WorkspaceProject"; |
| public static final String WORKSPACE_PROJECT_SRC= "WorkspaceProjectWithSourceAndInFolder"; |
| |
| public static IJavaProject getProject(String projectName, String binFolderName) throws CoreException { |
| return JavaProjectHelper.createJavaProject(projectName, binFolderName); |
| } |
| |
| public static IClasspathEntry[] getDefaultClasspath() { |
| return PreferenceConstants.getDefaultJRELibrary(); |
| } |
| |
| private IJavaProject fWorkspaceProject; |
| private IJavaProject fWorkspaceProjectWithSrc; |
| private IJavaProject fExternalProject; |
| |
| private boolean fAutobuilding; |
| |
| public NewProjectTestSetup(Test test) { |
| super(test); |
| try { |
| fAutobuilding= JavaProjectHelper.setAutoBuilding(false); |
| } catch (CoreException e) { |
| JavaPlugin.log(e); |
| } |
| } |
| |
| public IJavaProject getProject(IJavaProject currentProject) throws CoreException { |
| String name= currentProject.getElementName(); |
| currentProject.getProject().delete(true, null); |
| if (name.equals(WORKSPACE_PROJECT)) |
| return getWorkspaceProject(); |
| if (name.equals(WORKSPACE_PROJECT_SRC)) |
| return getWorkspaceProjectWithSrc(); |
| return null; |
| } |
| |
| public IJavaProject getWorkspaceProject() { |
| try { |
| fWorkspaceProject= getProject(WORKSPACE_PROJECT, ""); |
| List cpEntries= new ArrayList(); |
| IPath projectPath= fWorkspaceProject.getProject().getFullPath(); |
| cpEntries.add(JavaCore.newSourceEntry(projectPath)); |
| cpEntries.addAll(Arrays.asList(getDefaultClasspath())); |
| IClasspathEntry[] entries= (IClasspathEntry[]) cpEntries.toArray(new IClasspathEntry[cpEntries.size()]); |
| fWorkspaceProject.setRawClasspath(entries, projectPath, new NullProgressMonitor()); |
| } catch (JavaModelException e) { |
| JavaPlugin.log(e); |
| } catch (CoreException e) { |
| JavaPlugin.log(e); |
| } |
| return fWorkspaceProject; |
| } |
| |
| public IJavaProject getWorkspaceProjectWithSrc() { |
| try { |
| fWorkspaceProjectWithSrc= getProject(WORKSPACE_PROJECT_SRC, PreferenceConstants.getPreferenceStore().getString(PreferenceConstants.SRCBIN_BINNAME)); |
| createWithSrcAndBinFolder(fWorkspaceProjectWithSrc); |
| } catch (CoreException e) { |
| JavaPlugin.log(e); |
| } |
| return fWorkspaceProjectWithSrc; |
| } |
| |
| public IJavaProject getExternalProject() throws CoreException { |
| return fExternalProject; |
| } |
| /* (non-Javadoc) |
| * @see junit.extensions.TestSetup#setUp() |
| */ |
| protected void setUp() throws Exception { |
| super.setUp(); |
| JavaCore.setOptions(TestOptions.getDefaultOptions()); |
| TestOptions.initializeCodeGenerationOptions(); |
| JavaPlugin.getDefault().getCodeTemplateStore().load(); |
| } |
| |
| protected void tearDown() throws Exception { |
| if (fWorkspaceProject != null && fWorkspaceProject.exists()) |
| JavaProjectHelper.delete(fWorkspaceProject); |
| if (fWorkspaceProjectWithSrc != null && fWorkspaceProjectWithSrc.exists()) |
| JavaProjectHelper.delete(fWorkspaceProjectWithSrc); |
| if (fExternalProject != null && fExternalProject.exists()) |
| JavaProjectHelper.delete(fExternalProject); |
| JavaProjectHelper.setAutoBuilding(fAutobuilding); |
| } |
| |
| private void createWithSrcAndBinFolder(IJavaProject project) { |
| IPath srcPath= new Path("src"); |
| try { |
| if (srcPath.segmentCount() > 0) { |
| IFolder folder= project.getProject().getFolder(srcPath); |
| CoreUtility.createFolder(folder, true, true, null); |
| } |
| |
| final IPath projectPath= project.getProject().getFullPath(); |
| |
| // configure the classpath entries, including the default jre library. |
| List cpEntries= new ArrayList(); |
| cpEntries.add(JavaCore.newSourceEntry(projectPath.append(srcPath))); |
| cpEntries.addAll(Arrays.asList(PreferenceConstants.getDefaultJRELibrary())); |
| IClasspathEntry[] entries= (IClasspathEntry[]) cpEntries.toArray(new IClasspathEntry[cpEntries.size()]); |
| |
| project.setRawClasspath(entries, null); |
| } catch (CoreException e) { |
| JavaPlugin.log(e); |
| } |
| } |
| |
| } |