/******************************************************************************* * Copyright (c) 2000, 2007 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 * *******************************************************************************/ package org.eclipse.dltk.tcl.ui.tests.dialogs; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.IBuildpathEntry; import org.eclipse.dltk.core.IProjectFragment; import org.eclipse.dltk.core.IScriptFolder; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.dltk.core.ISourceModule; import org.eclipse.dltk.core.ModelException; import org.eclipse.dltk.core.environment.IEnvironment; import org.eclipse.dltk.internal.corext.buildpath.AddSelectedLibraryOperation; import org.eclipse.dltk.internal.corext.buildpath.BuildpathModifier; import org.eclipse.dltk.internal.corext.buildpath.ExcludeOperation; import org.eclipse.dltk.internal.corext.buildpath.IBuildpathInformationProvider; import org.eclipse.dltk.internal.corext.buildpath.IPackageExplorerActionListener; import org.eclipse.dltk.internal.corext.buildpath.PackageExplorerActionEvent; import org.eclipse.dltk.internal.corext.buildpath.RemoveFromBuildpathOperation; import org.eclipse.dltk.internal.ui.util.CoreUtility; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierAction; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.DialogPackageExplorerActionGroup; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.IAddArchivesQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.IAddLibrariesQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.ICreateFolderQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.IInclusionExclusionQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.ILinkToQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.BuildpathModifierQueries.IRemoveLinkedFolderQuery; import org.eclipse.dltk.internal.ui.wizards.buildpath.newsourcepage.DialogPackageExplorerActionGroup.DialogExplorerActionContext; import org.eclipse.dltk.ui.tests.ScriptProjectHelper; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; /** */ public class NewProjectWizardOperationTest extends TestCase implements IBuildpathInformationProvider { public static final Class THIS= NewProjectWizardOperationTest.class; protected IScriptProject fProject; protected DialogPackageExplorerActionGroup fActionGroup; protected List fSelection; protected Object[] fItems; protected IPackageExplorerActionListener fListener; private final int PROJ= 0x00; private final int SRC= 0x01; private final int NF= 0x02; private final int PACK= 0x03; private final int CU= 0x04; private final int EXCLUDED_FILE= 0x05; private final int FILE= 0x06; private final int EXCLUDED_PACK= 0x07; private final int DEFAULT_PACK= 0x08; private final int ZIP= 0xA; // not on buildpath /* ### Project Structure: * - DummyProject * |- src * |- default package * |- pack1 * |- A.java * |- B.java (excluded) * |- NormalFile * |- pack2 (excluded) * |- archive.zip (on buildpath) * |- archive.zip (excluded) * |- NormalFolder */ public NewProjectWizardOperationTest() { super(THIS.getName()); } protected void setUp() throws Exception { fProject= createProject(); fSelection= new ArrayList(); fActionGroup= new DialogPackageExplorerActionGroup(this, null); assertFalse(fProject.isOnBuildpath(fProject.getUnderlyingResource())); } protected void tearDown() throws Exception { fActionGroup.dispose(); fSelection.clear(); fProject.getProject().delete(true, true, null); } public void testProjectWithOthers() throws ModelException { addToSelection(new int[] {PROJ}); DialogExplorerActionContext context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP, CREATE_LINK}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, SRC}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, NF}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, SRC, NF}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, SRC, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, NF, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, SRC, PACK, NF, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, EXCLUDED_FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, EXCLUDED_FILE, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, EXCLUDED_FILE, FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, FILE, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PROJ, PACK, NF, EXCLUDED_PACK, CU, FILE, EXCLUDED_FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testSrcWithOthers() throws ModelException { addToSelection(new int[] {SRC}); DialogExplorerActionContext context= createContext(); addListener(new int[] {REMOVE_FROM_BP, EDIT_FILTERS}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, NF}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {SRC, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testNormalFolderWithOthers() throws ModelException { addToSelection(new int[] {NF}); DialogExplorerActionContext context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, CU}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, CU, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_PACK, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_PACK, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_FILE, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {NF, PACK, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testPackageWithOthers() throws ModelException { addToSelection(new int[] {PACK}); DialogExplorerActionContext context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP, EXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, CU}); context= createContext(); addListener(new int[] {EXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, CU, FILE, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, CU, FILE, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, CU, FILE, EXCLUDED_FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {PACK, EXCLUDED_PACK, CU, FILE, EXCLUDED_FILE, DEFAULT_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testCUWithOthers() throws ModelException { addToSelection(new int[] {CU}); DialogExplorerActionContext context= createContext(); addListener(new int[] {EXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, PACK}); context= createContext(); addListener(new int[] {EXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, EXCLUDED_FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, EXCLUDED_PACK, PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {CU, PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testExcludedFileWithOthers() throws ModelException { addToSelection(new int[] {EXCLUDED_FILE}); DialogExplorerActionContext context= createContext(); addListener(new int[] {UNEXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {UNEXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, FILE}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {UNEXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, EXCLUDED_PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_FILE, EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testFileWithOthers() throws ModelException { addToSelection(new int[] {FILE}); DialogExplorerActionContext context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {FILE, EXCLUDED_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {FILE, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {FILE, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testExcludedPackWithOthers() throws ModelException { addToSelection(new int[] {EXCLUDED_PACK}); DialogExplorerActionContext context= createContext(); addListener(new int[] {ADD_SEL_SF_TO_BP, UNEXCLUDE}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_PACK, DEFAULT_PACK}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {EXCLUDED_PACK, DEFAULT_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testDefaultPackWithOthers() throws ModelException { addToSelection(new int[] {DEFAULT_PACK}); DialogExplorerActionContext context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); addToSelection(new int[] {DEFAULT_PACK, ZIP}); context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); } public void testDefaultArchiveWithOthers() throws ModelException { } public void testDefaultZipWithOthers() throws ModelException, InvocationTargetException { addToSelection(new int[] {ZIP}); DialogExplorerActionContext context= createContext(); addListener(new int[] {}); fActionGroup.setContext(context); reset(); // if the zip file is added to the buildpath, then both, the zip and the zip file // should have the option to be removed and the reset all operation additionally becomes // available as we changed the project. final IProjectFragment[] addedZipArchive= {null}; AddSelectedLibraryOperation operation= new AddSelectedLibraryOperation(null, new IBuildpathInformationProvider() { public void handleResult(List resultElements, CoreException exception, int operationType) { addedZipArchive[0]= (IProjectFragment)resultElements.get(0); } public IStructuredSelection getSelection() { List list= new ArrayList(); list.add(fItems[ZIP]); return new StructuredSelection(list); } public IScriptProject getScriptProject() { return fProject; } public IInclusionExclusionQuery getInclusionExclusionQuery() throws ModelException { return null; } public ILinkToQuery getLinkFolderQuery() throws ModelException { return null; } public IAddArchivesQuery getExternalArchivesQuery(IEnvironment environment) throws ModelException { return null; } public IAddLibrariesQuery getLibrariesQuery() throws ModelException { return null; } public void deleteCreatedResources() { } public IRemoveLinkedFolderQuery getRemoveLinkedFolderQuery() throws ModelException { return null; } public ICreateFolderQuery getCreateFolderQuery() throws ModelException { return null; } }); operation.run(null); fSelection.add(addedZipArchive[0]); context= createContext(); addListener(new int[] {REMOVE_FROM_BP, RESET_ALL}); fActionGroup.setContext(context); reset(); } private IScriptProject createProject() throws CoreException, InvocationTargetException { fProject= ScriptProjectHelper.createScriptProject("Dummy project"); IPath srcPath= new Path("src"); IPath normalFolderPath= new Path("NormalFolder"); IPath packagePath= srcPath.append("pack1"); IPath filePath= packagePath.append("NormalFile"); // src folder IFolder folder= fProject.getProject().getFolder(srcPath); CoreUtility.createFolder(folder, true, true, null); // one normal folder IFolder folder2= fProject.getProject().getFolder(normalFolderPath); CoreUtility.createFolder(folder, true, true, null); final IPath projectPath= fProject.getProject().getFullPath(); // configure the buildpath entries, including the default InterpreterEnvironment library. List cpEntries= new ArrayList(); cpEntries.add(DLTKCore.newSourceEntry(projectPath.append(srcPath))); //cpEntries.addAll(Arrays.asList(PreferenceConstants.getDefaultInterpreterEnvironmentLibrary())); IBuildpathEntry[] entries= (IBuildpathEntry[]) cpEntries.toArray(new IBuildpathEntry[cpEntries.size()]); fProject.setRawBuildpath(entries, null); // one package in src folder IProjectFragment root= fProject.findProjectFragment(fProject.getPath().append(srcPath)); IScriptFolder pack1= root.createScriptFolder("pack1", true, null); final IScriptFolder pack2= root.createScriptFolder("pack1.pack2", true, null); IScriptFolder defaultPack= root.getScriptFolder(""); IPath libraryPath= root.getPath().append("archive.zip"); final IProjectFragment zipRoot= ScriptProjectHelper.addLibrary(fProject, libraryPath); assertFalse(BuildpathModifier.getBuildpathEntryFor(zipRoot.getPath(), fProject, IBuildpathEntry.BPE_LIBRARY) == null); // two compilation units A and B in 'package' ISourceModule cuA= createISourceModule("A", pack1); final IResource excludedElements[]= {null, null}; final ISourceModule cuB= createISourceModule("B", pack1); ExcludeOperation op= new ExcludeOperation(null, new IBuildpathInformationProvider() { public void handleResult(List resultElements, CoreException exception, int operationType) { excludedElements[0]= (IFile)resultElements.get(0); excludedElements[1]= (IFolder)resultElements.get(1); } public IStructuredSelection getSelection() { List list= new ArrayList(); list.add(cuB); // exclude compilation unit B list.add(pack2); // exclude pack2 return new StructuredSelection(list); } public IScriptProject getScriptProject() { return fProject; } public IInclusionExclusionQuery getInclusionExclusionQuery() throws ModelException { return null; } public ILinkToQuery getLinkFolderQuery() throws ModelException { return null; } public IAddArchivesQuery getExternalArchivesQuery(IEnvironment environment) throws ModelException { return null; } public IAddLibrariesQuery getLibrariesQuery() throws ModelException { return null; } public void deleteCreatedResources() { } public IRemoveLinkedFolderQuery getRemoveLinkedFolderQuery() throws ModelException { return null; } public ICreateFolderQuery getCreateFolderQuery() throws ModelException { return null; } }); op.run(null); IFile file= fProject.getProject().getFile(filePath); file.create(null, false, null); final IFile[] removedZipFile= {null}; RemoveFromBuildpathOperation operation= new RemoveFromBuildpathOperation(null, new IBuildpathInformationProvider() { public void handleResult(List resultElements, CoreException exception, int operationType) { removedZipFile[0]= (IFile)resultElements.get(0); } public IStructuredSelection getSelection() { List list= new ArrayList(); list.add(zipRoot); return new StructuredSelection(list); } public IScriptProject getScriptProject() { return fProject; } public IInclusionExclusionQuery getInclusionExclusionQuery() throws ModelException { return null; } public ILinkToQuery getLinkFolderQuery() throws ModelException { return null; } public IAddArchivesQuery getExternalArchivesQuery(IEnvironment environment) throws ModelException { return null; } public IAddLibrariesQuery getLibrariesQuery() throws ModelException { return null; } public void deleteCreatedResources() { } public IRemoveLinkedFolderQuery getRemoveLinkedFolderQuery() throws ModelException { return null; } public ICreateFolderQuery getCreateFolderQuery() throws ModelException { return null; } }); operation.run(null); removedZipFile[0].create(null, false, null); // create the zip file fItems= new Object[11]; fItems[PROJ]= fProject; fItems[SRC]= root; fItems[NF]= folder2; fItems[PACK]= pack1; fItems[CU]= cuA; fItems[EXCLUDED_FILE]= excludedElements[0]; fItems[FILE]= file; fItems[EXCLUDED_PACK]= excludedElements[1]; fItems[DEFAULT_PACK]= defaultPack; fItems[ZIP]= zipRoot; return fProject; } protected int getID(BuildpathModifierAction action) { return Integer.parseInt(action.getId()); } protected void addToSelection(int[] indices) { for (int i= 0; i < indices.length; i++) { fSelection.add(fItems[indices[i]]); } } protected void addToSelection(Object obj) { fSelection.add(obj); } protected DialogExplorerActionContext createContext() { return new DialogExplorerActionContext(fSelection, fProject); } protected void addListener(final int[] expectedValues) { fListener= new IPackageExplorerActionListener() { public void handlePackageExplorerActionEvent(PackageExplorerActionEvent event) { BuildpathModifierAction[] actions= event.getEnabledActions(); if (actions.length != expectedValues.length) { assertTrue(false); } for(int i= 0; i < actions.length; i++) { assertTrue(getID(actions[i]) == expectedValues[i]); } } }; fActionGroup.addListener(fListener); } protected void reset() { fSelection.clear(); fActionGroup.removeListener(fListener); } protected ISourceModule createISourceModule(String className, IScriptFolder fragment) throws ModelException { String packString= fragment.getElementName().equals("") ? fragment.getElementName() : "package " + fragment.getElementName() +";\n"; StringBuffer content= getFileContent(className, packString); return fragment.createSourceModule(className+".java", content.toString(), false, null); } protected StringBuffer getFileContent(String className, String packageHeader) { StringBuffer buf= new StringBuffer(); buf.append(packageHeader); buf.append("\n"); buf.append("public class "+className+ " {\n"); buf.append(" public void foo() {\n"); buf.append(" }\n"); buf.append("}\n"); return buf; } /* (non-Javadoc) * @see org.eclipse.dltk.internal.corext.buildpath.IBuildpathInformationProvider#handleResult(java.util.List, org.eclipse.core.runtime.CoreException, int) */ public void handleResult(List resultElements, CoreException exception, int operationType) { } /* (non-Javadoc) * @see org.eclipse.dltk.internal.corext.buildpath.IBuildpathInformationProvider#getSelection() */ public IStructuredSelection getSelection() { return new StructuredSelection(fSelection); } public IScriptProject getScriptProject() { return fProject; } public IInclusionExclusionQuery getInclusionExclusionQuery() throws ModelException { return null; } public ILinkToQuery getLinkFolderQuery() throws ModelException { return null; } public IAddArchivesQuery getExternalArchivesQuery(IEnvironment environment) throws ModelException { return null; } public IAddLibrariesQuery getLibrariesQuery() throws ModelException { return null; } /* (non-Javadoc) * @see org.eclipse.dltk.internal.corext.buildpath.IBuildpathInformationProvider#deleteCreatedResources() */ public void deleteCreatedResources() { } /* * @see org.eclipse.dltk.internal.corext.buildpath.IBuildpathInformationProvider#getRemoveLinkedFolderQuery() */ public IRemoveLinkedFolderQuery getRemoveLinkedFolderQuery() throws ModelException { return null; } public ICreateFolderQuery getCreateFolderQuery() throws ModelException { return null; } }