1 11 package org.eclipse.jdt.internal.corext.refactoring.reorg; 12 13 import java.util.Arrays ; 14 import java.util.List ; 15 16 import org.eclipse.core.runtime.Assert; 17 import org.eclipse.core.runtime.CoreException; 18 import org.eclipse.core.runtime.NullProgressMonitor; 19 20 import org.eclipse.core.resources.IFolder; 21 import org.eclipse.core.resources.IProject; 22 23 import org.eclipse.jdt.core.IClasspathEntry; 24 import org.eclipse.jdt.core.IJavaElement; 25 import org.eclipse.jdt.core.IJavaProject; 26 import org.eclipse.jdt.core.IPackageFragment; 27 import org.eclipse.jdt.core.IPackageFragmentRoot; 28 import org.eclipse.jdt.core.JavaCore; 29 30 import org.eclipse.jdt.internal.ui.JavaPlugin; 31 import org.eclipse.jdt.internal.ui.util.CoreUtility; 32 import org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathsBlock; 33 34 39 public final class LoggedCreateTargetQueries implements ICreateTargetQueries { 40 41 42 private final class CreateTargetQuery implements ICreateTargetQuery { 43 44 private void createJavaProject(IProject project) throws CoreException { 45 if (!project.exists()) { 46 BuildPathsBlock.createProject(project, null, new NullProgressMonitor()); 47 BuildPathsBlock.addJavaNature(project, new NullProgressMonitor()); 48 } 49 } 50 51 private void createPackageFragmentRoot(IPackageFragmentRoot root) throws CoreException { 52 final IJavaProject project= root.getJavaProject(); 53 if (!project.exists()) 54 createJavaProject(project.getProject()); 55 final IFolder folder= project.getProject().getFolder(root.getElementName()); 56 if (!folder.exists()) 57 CoreUtility.createFolder(folder, true, true, new NullProgressMonitor()); 58 final List list= Arrays.asList(project.getRawClasspath()); 59 list.add(JavaCore.newSourceEntry(folder.getFullPath())); 60 project.setRawClasspath((IClasspathEntry[]) list.toArray(new IClasspathEntry[list.size()]), new NullProgressMonitor()); 61 } 62 63 66 public Object getCreatedTarget(final Object selection) { 67 final Object target= fLog.getCreatedElement(selection); 68 if (target instanceof IPackageFragment) { 69 final IPackageFragment fragment= (IPackageFragment) target; 70 final IJavaElement parent= fragment.getParent(); 71 if (parent instanceof IPackageFragmentRoot) { 72 try { 73 final IPackageFragmentRoot root= (IPackageFragmentRoot) parent; 74 if (!root.exists()) 75 createPackageFragmentRoot(root); 76 if (!fragment.exists()) 77 root.createPackageFragment(fragment.getElementName(), true, new NullProgressMonitor()); 78 } catch (CoreException exception) { 79 JavaPlugin.log(exception); 80 return null; 81 } 82 } 83 } else if (target instanceof IFolder) { 84 try { 85 final IFolder folder= (IFolder) target; 86 final IProject project= folder.getProject(); 87 if (!project.exists()) 88 createJavaProject(project); 89 if (!folder.exists()) 90 CoreUtility.createFolder(folder, true, true, new NullProgressMonitor()); 91 } catch (CoreException exception) { 92 JavaPlugin.log(exception); 93 return null; 94 } 95 } 96 return target; 97 } 98 99 102 public String getNewButtonLabel() { 103 return "unused"; } 105 } 106 107 108 private final CreateTargetExecutionLog fLog; 109 110 116 public LoggedCreateTargetQueries(final CreateTargetExecutionLog log) { 117 Assert.isNotNull(log); 118 fLog= log; 119 } 120 121 124 public ICreateTargetQuery createNewPackageQuery() { 125 return new CreateTargetQuery(); 126 } 127 128 133 public CreateTargetExecutionLog getCreateTargetExecutionLog() { 134 return fLog; 135 } 136 } | Popular Tags |