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
/*******************************************************************************
* 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.
An instance of this refactoring descriptor may be obtained by calling RefactoringContribution.createDescriptor()
on a refactoring contribution requested by invoking RefactoringCore.getRefactoringContribution(String)
with the appropriate refactoring id.
Note: this class is not intended to be instantiated by clients.
Since: 1.1 @noinstantiate This class is not intended to be instantiated by clients.
/**
* 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 /** The delegate attribute */
private static final String ATTRIBUTE_DELEGATE= "delegate"; //$NON-NLS-1$
The deprecate attribute /** The deprecate attribute */
private static final String ATTRIBUTE_DEPRECATE= "deprecate"; //$NON-NLS-1$
The delegate attribute /** The delegate attribute */
private boolean fDelegate= false;
The deprecate attribute /** The deprecate attribute */
private boolean fDeprecate= false;
The members attribute /** The members attribute */
private IMember[] fMembers;
The type attribute /** The type attribute */
private IType fType= null;
Creates a new refactoring descriptor.
/**
* Creates a new refactoring descriptor.
*/
public MoveStaticMembersDescriptor() {
super(IJavaRefactorings.MOVE_STATIC_MEMBERS);
}
Creates a new refactoring descriptor.
Params: - project –
the non-empty name of the project associated with this
refactoring, or
null
for a workspace
refactoring - description –
a non-empty human-readable description of the particular
refactoring instance
- comment –
the human-readable comment of the particular refactoring
instance, or
null
for no comment - arguments –
a map of arguments that will be persisted and describes
all settings for this refactoring
- flags –
the flags of the refactoring descriptor
Since: 1.2
/**
* 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.
Params: - deprecate –
true
to deprecate the delegate,
false
otherwise
/**
* 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.
Params: - type –
the destination type
/**
* 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.
Params: - delegate –
true
to keep the originals, false
otherwise
/**
* 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.
Params: - members –
the members to move
/**
* 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;
}
}