X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/DeleteResourceElementsOperation.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/DeleteResourceElementsOperation.java index e8c5128..2c1f488 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/DeleteResourceElementsOperation.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/DeleteResourceElementsOperation.java @@ -14,6 +14,7 @@ import net.sourceforge.phpdt.core.IJavaElement; import net.sourceforge.phpdt.core.IOpenable; import net.sourceforge.phpdt.core.IPackageFragment; import net.sourceforge.phpdt.core.JavaModelException; +import net.sourceforge.phpdt.internal.core.util.Util; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; @@ -22,119 +23,138 @@ import org.eclipse.core.runtime.CoreException; /** * This operation deletes a collection of resources and all of their children. - * It does not delete resources which do not belong to the Java Model - * (eg GIF files). + * It does not delete resources which do not belong to the Java Model (eg GIF + * files). */ public class DeleteResourceElementsOperation extends MultiOperation { -/** - * When executed, this operation will delete the given elements. The elements - * to delete cannot be null or empty, and must have a corresponding - * resource. - */ -protected DeleteResourceElementsOperation(IJavaElement[] elementsToProcess, boolean force) { - super(elementsToProcess, force); -} -/** - * Deletes the direct children of frag corresponding to its kind - * (K_SOURCE or K_BINARY), and deletes the corresponding folder if it is then - * empty. - */ -private void deletePackageFragment(IPackageFragment frag) - throws JavaModelException { - IResource res = frag.getResource(); - if (res != null && res.getType() == IResource.FOLDER) { - // collect the children to remove - IJavaElement[] childrenOfInterest = frag.getChildren(); - if (childrenOfInterest.length > 0) { - IResource[] resources = new IResource[childrenOfInterest.length]; - // remove the children - for (int i = 0; i < childrenOfInterest.length; i++) { - resources[i] = childrenOfInterest[i].getCorrespondingResource(); + /** + * When executed, this operation will delete the given elements. The + * elements to delete cannot be null or empty, and must have + * a corresponding resource. + */ + protected DeleteResourceElementsOperation(IJavaElement[] elementsToProcess, + boolean force) { + super(elementsToProcess, force); + } + + /** + * Deletes the direct children of frag corresponding to its + * kind (K_SOURCE or K_BINARY), and deletes the corresponding folder if it + * is then empty. + */ + private void deletePackageFragment(IPackageFragment frag) + throws JavaModelException { + IResource res = frag.getResource(); + if (res != null && res.getType() == IResource.FOLDER) { + // collect the children to remove + IJavaElement[] childrenOfInterest = frag.getChildren(); + if (childrenOfInterest.length > 0) { + IResource[] resources = new IResource[childrenOfInterest.length]; + // remove the children + for (int i = 0; i < childrenOfInterest.length; i++) { + resources[i] = childrenOfInterest[i] + .getCorrespondingResource(); + } + deleteResources(resources, force); } - deleteResources(resources, fForce); - } - // Discard non-java resources -// Object[] nonJavaResources = frag.getNonJavaResources(); -// int actualResourceCount = 0; -// for (int i = 0, max = nonJavaResources.length; i < max; i++){ -// if (nonJavaResources[i] instanceof IResource) actualResourceCount++; -// } -// IResource[] actualNonJavaResources = new IResource[actualResourceCount]; -// for (int i = 0, max = nonJavaResources.length, index = 0; i < max; i++){ -// if (nonJavaResources[i] instanceof IResource) actualNonJavaResources[index++] = (IResource)nonJavaResources[i]; -// } -// deleteResources(actualNonJavaResources, fForce); - - // delete remaining files in this package (.class file in the case where Proj=src=bin) - IResource[] remainingFiles; - try { - remainingFiles = ((IFolder) res).members(); - } catch (CoreException ce) { - throw new JavaModelException(ce); - } - boolean isEmpty = true; - for (int i = 0, length = remainingFiles.length; i < length; i++) { - IResource file = remainingFiles[i]; - if (file instanceof IFile) { - this.deleteResource(file, IResource.FORCE | IResource.KEEP_HISTORY); - } else { - isEmpty = false; + // Discard non-java resources + // Object[] nonJavaResources = frag.getNonJavaResources(); + // int actualResourceCount = 0; + // for (int i = 0, max = nonJavaResources.length; i < max; i++){ + // if (nonJavaResources[i] instanceof IResource) + // actualResourceCount++; + // } + // IResource[] actualNonJavaResources = new + // IResource[actualResourceCount]; + // for (int i = 0, max = nonJavaResources.length, index = 0; i < + // max; i++){ + // if (nonJavaResources[i] instanceof IResource) + // actualNonJavaResources[index++] = (IResource)nonJavaResources[i]; + // } + // deleteResources(actualNonJavaResources, fForce); + + // delete remaining files in this package (.class file in the case + // where Proj=src=bin) + IResource[] remainingFiles; + try { + remainingFiles = ((IFolder) res).members(); + } catch (CoreException ce) { + throw new JavaModelException(ce); } - } - if (isEmpty) { - // delete recursively empty folders - IResource fragResource = frag.getResource(); - if (fragResource != null) { - deleteEmptyPackageFragment(frag, false, fragResource.getParent()); + boolean isEmpty = true; + for (int i = 0, length = remainingFiles.length; i < length; i++) { + IResource file = remainingFiles[i]; + if (file instanceof IFile) { + this.deleteResource(file, IResource.FORCE + | IResource.KEEP_HISTORY); + } else { + isEmpty = false; + } + } + if (isEmpty) { + // delete recursively empty folders + IResource fragResource = frag.getResource(); + if (fragResource != null) { + deleteEmptyPackageFragment(frag, false, fragResource + .getParent()); + } } } } -} -/** - * @see MultiOperation - */ -protected String getMainTaskName() { - return Util.bind("operation.deleteResourceProgress"); //$NON-NLS-1$ -} -/** - * @see MultiOperation. This method delegate to deleteResource or - * deletePackageFragment depending on the type of element. - */ -protected void processElement(IJavaElement element) throws JavaModelException { - switch (element.getElementType()) { - case IJavaElement.CLASS_FILE : - case IJavaElement.COMPILATION_UNIT : - deleteResource(element.getResource(), fForce ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY); + + /** + * @see MultiOperation + */ + protected String getMainTaskName() { + return Util.bind("operation.deleteResourceProgress"); //$NON-NLS-1$ + } + + /** + * @see MultiOperation. This method delegate to deleteResource + * or deletePackageFragment depending on the type of + * element. + */ + protected void processElement(IJavaElement element) + throws JavaModelException { + switch (element.getElementType()) { + case IJavaElement.CLASS_FILE: + case IJavaElement.COMPILATION_UNIT: + deleteResource(element.getResource(), force ? IResource.FORCE + | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY); break; - case IJavaElement.PACKAGE_FRAGMENT : + case IJavaElement.PACKAGE_FRAGMENT: deletePackageFragment((IPackageFragment) element); break; - default : - throw new JavaModelException(new JavaModelStatus(JavaModelStatus.INVALID_ELEMENT_TYPES, element)); - } - // ensure the element is closed - if (element instanceof IOpenable) { - ((IOpenable)element).close(); + default: + throw new JavaModelException(new JavaModelStatus( + JavaModelStatus.INVALID_ELEMENT_TYPES, element)); + } + // ensure the element is closed + if (element instanceof IOpenable) { + ((IOpenable) element).close(); + } } -} -/** - * @see MultiOperation - */ -protected void verify(IJavaElement element) throws JavaModelException { - if (element == null || !element.exists()) - error(JavaModelStatus.ELEMENT_DOES_NOT_EXIST, element); - int type = element.getElementType(); - if (type <= IJavaElement.PACKAGE_FRAGMENT_ROOT || type > IJavaElement.COMPILATION_UNIT) - error(JavaModelStatus.INVALID_ELEMENT_TYPES, element); -// else if (type == IJavaElement.PACKAGE_FRAGMENT && element instanceof JarPackageFragment) -// error(JavaModelStatus.INVALID_ELEMENT_TYPES, element); - IResource resource = element.getResource(); - if (resource instanceof IFolder) { - if (resource.isLinked()) { - error(JavaModelStatus.INVALID_RESOURCE, element); + /** + * @see MultiOperation + */ + protected void verify(IJavaElement element) throws JavaModelException { + if (element == null || !element.exists()) + error(JavaModelStatus.ELEMENT_DOES_NOT_EXIST, element); + + int type = element.getElementType(); + if (type <= IJavaElement.PACKAGE_FRAGMENT_ROOT + || type > IJavaElement.COMPILATION_UNIT) + error(JavaModelStatus.INVALID_ELEMENT_TYPES, element); + // else if (type == IJavaElement.PACKAGE_FRAGMENT && element instanceof + // JarPackageFragment) + // error(JavaModelStatus.INVALID_ELEMENT_TYPES, element); + IResource resource = element.getResource(); + if (resource instanceof IFolder) { + if (resource.isLinked()) { + error(JavaModelStatus.INVALID_RESOURCE, element); + } } } } -}