diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/renamepackage/RenamePackageAction.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/renamepackage/RenamePackageAction.java | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/renamepackage/RenamePackageAction.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/renamepackage/RenamePackageAction.java deleted file mode 100644 index bb475aab1..000000000 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/refactorings/renamepackage/RenamePackageAction.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Eclipse Public License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.eclipse.org/org/documents/epl-v10.php - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.ide.eclipse.adt.internal.refactorings.renamepackage; - -import com.android.ide.common.xml.ManifestData; -import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.Status; -import org.eclipse.jdt.core.dom.AST; -import org.eclipse.jdt.core.dom.Name; -import org.eclipse.jdt.ui.refactoring.RefactoringSaveHelper; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.IInputValidator; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.ltk.core.refactoring.Refactoring; -import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.IWorkbenchWindowActionDelegate; - -import java.util.Iterator; - -/** - * Refactoring steps: - * <ol> - * <li>Update the "package" attribute of the <manifest> tag with the new - * name.</li> - * <li>Replace all values for the "android:name" attribute in the - * <application> and "component class" (<activity>, <service>, - * <receiver>, and <provider>) tags with the non-shorthand version - * of the class name</li> - * <li>Replace package resource imports (*.R) in .java files</li> - * <li>Update package name in the namespace declarations (e.g. "xmlns:app") - * used for custom styleable attributes in layout resource files</li> - * </ol> - * Caveat: Sometimes it is necessary to perform a project-wide - * "Organize Imports" afterwards. (CTRL+SHIFT+O when a project has active - * selection) - */ -public class RenamePackageAction implements IObjectActionDelegate { - - private ISelection mSelection; - @SuppressWarnings("unused") private IWorkbenchPart mTargetPart; // TODO cleanup - - /** - * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) - */ - @Override - public void setActivePart(IAction action, IWorkbenchPart targetPart) { - mTargetPart = targetPart; - } - - @Override - public void selectionChanged(IAction action, ISelection selection) { - mSelection = selection; - } - - /** - * @see IWorkbenchWindowActionDelegate#init - */ - public void init(IWorkbenchWindow window) { - // pass - } - - @Override - public void run(IAction action) { - - // Prompt for refactoring on the selected project - if (mSelection instanceof IStructuredSelection) { - for (Iterator<?> it = ((IStructuredSelection) mSelection).iterator(); it.hasNext();) { - Object element = it.next(); - IProject project = null; - if (element instanceof IProject) { - project = (IProject) element; - } else if (element instanceof IAdaptable) { - project = (IProject) ((IAdaptable) element).getAdapter(IProject.class); - } - if (project != null) { - // It is advisable that the user saves before proceeding, - // revealing any compilation errors. The following lines - // enforce a save as a convenience. - RefactoringSaveHelper save_helper = new RefactoringSaveHelper( - RefactoringSaveHelper.SAVE_ALL_ALWAYS_ASK); - if (save_helper.saveEditors(AdtPlugin.getShell())) { - promptNewName(project); - } - } - } - } - } - - /* - * Validate the new package name and start the refactoring wizard - */ - private void promptNewName(final IProject project) { - - ManifestData manifestData = AndroidManifestHelper.parseForData(project); - if (manifestData == null) { - return; - } - - final String oldPackageNameString = manifestData.getPackage(); - - final AST astValidator = AST.newAST(AST.JLS3); - Name oldPackageName = astValidator.newName(oldPackageNameString); - - IInputValidator validator = new IInputValidator() { - - @Override - public String isValid(String newText) { - try { - astValidator.newName(newText); - } catch (IllegalArgumentException e) { - return "Illegal package name."; - } - - if (newText.equals(oldPackageNameString)) - return "No change."; - else - return null; - } - }; - - InputDialog dialog = new InputDialog(AdtPlugin.getShell(), - "Rename Application Package", "Enter new package name:", oldPackageNameString, - validator); - - if (dialog.open() == Window.OK) { - Name newPackageName = astValidator.newName(dialog.getValue()); - initiateAndroidPackageRefactoring(project, oldPackageName, newPackageName); - } - } - - - private void initiateAndroidPackageRefactoring( - final IProject project, - Name oldPackageName, - Name newPackageName) { - - Refactoring package_name_refactoring = - new ApplicationPackageNameRefactoring(project, oldPackageName, newPackageName); - - ApplicationPackageNameRefactoringWizard wizard = - new ApplicationPackageNameRefactoringWizard(package_name_refactoring); - RefactoringWizardOpenOperation op = new RefactoringWizardOpenOperation(wizard); - try { - op.run(AdtPlugin.getShell(), package_name_refactoring.getName()); - } catch (InterruptedException e) { - Status s = new Status(Status.ERROR, AdtPlugin.PLUGIN_ID, e.getMessage(), e); - AdtPlugin.getDefault().getLog().log(s); - } - } -} |