| /******************************************************************************* |
| * Copyright (c) 2006, 2008 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 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.core.refactoring.descriptors; |
| |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.core.runtime.IPath; |
| |
| import org.eclipse.core.resources.IResource; |
| |
| import org.eclipse.ltk.core.refactoring.RefactoringContribution; |
| import org.eclipse.ltk.core.refactoring.RefactoringCore; |
| import org.eclipse.ltk.core.refactoring.RefactoringStatus; |
| |
| import org.eclipse.jdt.core.refactoring.IJavaRefactorings; |
| |
| import org.eclipse.jdt.internal.core.refactoring.descriptors.DescriptorMessages; |
| import org.eclipse.jdt.internal.core.refactoring.descriptors.JavaRefactoringDescriptorUtil; |
| |
| /** |
| * Refactoring descriptor for the rename resource refactoring. |
| * <p> |
| * An instance of this refactoring descriptor may be obtained by calling |
| * {@link RefactoringContribution#createDescriptor()} on a refactoring |
| * contribution requested by invoking |
| * {@link RefactoringCore#getRefactoringContribution(String)} with the |
| * appropriate refactoring id. |
| * </p> |
| * <p> |
| * Note: this class is not intended to be instantiated by clients. |
| * </p> |
| * |
| * @since 1.1 |
| * |
| * @deprecated since 1.2, use {@link org.eclipse.ltk.core.refactoring.resource.RenameResourceDescriptor} from |
| * <code>org.eclipse.ltk.core.refactoring</code> instead. |
| * |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| * @noextend This class is not intended to be subclassed by clients. |
| */ |
| public final class RenameResourceDescriptor extends JavaRefactoringDescriptor { |
| |
| /** The name attribute */ |
| private String fName= null; |
| |
| /** The resource path attribute (full path) */ |
| private IPath fResourcePath= null; |
| |
| /** |
| * Creates a new refactoring descriptor. |
| */ |
| public RenameResourceDescriptor() { |
| super(IJavaRefactorings.RENAME_RESOURCE); |
| } |
| |
| /** |
| * Creates a new refactoring descriptor. |
| * |
| * @param project |
| * the non-empty name of the project associated with this |
| * refactoring, or <code>null</code> for a workspace |
| * refactoring |
| * @param description |
| * a non-empty human-readable description of the particular |
| * refactoring instance |
| * @param comment |
| * the human-readable comment of the particular refactoring |
| * instance, or <code>null</code> for no comment |
| * @param arguments |
| * a map of arguments that will be persisted and describes |
| * all settings for this refactoring |
| * @param flags |
| * the flags of the refactoring descriptor |
| * |
| * @throws IllegalArgumentException if the argument map contains invalid keys/values |
| * |
| * @since 1.2 |
| */ |
| public RenameResourceDescriptor(String project, String description, String comment, Map arguments, int flags) { |
| super(IJavaRefactorings.RENAME_RESOURCE, project, description, comment, arguments, flags); |
| fResourcePath= JavaRefactoringDescriptorUtil.getResourcePath(arguments, ATTRIBUTE_INPUT, project); |
| fName= JavaRefactoringDescriptorUtil.getString(arguments, ATTRIBUTE_NAME); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| protected void populateArgumentMap() { |
| super.populateArgumentMap(); |
| JavaRefactoringDescriptorUtil.setResourcePath(fArguments, ATTRIBUTE_INPUT, getProject(), fResourcePath); |
| JavaRefactoringDescriptorUtil.setString(fArguments, ATTRIBUTE_NAME, fName); |
| } |
| |
| /** |
| * Sets the new name to rename the resource to. |
| * |
| * @param name |
| * the non-empty new name to set |
| */ |
| public void setNewName(final String name) { |
| Assert.isNotNull(name); |
| Assert.isLegal(!"".equals(name), "Name must not be empty"); //$NON-NLS-1$//$NON-NLS-2$ |
| fName= name; |
| } |
| |
| /** |
| * Returns the new name to rename the resource to. |
| * |
| * @return |
| * the new name to rename the resource to |
| * |
| * @since 1.2 |
| */ |
| public String getNewName() { |
| return fName; |
| } |
| |
| /** |
| * Sets the project name of this refactoring. |
| * <p> |
| * Note: If the resource to be renamed is of type {@link IResource#PROJECT}, |
| * clients are required to to set the project name to <code>null</code>. |
| * </p> |
| * <p> |
| * The default is to associate the refactoring with the workspace. |
| * </p> |
| * |
| * @param project |
| * the non-empty project name to set, or <code>null</code> for |
| * the workspace |
| * |
| * @see #getProject() |
| */ |
| public void setProject(final String project) { |
| super.setProject(project); |
| } |
| |
| /** |
| * Sets the resource to be renamed. |
| * <p> |
| * Note: If the resource to be renamed is of type {@link IResource#PROJECT}, |
| * clients are required to to set the project name to <code>null</code>. |
| * </p> |
| * |
| * @param resource |
| * the resource to be renamed |
| */ |
| public void setResource(final IResource resource) { |
| Assert.isNotNull(resource); |
| fResourcePath= resource.getFullPath(); |
| } |
| |
| |
| /** |
| * Returns the path of the resource to rename. |
| * |
| * @return |
| * the path of the resource to rename |
| * |
| * @since 1.2 |
| */ |
| public IPath getResourcePath() { |
| return fResourcePath; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| public RefactoringStatus validateDescriptor() { |
| RefactoringStatus status= super.validateDescriptor(); |
| if (fResourcePath == null) |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.RenameResourceDescriptor_no_resource)); |
| if (fName == null || "".equals(fName)) //$NON-NLS-1$ |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.RenameResourceDescriptor_no_new_name)); |
| if (fResourcePath.segmentCount() == 1 && getProject() != null) |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.RenameResourceDescriptor_project_constraint)); |
| return status; |
| } |
| } |