package com.redhat.ceylon.eclipse.code.refactor; import static com.redhat.ceylon.eclipse.code.refactor.ExtractLinkedMode.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 ExtractParameterHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { ITextEditor editor = (ITextEditor) getCurrentEditor(); if (useLinkedMode() && editor instanceof CeylonEditor) { final CeylonEditor ce = (CeylonEditor)editor; if (ce.isInLinkedMode()) { Object owner = ce.getLinkedModeOwner(); if (owner instanceof ExtractParameterLinkedMode) { ExtractParameterLinkedMode current = (ExtractParameterLinkedMode) owner; current.enterDialogMode(); current.openDialog(); } else { new ExtractParameterRefactoringAction(editor).run(); } } else { ExtractParameterLinkedMode.selectExpressionAndStart(ce); } } else { new ExtractParameterRefactoringAction(editor).run(); } return null; } }