package org.jboss.tools.bpel.reddeer.activity;
import org.jboss.reddeer.swt.api.Tree;
import org.jboss.reddeer.swt.impl.button.PushButton;
import org.jboss.reddeer.swt.impl.combo.LabeledCombo;
import org.jboss.reddeer.swt.impl.shell.DefaultShell;
import org.jboss.reddeer.swt.impl.styledtext.DefaultStyledText;
import org.jboss.reddeer.swt.impl.text.DefaultText;
import org.jboss.reddeer.swt.impl.tree.DefaultTree;
import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem;
import org.jboss.tools.bpel.reddeer.matcher.WithLabelMatcherExt;
/**
*
* @author apodhrad
*
*/
public class Assign extends Activity {
public static final String LABEL_FROM = "From:";
public static final String LABEL_TO = "To:";
public static final String VAR = "Variable";
public static final String FIX = "Fixed Value";
public static final String EXP = "Expression";
public Assign(String name) {
super(name, ASSIGN);
}
public Assign addFixToVar(String fixedValue, String variable) {
return addFixToVar(fixedValue, new String[] { variable });
}
public Assign addFixToVar(String fixedValue, String[] variable) {
return addAssign(FIX, new String[] { fixedValue }, VAR, variable);
}
public Assign addVarToExp(String variable, String expression) {
return addVarToExp(new String[] { variable }, expression);
}
public Assign addFixToExp(String fixedValue, String exression) {
return addAssign(FIX, new String[] { fixedValue }, EXP, new String[] { exression });
}
public Assign addVarToExp(String[] variable, String expression) {
return addAssign(VAR, variable, EXP, new String[] { expression });
}
public Assign addExpToVar(String expression, String variable) {
return addExpToVar(expression, new String[] { variable });
}
public Assign addExpToVar(String expression, String[] variable) {
return addAssign(EXP, new String[] { expression }, VAR, variable);
}
public Assign addExpToExp(String expression1, String expression2) {
return addAssign(EXP, new String[] { expression1 }, EXP, new String[] { expression2 });
}
public Assign addVarToVar(String[] variable1, String[] variable2) {
return addAssign(VAR, variable1, VAR, variable2);
}
public Assign addAssign(String from, String[] valueFrom, String to, String[] valueTo) {
openProperties().selectDetails();
new PushButton("New").click();
fillAssignement(LABEL_FROM, from, valueFrom);
fillAssignement(LABEL_TO, to, valueTo);
save();
// Variable doesn't have initializer. Should it be generated?
if (new DefaultShell().getText().equals("Initializer")) {
new PushButton("Yes").click();
save();
}
return this;
}
private void fillAssignement(String label, String assignment, String... value) {
new LabeledCombo(label).setSelection(assignment);
if (assignment.equals(VAR)) {
Tree tree = new DefaultTree(new WithLabelMatcherExt(label));
new DefaultTreeItem(tree, value).select();
}
if (assignment.equals(FIX)) {
new DefaultText(0).setText("'" + value[0] + "'");
}
if (assignment.equals(EXP)) {
new DefaultStyledText(new WithLabelMatcherExt(label)).setText(value[0]);
}
}
}