/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.netention.dialog.step;
import automenta.netention.dialog.Step;
import automenta.netention.dialog.StepWatcher;
import java.util.LinkedList;
import java.util.List;
/**
* basically displays a content object, ex: text, image, video, HTML
*/
public class MessageStep extends Step {
private final String message;
protected List<Choice> choices;
protected int chosen;
public static enum MessagePerceptionState {
Unobserved, Observed /*, ActivatedBy */
}
public static class Choice {
public final String label;
public final Step step;
Choice(String label, Step step) {
this.label = label;
this.step = step;
}
}
public MessageStep(String message) {
super(message);
this.message = message;
this.choices = new LinkedList();
this.chosen = -1;
}
public MessageStep(String message, List<Choice> choices) {
super(message);
this.message = message;
this.choices = choices;
this.chosen = -1;
}
public MessageStep(String message, String choice, Step step) {
super(message);
this.message = message;
this.choices = new LinkedList();
choices.add(new Choice(choice, step));
this.chosen = -1;
}
public MessageStep(String message, String choiceA, Step stepA, String choiceB, Step stepB) {
super(message);
this.message = message;
this.choices = new LinkedList();
choices.add(new Choice(choiceA, stepA));
choices.add(new Choice(choiceB, stepB));
this.chosen = -1;
}
public void setChoice(int c) {
this.chosen = c;
// for (StepWatcher w : getWatchers()) {
// w.onStepChanged(this, false, true);
// }
}
public String getMessage() {
return message;
}
public List<Step> getNextSteps() {
if (chosen == -1) {
return null;
} else {
LinkedList<Step> ll = new LinkedList();
ll.add(choices.get(chosen).step);
return ll;
}
}
public List<Choice> getChoices() {
if (chosen == -1)
return choices;
else
return null;
}
public void setChoices(List<Choice> c) {
this.choices = c;
// for (StepWatcher w : getWatchers()) {
// w.onStepChanged(this, true, false);
// }
}
}