package com.redhat.ceylon.eclipse.code.refactor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
import org.eclipse.ui.IEditorPart;
public abstract class AbstractRefactoringAction {
final Refactoring refactoring;
final IEditorPart editor;
public AbstractRefactoringAction(IEditorPart editor) {
this.editor = editor;
refactoring = createRefactoring();
}
public boolean run() {
if (refactoring!=null && refactoring.getEnabled()) {
return new RefactoringStarter()
.activate(createWizard(refactoring),
editor.getSite().getShell(),
refactoring.getName(),
getSaveMode());
}
else {
MessageDialog.openWarning(
editor.getEditorSite().getShell(),
"Ceylon Refactoring Error",
message());
return false;
}
}
int getSaveMode() {
if (refactoring instanceof EclipseAbstractRefactoring) {
return ((EclipseAbstractRefactoring) refactoring).getSaveMode();
}
else if (refactoring instanceof AbstractRefactoring) {
return ((AbstractRefactoring) refactoring).getSaveMode();
}
else {
return RefactoringSaveHelper.SAVE_NOTHING;
}
}
public abstract Refactoring createRefactoring();
public abstract RefactoringWizard createWizard(Refactoring refactoring);
public abstract String message();
}