package org.jboss.tools.teiid.reddeer.dialog;
import org.jboss.reddeer.common.logging.Logger;
import org.jboss.reddeer.core.util.Display;
import org.jboss.reddeer.swt.api.TreeItem;
import org.jboss.reddeer.swt.impl.button.PushButton;
import org.jboss.reddeer.swt.impl.list.DefaultList;
import org.jboss.reddeer.swt.impl.shell.DefaultShell;
import org.jboss.reddeer.swt.impl.tab.DefaultTabItem;
import org.jboss.reddeer.swt.impl.text.DefaultText;
import org.jboss.reddeer.swt.impl.text.LabeledText;
import org.jboss.reddeer.swt.impl.tree.DefaultTree;
import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem;
public class CreateDriverDialog extends AbstractDialog {
private static final Logger log = Logger.getLogger(CreateDriverDialog.class);
public CreateDriverDialog() {
super("New Driver Definition");
log.info("New Driver Definition dialog is opened");
}
public CreateDriverDialog selectTemplate(String type, String version){
new DefaultTabItem("Name/Type").activate();
TreeItem root = new DefaultTree().getItems().get(0);
for (TreeItem item : root.getItems()) {
if (type.equals(item.getCell(0)) && version.equals(item.getCell(2))) {
item.select();
break;
}
}
return this;
}
/**
* First must be run selectTemplate
*/
public CreateDriverDialog setName(String name){
log.info("Set driver name to: '"+ name +"'");
activate();
new LabeledText("Driver name:").setText(name);
return this;
}
public CreateDriverDialog addDriver(String path){
log.info("Set driver path to: '"+ path +"'");
new DefaultTabItem("JAR List").activate();
clearAllDriverLibraries();
addItem(path);
addItem(path);
removeDriverLibrary(path);
return this;
}
public CreateDriverDialog setDriverClassGeneric(String driverClass) {
log.info("Set driver class to: '"+ driverClass +"'");
new DefaultTabItem("Properties").activate();
new DefaultTreeItem(new DefaultTree(0), "General", "Driver Class").doubleClick();
new PushButton("...").click();
new DefaultShell("Available Classes from Jar List");
new DefaultText().setText(driverClass);
new PushButton("OK").click();
activate();
return this;
}
public CreateDriverDialog setDriverClass(String driverClass){
log.info("Set driver class to: '"+ driverClass +"'");
new DefaultTabItem("Properties").activate();
new DefaultTreeItem(new DefaultTree(0), "General", "Driver Class").doubleClick();
new DefaultText().setText(driverClass);
activate();
return this;
}
public CreateDriverDialog setConnectionUrl(String connectionUrl){
log.info("Set driver connection url to: '"+ connectionUrl +"'");
new DefaultTabItem("Properties").activate();
new DefaultTreeItem(new DefaultTree(0), "General", "Connection URL").doubleClick();
new DefaultText().setText(connectionUrl);
activate();
return this;
}
public CreateDriverDialog setDatabaseName(String databaseName) {
log.info("Set driver database name to: '"+ databaseName +"'");
new DefaultTabItem("Properties").activate();
new DefaultTreeItem(new DefaultTree(0), "General", "Database Name").doubleClick();
new DefaultText().setText(databaseName);
activate();
return this;
}
@Override
public void finish() {
log.info("Finishing '" + title + "' Dialog");
new PushButton("OK").click();
}
private void clearAllDriverLibraries() {
if (new DefaultList().getListItems().length > 0) {
new PushButton("Clear All").click();
} else {
log.info("No drivers to clean, skipped");
}
}
public void removeDriverLibrary(String driverLocation) {
new DefaultList().select(driverLocation);
new PushButton("Remove JAR/Zip").click();
}
private void addItem(final String item) {
Display.syncExec(new Runnable() {
@Override
public void run() {
new DefaultList().getSWTWidget().add(item);
}
});
}
}