package com.windowtester.test.gef.tests.recorder; import java.util.List; import com.windowtester.codegen.ITestCaseBuilder; import com.windowtester.codegen.generator.ICodegenAdvisor; import com.windowtester.codegen.generator.LocatorJavaStringFactory; import com.windowtester.codegen.generator.NewAPICodeBlockBuilder; import com.windowtester.codegen.generator.PluggableCodeGenerator; import com.windowtester.codegen.swt.SWTV2TestCaseBuilder; import com.windowtester.codegen.util.IBuildPathUpdater; import com.windowtester.internal.runtime.locator.IdentifierAdapter; import com.windowtester.recorder.event.ISemanticEvent; import com.windowtester.recorder.event.user.SemanticWidgetSelectionEvent; import com.windowtester.recorder.event.user.UISemanticEvent.EventInfo; import com.windowtester.runtime.locator.ILocator; import com.windowtester.swt.gef.codegen.GEFCodegenerator; class GEFTestCodeGenerator implements ICodegenAdvisor { final GEFCodegenerator gefGenerator = new GEFCodegenerator(); final ITestCaseBuilder baseBuilder = new SWTV2TestCaseBuilder("FakeTest", "test", null, null); final PluggableCodeGenerator baseGenerator = new PluggableCodeGenerator(baseBuilder, new NewAPICodeBlockBuilder(baseBuilder)); String toJava(ILocator locator) { fakeAndHandleSelection(locator); return LocatorJavaStringFactory.toJavaString(locator); } //we do this because by the time codegen is initiated, the codegenerator //will already have had a chance to update state when it is notified of the //selection private void fakeAndHandleSelection(ILocator locator) { handleSelection(fakeSelection(locator), baseGenerator, new Advice()); } private SemanticWidgetSelectionEvent fakeSelection(ILocator locator) { EventInfo info = new EventInfo(); info.hierarchyInfo = new IdentifierAdapter(locator); return new SemanticWidgetSelectionEvent(info); } public void handleSelection(ISemanticEvent event, PluggableCodeGenerator generator, Advice advice) { gefGenerator.handleSelection(event, generator, advice); } public String toJavaString(ILocator locator) { return gefGenerator.toJavaString(locator); } @SuppressWarnings("unchecked") public void addPluginDependencies(List events, IBuildPathUpdater updater) { //ignored } public PluggableCodeGenerator getCodeGenerator() { return baseGenerator; } }