| /******************************************************************************* |
| * Copyright (c) 2006, 2008 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * 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.ltk.core.refactoring.RefactoringContribution; |
| import org.eclipse.ltk.core.refactoring.RefactoringCore; |
| import org.eclipse.ltk.core.refactoring.RefactoringStatus; |
| |
| import org.eclipse.jdt.core.IMember; |
| import org.eclipse.jdt.core.IType; |
| 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 move static members 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 |
| * |
| * @noinstantiate This class is not intended to be instantiated by clients. |
| */ |
| public final class MoveStaticMembersDescriptor extends JavaRefactoringDescriptor { |
| |
| /** The delegate attribute */ |
| private static final String ATTRIBUTE_DELEGATE= "delegate"; //$NON-NLS-1$ |
| |
| /** The deprecate attribute */ |
| private static final String ATTRIBUTE_DEPRECATE= "deprecate"; //$NON-NLS-1$ |
| |
| /** The delegate attribute */ |
| private boolean fDelegate= false; |
| |
| /** The deprecate attribute */ |
| private boolean fDeprecate= false; |
| |
| /** The members attribute */ |
| private IMember[] fMembers; |
| |
| /** The type attribute */ |
| private IType fType= null; |
| |
| /** |
| * Creates a new refactoring descriptor. |
| */ |
| public MoveStaticMembersDescriptor() { |
| super(IJavaRefactorings.MOVE_STATIC_MEMBERS); |
| } |
| |
| /** |
| * 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 |
| * |
| * @since 1.2 |
| */ |
| public MoveStaticMembersDescriptor(String project, String description, String comment, Map<String, String> arguments, int flags) { |
| super(IJavaRefactorings.MOVE_STATIC_MEMBERS, project, description, comment, arguments, flags); |
| fType= (IType) JavaRefactoringDescriptorUtil.getJavaElement(fArguments, ATTRIBUTE_INPUT, project); |
| fDelegate= JavaRefactoringDescriptorUtil.getBoolean(fArguments, ATTRIBUTE_DELEGATE, fDelegate); |
| fDeprecate= JavaRefactoringDescriptorUtil.getBoolean(fArguments, ATTRIBUTE_DEPRECATE, fDeprecate); |
| fMembers= (IMember[]) JavaRefactoringDescriptorUtil.getJavaElementArray(fArguments, null, ATTRIBUTE_ELEMENT, 1, project, IMember.class); |
| } |
| |
| @Override |
| protected void populateArgumentMap() { |
| super.populateArgumentMap(); |
| String project= getProject(); |
| JavaRefactoringDescriptorUtil.setJavaElement(fArguments, ATTRIBUTE_INPUT, project, fType); |
| JavaRefactoringDescriptorUtil.setBoolean(fArguments, ATTRIBUTE_DELEGATE, fDelegate); |
| JavaRefactoringDescriptorUtil.setBoolean(fArguments, ATTRIBUTE_DEPRECATE, fDeprecate); |
| JavaRefactoringDescriptorUtil.setJavaElementArray(fArguments, null, ATTRIBUTE_ELEMENT, project, fMembers, 1); |
| } |
| |
| /** |
| * Determines whether the delegate for a member should be declared as |
| * deprecated. |
| * |
| * @param deprecate |
| * <code>true</code> to deprecate the delegate, |
| * <code>false</code> otherwise |
| */ |
| public void setDeprecateDelegate(final boolean deprecate) { |
| fDeprecate= deprecate; |
| } |
| |
| /** |
| * Sets the destination type of the move operation. |
| * |
| * @param type |
| * the destination type |
| */ |
| public void setDestinationType(final IType type) { |
| Assert.isNotNull(type); |
| fType= type; |
| } |
| |
| /** |
| * Determines whether the the original members should be kept as delegates |
| * to the moved ones. |
| * |
| * @param delegate |
| * <code>true</code> to keep the originals, <code>false</code> |
| * otherwise |
| */ |
| public void setKeepOriginal(final boolean delegate) { |
| fDelegate= delegate; |
| } |
| |
| /** |
| * Sets the static members to move. |
| * |
| * @param members |
| * the members to move |
| */ |
| public void setMembers(final IMember[] members) { |
| Assert.isNotNull(members); |
| fMembers= members; |
| } |
| |
| @Override |
| public RefactoringStatus validateDescriptor() { |
| final RefactoringStatus status= super.validateDescriptor(); |
| if (fType == null) |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.MoveStaticMembersDescriptor_no_type)); |
| if (fMembers == null) |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.MoveStaticMembersDescriptor_no_members)); |
| else { |
| for (int index= 0; index < fMembers.length; index++) { |
| if (fMembers[index] == null) { |
| status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.MoveStaticMembersDescriptor_invalid_members)); |
| break; |
| } |
| } |
| } |
| return status; |
| } |
| } |