/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.tableeditor.cases.handler;
import java.util.Arrays;
import javax.inject.Named;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.ISources;
import org.robotframework.ide.eclipse.main.plugin.model.RobotCase;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordCall;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile;
import org.robotframework.ide.eclipse.main.plugin.navigator.actions.RunSelectedTestCasesAction;
import org.robotframework.ide.eclipse.main.plugin.navigator.actions.RunSelectedTestCasesAction.Mode;
import org.robotframework.ide.eclipse.main.plugin.tableeditor.RobotEditorSources;
import org.robotframework.ide.eclipse.main.plugin.tableeditor.RobotFormEditor;
import org.robotframework.ide.eclipse.main.plugin.tableeditor.cases.handler.RunTestHandler.E4RunTestHandler;
import org.robotframework.red.commands.DIParameterizedHandler;
public class RunTestHandler extends DIParameterizedHandler<E4RunTestHandler> {
public RunTestHandler() {
super(E4RunTestHandler.class);
}
public static class E4RunTestHandler {
@Execute
public void runSingleTest(final @Named(ISources.ACTIVE_EDITOR_NAME) RobotFormEditor editor,
@Named(RobotEditorSources.SUITE_FILE_MODEL) final RobotSuiteFile suiteModel,
@Named(RunTestFromTableDynamicMenuItem.RUN_TEST_COMMAND_MODE_PARAMETER) final String mode) {
final IEditorPart activeEditor = editor.getActiveEditor();
final ISelectionProvider selectionProvider = activeEditor.getEditorSite().getSelectionProvider();
if (selectionProvider != null) {
final ISelection selection = selectionProvider.getSelection();
if (selection instanceof StructuredSelection && !selection.isEmpty()) {
final Object firstElement = ((StructuredSelection) selection).getFirstElement();
RobotCase testCase = null;
if (firstElement instanceof RobotKeywordCall) {
testCase = (RobotCase) ((RobotKeywordCall) firstElement).getParent();
} else if (firstElement instanceof RobotCase) {
testCase = (RobotCase) firstElement;
}
if (testCase != null) {
RunSelectedTestCasesAction.runSelectedTestCases(new StructuredSelection(Arrays.asList(testCase)),
Mode.valueOf(mode));
}
}
}
}
}
}