package org.jboss.tools.switchyard.reddeer.wizard;
import org.jboss.reddeer.jface.wizard.WizardDialog;
import org.jboss.reddeer.core.condition.ShellWithTextIsAvailable;
import org.jboss.reddeer.swt.condition.TableHasRows;
import org.jboss.reddeer.swt.impl.button.PushButton;
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.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitUntil;
import org.jboss.reddeer.common.wait.WaitWhile;
import org.jboss.tools.switchyard.reddeer.condition.IsButtonEnabled;
public class SecurityConfigurationWizard extends WizardDialog {
public static final String TITLE = "Security Configuration";
public static final String NAME = "Name (Optional)";
public static final String ROLES_ALLOWED = "Roles Allowed";
public static final String RUN_AS = "Run As";
public static final String SECURITY_DOMAIN = "Security Domain";
public static final String CALLBACK_HANDLER = "Callback Handler Class";
public SecurityConfigurationWizard() {
super();
}
public void activate() {
new DefaultShell(TITLE);
}
public void setName(String name) {
activate();
new LabeledText(NAME).typeText(name);
new LabeledText(NAME).setText(name);
new WaitUntil(new IsButtonEnabled("Finish", ROLES_ALLOWED, NAME), TimePeriod.LONG);
}
public String getName() {
activate();
return new LabeledText(NAME).getText();
}
public void setRolesAllowed(String roles) {
activate();
new LabeledText(ROLES_ALLOWED).setFocus();
new LabeledText(ROLES_ALLOWED).setText(roles);
}
public String getRolesAllowed() {
activate();
return new LabeledText(ROLES_ALLOWED).getText();
}
public void setRunAs(String role) {
activate();
new LabeledText(RUN_AS).setFocus();
new LabeledText(RUN_AS).setText(role);
}
public String getRunAs() {
activate();
return new LabeledText(RUN_AS).getText();
}
public void setSecurityDomain(String securityDomain) {
activate();
new LabeledText(SECURITY_DOMAIN).setFocus();
new LabeledText(SECURITY_DOMAIN).setText(securityDomain);
}
public String getSecurityDomain() {
activate();
return new LabeledText(SECURITY_DOMAIN).getText();
}
public void selectCallbackHandlerClass(String className) {
activate();
log.info("Open class browser");
new PushButton("Browse...").click();
new DefaultShell("");
log.info("Select callback handler to '" + className + "'");
new DefaultText().setText(className);
new WaitUntil(new TableHasRows(new DefaultTable()), TimePeriod.LONG);
new DefaultTable().select(0);
log.info("Close class browser");
new PushButton("OK").click();
new WaitWhile(new ShellWithTextIsAvailable(""));
activate();
}
public String getCallbackHandlerClass() {
activate();
return new LabeledText(CALLBACK_HANDLER).getText();
}
@Override
public void finish() {
new WaitUntil(new IsButtonEnabled("Finish", NAME, ROLES_ALLOWED, RUN_AS, SECURITY_DOMAIN));
super.finish();
}
}