1 /*******************************************************************************
 
   2  * Copyright (c) 2000, 2004 IBM Corporation and others.
 
   3  * All rights reserved. This program and the accompanying materials 
 
   4  * are made available under the terms of the Common Public License v1.0
 
   5  * which accompanies this distribution, and is available at
 
   6  * http://www.eclipse.org/legal/cpl-v10.html
 
   9  *     IBM Corporation - initial API and implementation
 
  10  *******************************************************************************/
 
  11 package net.sourceforge.phpdt.internal.corext.refactoring.util;
 
  13 import java.util.ArrayList;
 
  14 import java.util.List;
 
  16 import net.sourceforge.phpdt.core.ICompilationUnit;
 
  17 import net.sourceforge.phpdt.core.IJavaElement;
 
  18 import net.sourceforge.phpdt.core.IMember;
 
  19 import net.sourceforge.phpdt.core.IOpenable;
 
  20 import net.sourceforge.phpdt.internal.corext.Assert;
 
  22 import org.eclipse.core.resources.IFile;
 
  23 import org.eclipse.core.resources.IResource;
 
  25 public class ResourceUtil {
 
  27         private ResourceUtil() {
 
  30         public static IFile[] getFiles(ICompilationUnit[] cus) {
 
  31                 List files = new ArrayList(cus.length);
 
  32                 for (int i = 0; i < cus.length; i++) {
 
  33                         IResource resource = ResourceUtil.getResource(cus[i]);
 
  34                         if (resource != null && resource.getType() == IResource.FILE)
 
  37                 return (IFile[]) files.toArray(new IFile[files.size()]);
 
  40         public static IFile getFile(ICompilationUnit cu) {
 
  41                 IResource resource = ResourceUtil.getResource(cu);
 
  42                 if (resource != null && resource.getType() == IResource.FILE)
 
  43                         return (IFile) resource;
 
  48         // ----- other ------------------------------
 
  51          * Finds an <code>IResource</code> for a given
 
  52          * <code>ICompilationUnit</code>. If the parameter is a working copy then
 
  53          * the <code>IResource</code> for the original element is returned.
 
  55         public static IResource getResource(ICompilationUnit cu) {
 
  56                 return cu.getResource();
 
  60          * Returns the <code>IResource</code> that the given <code>IMember</code>
 
  65         public static IResource getResource(IMember member) {
 
  66                 Assert.isTrue(!member.isBinary());
 
  67                 return getResource(member.getCompilationUnit());
 
  70         public static IResource getResource(Object o) {
 
  71                 if (o instanceof IResource)
 
  73                 if (o instanceof IJavaElement)
 
  74                         return getResource((IJavaElement) o);
 
  78         private static IResource getResource(IJavaElement element) {
 
  79                 if (element.getElementType() == IJavaElement.COMPILATION_UNIT)
 
  80                         return getResource((ICompilationUnit) element);
 
  81                 else if (element instanceof IOpenable)
 
  82                         return element.getResource();