package org.jboss.tools.switchyard.reddeer.wizard; import org.hamcrest.core.IsNull; import org.jboss.reddeer.common.logging.Logger; import org.jboss.reddeer.jface.wizard.WizardDialog; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.core.condition.ShellWithTextIsActive; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.button.RadioButton; import org.jboss.reddeer.swt.impl.link.DefaultLink; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.table.DefaultTable; import org.jboss.reddeer.swt.impl.text.DefaultText; import org.jboss.reddeer.swt.impl.text.LabeledText; import org.jboss.reddeer.common.matcher.RegexMatcher; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.tools.switchyard.reddeer.condition.TableHasRow; import org.jboss.tools.switchyard.reddeer.editor.SwitchYardEditor; /** * * @author apodhrad * */ public abstract class ServiceWizard<T extends ServiceWizard<?>> extends WizardDialog { private static Logger log = Logger.getLogger(SwitchYardEditor.class); private String dialogTitle; public ServiceWizard() { super(); } public ServiceWizard(String dialogTitle) { super(); this.dialogTitle = dialogTitle; } @SuppressWarnings("unchecked") public T activate() { new WaitWhile(new JobIsRunning(), TimePeriod.LONG); new DefaultShell(dialogTitle); AbstractWait.sleep(TimePeriod.SHORT); return (T) this; } public T setServiceName(String serviceName) { new LabeledText("Service Name:").setText(serviceName); return activate(); } public T checkInterfaceType(String interfaceType) { log.info("Check interface of type '" + interfaceType + "'"); AbstractWait.sleep(TimePeriod.SHORT); new RadioButton(interfaceType).click(); AbstractWait.sleep(TimePeriod.SHORT); return activate(); } public T selectJavaInterface(String javaInterface) { log.info("Select Java interface '" + javaInterface + "'"); checkInterfaceType("Java").browse(); new DefaultShell(""); new DefaultText().setText(javaInterface); new WaitUntil(new TableHasRow(new DefaultTable(), new RegexMatcher(".*" + javaInterface + ".*"))); new PushButton("OK").click(); new WaitWhile(new ShellWithTextIsActive(new IsNull<String>())); return activate(); } public T createJavaInterface(String javaInterface) { activate().checkInterfaceType("Java").clickInterface(); new JavaInterfaceWizard().activate().setName(javaInterface).finish(); return activate(); } public T selectWSDLInterface(String wsdlInterface) { log.info("Select WSDL interface '" + wsdlInterface + "'"); checkInterfaceType("WSDL").browse(); new DefaultShell("Select WSDL file and portType"); new DefaultText().setText(wsdlInterface); clickOK(); return activate(); } public T createWSDLInterface(String wsdlInterface) { checkInterfaceType("WSDL").clickInterface(); new Java2WSDLWizard().activate().finish(); return activate(); } public T setFileName(String fileName) { new LabeledText("File name:").setText(fileName); return activate(); } public void clickInterface() { new DefaultLink("Interface:").click(); } private void clickOK() { new WaitWhile(new JobIsRunning(), TimePeriod.LONG); new PushButton("OK").click(); new WaitWhile(new JobIsRunning(), TimePeriod.LONG); } @Override public void finish() { super.finish(TimePeriod.VERY_LONG); } protected abstract void browse(); }