package org.rf.ide.core.testdata.model.presenter.update.testcases; import org.rf.ide.core.testdata.model.AModelElement; import org.rf.ide.core.testdata.model.ModelType; import org.rf.ide.core.testdata.model.presenter.update.ExecutablesStepsHolderMorphOperation; import org.rf.ide.core.testdata.model.table.RobotExecutableRow; import org.rf.ide.core.testdata.model.table.testcases.TestCase; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; public class UserKeywordExecutableRowMorphOperation extends ExecutablesStepsHolderMorphOperation<TestCase> { @Override public boolean isApplicable(final ModelType elementType) { return elementType == ModelType.USER_KEYWORD_EXECUTABLE_ROW; } @Override public RobotExecutableRow<TestCase> insert(final TestCase testCase, final int index, final AModelElement<?> modelElement) { @SuppressWarnings("unchecked") final RobotExecutableRow<TestCase> executableRow = (RobotExecutableRow<TestCase>) modelElement; executableRow.setParent(testCase); // executable row could be taken from some keyword originally, so we need to fix types in // its tokens final RobotToken action = executableRow.getAction(); action.getTypes().clear(); executableRow.setAction(action); for (int i = 0; i < executableRow.getArguments().size(); i++) { final RobotToken arg = executableRow.getArguments().get(i); arg.getTypes().clear(); executableRow.setArgument(i, arg); } testCase.addTestExecutionRow(executableRow, index); return executableRow; } }