X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=case-study%2Fjdt-after%2Fui%20refactoring%2Forg%2Feclipse%2Fjdt%2Finternal%2Fui%2Frefactoring%2Freorg%2FReorgMoveAction.java;fp=case-study%2Fjdt-after%2Fui%20refactoring%2Forg%2Feclipse%2Fjdt%2Finternal%2Fui%2Frefactoring%2Freorg%2FReorgMoveAction.java;h=300fdbebfb82419718f7157ac6a09de76e479fbb;hb=1b2798f607d741df30e5197f427381cbff326adc;hp=0000000000000000000000000000000000000000;hpb=246231e4bd9b24345490f369747c0549ca308c4d;p=ifi-stolz-refaktor.git diff --git a/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/ReorgMoveAction.java b/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/ReorgMoveAction.java new file mode 100644 index 00000000..300fdbeb --- /dev/null +++ b/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/reorg/ReorgMoveAction.java @@ -0,0 +1,128 @@ +/******************************************************************************* + * Copyright (c) 2000, 2011 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.ui.refactoring.reorg; + +import java.util.List; + +import org.eclipse.core.resources.IResource; + +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; + +import org.eclipse.jface.text.ITextSelection; + +import org.eclipse.ui.IWorkbenchSite; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.MoveProjectAction; + +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.JavaModelException; + +import org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester; +import org.eclipse.jdt.internal.corext.refactoring.RefactoringExecutionStarter; +import org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils; +import org.eclipse.jdt.internal.corext.util.JavaModelUtil; + +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; + +import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; +import org.eclipse.jdt.internal.ui.JavaPlugin; +import org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection; +import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages; +import org.eclipse.jdt.internal.ui.util.ExceptionHandler; + +public class ReorgMoveAction extends SelectionDispatchAction { + public ReorgMoveAction(IWorkbenchSite site) { + super(site); + setText(ReorgMessages.ReorgMoveAction_3); + setDescription(ReorgMessages.ReorgMoveAction_4); + PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IJavaHelpContextIds.MOVE_ACTION); + } + + @Override + public void selectionChanged(IStructuredSelection selection) { + if (!selection.isEmpty()) { + if (ReorgUtils.containsOnlyProjects(selection.toList())) { + setEnabled(createWorkbenchAction(selection).isEnabled()); + return; + } + try { + List elements= selection.toList(); + IResource[] resources= ReorgUtils.getResources(elements); + IJavaElement[] javaElements= ReorgUtils.getJavaElements(elements); + if (elements.size() != resources.length + javaElements.length) + setEnabled(false); + else + setEnabled(RefactoringAvailabilityTester.isMoveAvailable(resources, javaElements)); + } catch (JavaModelException e) { + // no ui here - this happens on selection changes + // http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 + if (JavaModelUtil.isExceptionToBeLogged(e)) + JavaPlugin.log(e); + setEnabled(false); + } + } else + setEnabled(false); + } + + @Override + public void selectionChanged(ITextSelection selection) { + setEnabled(true); + } + + /** + * Note: This method is for internal use only. Clients should not call this method. + * + * @param selection the selection + * + * @noreference This method is not intended to be referenced by clients. + */ + @Override + public void selectionChanged(JavaTextSelection selection) { + try { + setEnabled(RefactoringAvailabilityTester.isMoveAvailable(selection)); + } catch (JavaModelException e) { + setEnabled(false); + } + } + + private MoveProjectAction createWorkbenchAction(IStructuredSelection selection) { + MoveProjectAction action= new MoveProjectAction(getSite()); + action.selectionChanged(selection); + return action; + } + + @Override + public void run(IStructuredSelection selection) { + if (ReorgUtils.containsOnlyProjects(selection.toList())) { + createWorkbenchAction(selection).run(); + return; + } + try { + List elements= selection.toList(); + IResource[] resources= ReorgUtils.getResources(elements); + IJavaElement[] javaElements= ReorgUtils.getJavaElements(elements); + if (RefactoringAvailabilityTester.isMoveAvailable(resources, javaElements)) + RefactoringExecutionStarter.startMoveRefactoring(resources, javaElements, getShell()); + } catch (JavaModelException e) { + ExceptionHandler.handle(e, RefactoringMessages.OpenRefactoringWizardAction_refactoring, RefactoringMessages.OpenRefactoringWizardAction_exception); + } + } + + public boolean generated_52785967066816217(StructuredSelection mockStructuredSelection) { + selectionChanged(mockStructuredSelection); + if (!isEnabled()) + return false; + + run(mockStructuredSelection); + return true; + } +}