01: /*******************************************************************************
02: * Copyright (c) 2000, 2007 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.internal.core;
11:
12: import org.eclipse.jdt.core.IJavaElement;
13: import org.eclipse.jdt.core.IJavaModelStatus;
14: import org.eclipse.jdt.core.IJavaModelStatusConstants;
15: import org.eclipse.jdt.core.ISourceReference;
16: import org.eclipse.jdt.core.JavaModelException;
17: import org.eclipse.jdt.internal.core.util.Messages;
18:
19: /**
20: * This operation renames elements.
21: *
22: * <p>Notes:<ul>
23: * <li>Resource rename is not supported - this operation only renames
24: * elements contained in compilation units.
25: * <li>When a main type is renamed, its compilation unit and constructors are renamed.
26: * <li>Constructors cannot be renamed.
27: * </ul>
28: */
29: public class RenameElementsOperation extends MoveElementsOperation {
30: /**
31: * When executed, this operation will rename the specified elements with the given names in the
32: * corresponding destinations.
33: */
34: public RenameElementsOperation(IJavaElement[] elements,
35: IJavaElement[] destinations, String[] newNames,
36: boolean force) {
37: //a rename is a move to the same parent with a new name specified
38: //these elements are from different parents
39: super (elements, destinations, force);
40: setRenamings(newNames);
41: }
42:
43: /**
44: * @see MultiOperation
45: */
46: protected String getMainTaskName() {
47: return Messages.operation_renameElementProgress;
48: }
49:
50: /**
51: * @see CopyElementsOperation#isRename()
52: */
53: protected boolean isRename() {
54: return true;
55: }
56:
57: /**
58: * @see MultiOperation
59: */
60: protected IJavaModelStatus verify() {
61: IJavaModelStatus status = super .verify();
62: if (!status.isOK())
63: return status;
64: if (this .renamingsList == null
65: || this .renamingsList.length == 0)
66: return new JavaModelStatus(
67: IJavaModelStatusConstants.NULL_NAME);
68: return JavaModelStatus.VERIFIED_OK;
69: }
70:
71: /**
72: * @see MultiOperation
73: */
74: protected void verify(IJavaElement element)
75: throws JavaModelException {
76: if (element == null || !element.exists())
77: error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST,
78: element);
79:
80: if (element.isReadOnly())
81: error(IJavaModelStatusConstants.READ_ONLY, element);
82:
83: if (!(element instanceof ISourceReference))
84: error(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES,
85: element);
86:
87: int elementType = element.getElementType();
88: if (elementType < IJavaElement.TYPE
89: || elementType == IJavaElement.INITIALIZER)
90: error(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES,
91: element);
92:
93: verifyRenaming(element);
94: }
95: }
|