package com.redhat.ceylon.eclipse.code.refactor;
import static com.redhat.ceylon.eclipse.code.refactor.RenameLinkedMode.useLinkedMode;
import static com.redhat.ceylon.eclipse.util.EditorUtil.getCurrentEditor;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.texteditor.ITextEditor;
import com.redhat.ceylon.eclipse.code.editor.CeylonEditor;
public class AliasHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ITextEditor editor = (ITextEditor) getCurrentEditor();
if (useLinkedMode() && editor instanceof CeylonEditor) {
CeylonEditor ce = (CeylonEditor)editor;
if (ce.isInLinkedMode()) {
if (ce.getLinkedModeOwner() instanceof AliasLinkedMode) {
AliasLinkedMode current = (AliasLinkedMode) ce.getLinkedModeOwner();
current.enterDialogMode();
current.openDialog();
}
else {
new AliasRefactoringAction(editor).run();
}
}
else {
new AliasLinkedMode(ce).start();
}
}
else {
new AliasRefactoringAction(editor).run();
}
return null;
}
}