/* This file is part of Green. * * Copyright (C) 2005 The Research Foundation of State University of New York * All Rights Under Copyright Reserved, The Research Foundation of S.U.N.Y. * * Green is free software, licensed under the terms of the Eclipse * Public License, version 1.0. The license is available at * http://www.eclipse.org/legal/epl-v10.html */ package edu.buffalo.cse.green.editor.action; import org.eclipse.core.resources.IResource; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaMoveProcessor; import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgPolicyFactory; import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils; import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages; import org.eclipse.jdt.ui.refactoring.RefactoringSaveHelper; import org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter; import org.eclipse.jdt.internal.ui.refactoring.reorg.CreateTargetQueries; import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgMoveWizard; import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgQueries; import org.eclipse.ltk.core.refactoring.participants.MoveRefactoring; import org.eclipse.ltk.ui.refactoring.RefactoringWizard; /** * An adaptation of refactor -> move. * * @author bcmartin */ public class RefactorMoveAction extends ContextAction { public RefactorMoveAction() { setAccelerator(EDITOR_REFACTOR_MOVE); } /** * @see edu.buffalo.cse.green.editor.action.ContextAction#doRun() */ public void doRun() throws JavaModelException { IJavaElement[] elements = new IJavaElement[] { _element }; IResource[] resources = ReorgUtils.getResources(elements); JavaMoveProcessor processor = new JavaMoveProcessor( ReorgPolicyFactory.createMovePolicy(resources, elements)); MoveRefactoring refactoring = new MoveRefactoring(processor); RefactoringWizard wizard = new ReorgMoveWizard(processor, refactoring); processor.setCreateTargetQueries(new CreateTargetQueries(wizard)); processor.setReorgQueries(new ReorgQueries(wizard)); new RefactoringStarter().activate(wizard, getEditor().getSite().getShell(), RefactoringMessages.OpenRefactoringWizardAction_refactoring, RefactoringSaveHelper.SAVE_ALL_ALWAYS_ASK); getEditor().autoSave(); getEditor().refresh(); } /** * @see edu.buffalo.cse.green.editor.action.ContextAction#getLabel() */ public String getLabel() { return "Move..."; } /** * @see edu.buffalo.cse.green.editor.action.ContextAction#getSupportedModels() */ protected int getSupportedModels() { return CM_MEMBER; } /** * @see edu.buffalo.cse.green.editor.action.ContextAction#getPath() */ public Submenu getPath() { return Submenu.Refactor; } /** * @see edu.buffalo.cse.green.editor.action.ContextAction#isEnabled() */ public boolean isEnabled() { return !isBinary(); } }