1 package com
.intellij
.refactoring
.actions
;
3 import com
.intellij
.lang
.Language
;
4 import com
.intellij
.openapi
.actionSystem
.DataContext
;
5 import com
.intellij
.psi
.PsiElement
;
6 import com
.intellij
.refactoring
.RefactoringActionHandler
;
7 import com
.intellij
.refactoring
.move
.MoveHandler
;
8 import org
.jetbrains
.annotations
.NonNls
;
10 public class MoveAction
extends BaseRefactoringAction
{
11 @NonNls public static final String MOVE_PROVIDER
= "MoveProvider";
13 private final MoveProvider myDefaultMoveProvider
= new MoveProvider() {
14 public boolean isEnabledOnDataContext(DataContext dataContext
) {
18 public RefactoringActionHandler
getHandler(DataContext dataContext
) {
19 return new MoveHandler();
24 setInjectedContext(true);
27 public boolean isAvailableInEditorOnly() {
31 protected boolean isAvailableForLanguage(Language language
){
32 // move is supported in any language
36 public boolean isEnabledOnElements(PsiElement
[] elements
) {
37 return MoveHandler
.canMove(elements
, null);
40 protected boolean isEnabledOnDataContext(DataContext dataContext
) {
41 return getMoveProvider(dataContext
).isEnabledOnDataContext(dataContext
);
44 private MoveProvider
getMoveProvider(DataContext dataContext
) {
45 final MoveProvider moveProvider
= (MoveProvider
)dataContext
.getData(MOVE_PROVIDER
);
46 if (moveProvider
!= null) {
50 return myDefaultMoveProvider
;
53 public RefactoringActionHandler
getHandler(DataContext dataContext
) {
54 return getMoveProvider(dataContext
).getHandler(dataContext
);
57 public interface MoveProvider
{
58 boolean isEnabledOnDataContext(DataContext dataContext
);
59 RefactoringActionHandler
getHandler(DataContext dataContext
);