1 11 package org.eclipse.jdt.core.refactoring.descriptors; 12 13 import org.eclipse.core.runtime.Assert; 14 15 import org.eclipse.core.resources.IFile; 16 import org.eclipse.core.resources.IFolder; 17 import org.eclipse.core.resources.IResource; 18 19 import org.eclipse.ltk.core.refactoring.RefactoringContribution; 20 import org.eclipse.ltk.core.refactoring.RefactoringCore; 21 import org.eclipse.ltk.core.refactoring.RefactoringStatus; 22 23 import org.eclipse.jdt.core.ICompilationUnit; 24 import org.eclipse.jdt.core.IJavaElement; 25 import org.eclipse.jdt.core.IMember; 26 import org.eclipse.jdt.core.IPackageFragment; 27 import org.eclipse.jdt.core.IPackageFragmentRoot; 28 import org.eclipse.jdt.core.refactoring.IJavaRefactorings; 29 30 import org.eclipse.jdt.internal.core.refactoring.descriptors.DescriptorMessages; 31 32 47 public final class MoveDescriptor extends JavaRefactoringDescriptor { 48 49 50 private static final String ATTRIBUTE_DESTINATION= "destination"; 52 53 private static final String ATTRIBUTE_FILES= "files"; 55 56 private static final String ATTRIBUTE_FOLDERS= "folders"; 58 59 private static final String ATTRIBUTE_FRAGMENTS= "fragments"; 61 62 private static final String ATTRIBUTE_MEMBERS= "members"; 64 65 private static final String ATTRIBUTE_PATTERNS= "patterns"; 67 68 private static final String ATTRIBUTE_POLICY= "policy"; 70 71 private static final String ATTRIBUTE_QUALIFIED= "qualified"; 73 74 private static final String ATTRIBUTE_ROOTS= "roots"; 76 77 private static final String ATTRIBUTE_TARGET= "target"; 79 80 private static final String ATTRIBUTE_UNITS= "units"; 82 83 private static final String POLICY_MOVE_MEMBERS= "org.eclipse.jdt.ui.moveMembers"; 85 86 private static final String POLICY_MOVE_PACKAGES= "org.eclipse.jdt.ui.movePackages"; 88 89 private static final String POLICY_MOVE_RESOURCES= "org.eclipse.jdt.ui.moveResources"; 91 92 private static final String POLICY_MOVE_ROOTS= "org.eclipse.jdt.ui.moveRoots"; 94 95 private Object fDestination; 96 97 98 private IFile[] fFiles; 99 100 101 private IFolder[] fFolders; 102 103 104 private IPackageFragment[] fFragments; 105 106 107 private IMember[] fMembers; 108 109 110 private String fMovePolicy= null; 111 112 113 private String fPatterns= null; 114 115 116 private boolean fQualified= false; 117 118 119 private boolean fReferences= false; 120 121 122 private IPackageFragmentRoot[] fRoots; 123 124 125 private ICompilationUnit[] fUnits; 126 127 130 public MoveDescriptor() { 131 super(IJavaRefactorings.MOVE); 132 } 133 134 137 protected void populateArgumentMap() { 138 super.populateArgumentMap(); 139 fArguments.put(ATTRIBUTE_POLICY, fMovePolicy); 140 final String project= getProject(); 141 if (fDestination instanceof IJavaElement) 142 fArguments.put(ATTRIBUTE_DESTINATION, JavaRefactoringDescriptor.elementToHandle(project, (IJavaElement) fDestination)); 143 else if (fDestination instanceof IResource) 144 fArguments.put(ATTRIBUTE_TARGET, JavaRefactoringDescriptor.resourceToHandle(null, (IResource) fDestination)); 145 if (POLICY_MOVE_RESOURCES.equals(fMovePolicy)) { 146 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_REFERENCES, Boolean.toString(fReferences)); 147 fArguments.put(ATTRIBUTE_QUALIFIED, Boolean.toString(fQualified)); 148 if (fPatterns != null && !"".equals(fPatterns)) fArguments.put(ATTRIBUTE_PATTERNS, fPatterns); 150 fArguments.put(ATTRIBUTE_FILES, new Integer (fFiles.length).toString()); 151 for (int offset= 0; offset < fFiles.length; offset++) 152 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + 1), JavaRefactoringDescriptor.resourceToHandle(project, fFiles[offset])); 153 fArguments.put(ATTRIBUTE_FOLDERS, new Integer (fFolders.length).toString()); 154 for (int offset= 0; offset < fFolders.length; offset++) 155 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + fFiles.length + 1), JavaRefactoringDescriptor.resourceToHandle(project, fFolders[offset])); 156 fArguments.put(ATTRIBUTE_UNITS, new Integer (fUnits.length).toString()); 157 for (int offset= 0; offset < fUnits.length; offset++) 158 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + fFolders.length + fFiles.length + 1), JavaRefactoringDescriptor.elementToHandle(project, fUnits[offset])); 159 } else if (POLICY_MOVE_ROOTS.equals(fMovePolicy)) { 160 fArguments.put(ATTRIBUTE_ROOTS, new Integer (fRoots.length).toString()); 161 for (int offset= 0; offset < fRoots.length; offset++) 162 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + 1), JavaRefactoringDescriptor.elementToHandle(project, fRoots[offset])); 163 } else if (POLICY_MOVE_PACKAGES.equals(fMovePolicy)) { 164 fArguments.put(ATTRIBUTE_FRAGMENTS, new Integer (fFragments.length).toString()); 165 for (int offset= 0; offset < fFragments.length; offset++) 166 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + 1), JavaRefactoringDescriptor.elementToHandle(project, fFragments[offset])); 167 } else if (POLICY_MOVE_MEMBERS.equals(fMovePolicy)) { 168 fArguments.put(ATTRIBUTE_MEMBERS, new Integer (fMembers.length).toString()); 169 for (int offset= 0; offset < fMembers.length; offset++) 170 fArguments.put(JavaRefactoringDescriptor.ATTRIBUTE_ELEMENT + (offset + 1), JavaRefactoringDescriptor.elementToHandle(project, fMembers[offset])); 171 } 172 } 173 174 184 public void setDestination(IJavaElement element) { 185 Assert.isNotNull(element); 186 fDestination= element; 187 } 188 189 199 public void setDestination(IResource resource) { 200 Assert.isNotNull(resource); 201 fDestination= resource; 202 } 203 204 223 public void setFileNamePatterns(final String patterns) { 224 Assert.isNotNull(patterns); 225 Assert.isLegal(!"".equals(patterns), "Pattern must not be empty"); fPatterns= patterns; 227 } 228 229 239 public void setMoveMembers(final IMember[] members) { 240 Assert.isNotNull(members); 241 Assert.isTrue(fMovePolicy == null, "Clients must only call one of the 'setMoveXXX' methods."); fMembers= members; 243 fMovePolicy= POLICY_MOVE_MEMBERS; 244 } 245 246 256 public void setMovePackageFragmentRoots(final IPackageFragmentRoot[] roots) { 257 Assert.isNotNull(roots); 258 Assert.isTrue(fMovePolicy == null, "Clients must only call one of the 'setMoveXXX' methods."); fRoots= roots; 260 fMovePolicy= POLICY_MOVE_ROOTS; 261 } 262 263 273 public void setMovePackages(final IPackageFragment[] fragments) { 274 Assert.isNotNull(fragments); 275 Assert.isTrue(fMovePolicy == null, "Clients must only call one of the 'setMoveXXX' methods."); fFragments= fragments; 277 fMovePolicy= POLICY_MOVE_PACKAGES; 278 } 279 280 294 public void setMoveResources(final IFile[] files, final IFolder[] folders, final ICompilationUnit[] units) { 295 Assert.isNotNull(files); 296 Assert.isNotNull(folders); 297 Assert.isNotNull(units); 298 Assert.isTrue(fMovePolicy == null, "Clients must only call one of the 'setMoveXXX' methods."); fFiles= files; 300 fFolders= folders; 301 fUnits= units; 302 fMovePolicy= POLICY_MOVE_RESOURCES; 303 } 304 305 323 public void setUpdateQualifiedNames(final boolean update) { 324 fQualified= update; 325 } 326 327 334 public void setUpdateReferences(final boolean update) { 335 fReferences= update; 336 } 337 338 341 public RefactoringStatus validateDescriptor() { 342 RefactoringStatus status= super.validateDescriptor(); 343 if (!status.hasFatalError()) { 344 if (fMovePolicy == null) 345 status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.MoveDescriptor_no_elements_set)); 346 if (fDestination == null) 347 status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.MoveDescriptor_no_destination_set)); 348 } 349 return status; 350 } 351 } 352 | Popular Tags |