package org.jboss.tools.teiid.reddeer.dialog;
import java.util.Arrays;
import org.jboss.reddeer.common.logging.Logger;
import org.jboss.reddeer.common.wait.AbstractWait;
import org.jboss.reddeer.common.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitWhile;
import org.jboss.reddeer.core.condition.ShellWithTextIsActive;
import org.jboss.reddeer.core.matcher.WithMnemonicTextMatcher;
import org.jboss.reddeer.swt.impl.button.OkButton;
import org.jboss.reddeer.swt.impl.button.PushButton;
import org.jboss.reddeer.swt.impl.group.DefaultGroup;
import org.jboss.reddeer.swt.impl.shell.DefaultShell;
import org.jboss.reddeer.swt.impl.table.DefaultTable;
import org.jboss.reddeer.swt.impl.text.LabeledText;
import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem;
public class GenerateRestProcedureDialog extends AbstractDialog{
private static final Logger log = Logger.getLogger(GenerateRestProcedureDialog.class);
public GenerateRestProcedureDialog() {
super("Generate REST Virtual Procedures");
}
@Override
public void finish() {
log.info("Finishing '" + title + "' Dialog");
new PushButton("OK").click();
new WaitWhile(new ShellWithTextIsActive(title), TimePeriod.NORMAL);
AbstractWait.sleep(TimePeriod.SHORT);
}
/**
* Sets location of procedure's model.
*/
public GenerateRestProcedureDialog setTargetModelLocation(String... path) {
log.info("Setting target model location to " + Arrays.toString(path));
new PushButton(new DefaultGroup("View Model Definition"), 0, new WithMnemonicTextMatcher("...")).click();
new DefaultShell("Select a Folder");
new DefaultTreeItem(path).select();
new OkButton().click();
AbstractWait.sleep(TimePeriod.SHORT);
activate();
return this;
}
/**
* Sets existing model as procedure's model.
* @param path - path to model (<PROJECT>, ..., <MODEL>)
*/
public GenerateRestProcedureDialog setExistingTargetModel(String... path) {
log.info("Setting existing target model to " + Arrays.toString(path));
new PushButton(new DefaultGroup("View Model Definition"), 1, new WithMnemonicTextMatcher("...")).click();
new DefaultShell("Select View Model");
new DefaultTreeItem(path).select();
new OkButton().click();
AbstractWait.sleep(TimePeriod.SHORT);
activate();
return this;
}
/**
* Sets name of new procedure's model.
*/
public GenerateRestProcedureDialog setNewTargetModel(String name) {
log.info("Setting new target model name to " + name);
new LabeledText("Name:").setText(name);
activate();
return this;
}
/**
* Selects specified tables.
*/
public GenerateRestProcedureDialog selectTables(String... tables) {
log.info("Selecting tables: " + Arrays.toString(tables));
DefaultTable table = new DefaultTable(new DefaultGroup("Tables Selection"), 0);
for (String t : tables) {
table.getItem(t).setChecked(true);
}
activate();
return this;
}
}