1 package org.splat.simer;
3 import java.util.Iterator;
4 import java.util.Vector;
6 import org.splat.dal.bo.som.Scenario;
7 import org.splat.service.ProjectElementService;
8 import org.splat.service.ScenarioService;
9 import org.splat.som.Step;
10 import org.splat.dal.bo.som.Study;
11 import org.splat.wapp.MenuItem;
12 import org.splat.wapp.SlidMenu;
14 public class NewScenarioMenu extends SlidMenu {
17 private Scenario scopen; // Currently "open" scenario
18 private Step stopen; // Currently selected step
19 private ProjectElementService _projectElementService;
20 private ScenarioService _scenarioService;
22 // ==============================================================================================================================
24 // ==============================================================================================================================
26 public NewScenarioMenu(Study context) {
27 // -----------------------------------
28 super("scenarii", "study");
33 // ==============================================================================================================================
35 // ==============================================================================================================================
37 public void selects(String name) {
38 // ---------------------------------
39 String[] parse = name.split("\\x2E");
40 Scenario[] scenes = study.getScenarii();
41 Scenario scenew = scopen;
45 if (scenew == null && scenes.length == 1)
48 int askdex = Integer.valueOf(parse[0]);
50 while (askid < scenes.length) {
51 if (scenes[askid].getIndex() == askdex)
55 scenew = scenes[askid]; // Throws an exception if the scenario does not exist (that is, if name is not correct)
57 } catch (Exception error) {
62 // Study with several scenarii, non of them open
64 // Collection of steps to be displayed
65 Vector<Step> steps = new Vector<Step>();
66 Step[] newstep = getProjectElementService().getSteps(scenes[0]); // All scenarii have the same steps
68 for (int i = 0; i < scenes.length; i++)
69 steps.add(getProjectElementService().getFirstStep(scenes[i]));
70 newstep = getProjectElementService().getSteps(study);
71 stopen = newstep[0]; // Default selected step
73 // Creation of the menu
74 for (Iterator<Step> i = steps.iterator(); i.hasNext();) {
76 int number = step.getNumber();
77 Scenario group = (Scenario) step.getOwner(); // The menu includes first scenario steps only
78 int index = group.getIndex();
79 String value = index + "." + number;
81 if (getScenarioService().isEmpty(group))
82 icon = "icon.empty.png";
83 // else if (group.isFinished()) icon = "icon.checked.png";
85 icon = "icon.done.png";
86 addGroup(value, group.getTitle(), icon,
87 "select-step?selection=" + value + "&title=%{title}");
89 } else if (scopen == null || !scenew.equals(scopen)) {
93 // Collection of steps to be displayed
94 Vector<Step> steps = new Vector<Step>();
95 Step[] newstep = getProjectElementService().getSteps(scenew);
97 for (int i = 0; i < newstep.length; i++) {
98 steps.add(newstep[i]);
100 for (int i = askid - 1; i > -1; i--)
101 steps.add(0, getProjectElementService().getFirstStep(scenes[i]));
102 newstep = getProjectElementService().getSteps(study);
103 for (int i = askid + 1; i < scenes.length; i++)
104 steps.add(getProjectElementService().getFirstStep(scenes[i]));
106 // Creation of the menu
107 boolean first = true; // For differentiating the first scenario step
108 int askdex = Integer.valueOf(parse[1]);
109 for (Iterator<Step> i = steps.iterator(); i.hasNext();) {
110 Step step = i.next();
111 int number = step.getNumber();
113 if (!step.isStarted())
114 icon = "icon.empty.png";
115 else if (step.isFinished())
116 icon = "icon.checked.png";
118 icon = "icon.done.png";
119 if (number == askdex)
121 Scenario group = (Scenario) step.getOwner();
122 int index = group.getIndex();
123 String value = index + "." + number;
124 if (index != scenew.getIndex()) {
125 if (getScenarioService().isEmpty(group))
126 icon = "icon.empty.png";
127 // else if (group.isFinished()) icon = "icon.checked.png";
129 icon = "icon.done.png";
130 addGroup(value, group.getTitle(), icon,
131 "select-step?selection=" + value
132 + "&title=%{title}");
134 addGroup(value, scenew.getTitle(), icon,
135 "select-step?selection=" + value
136 + "&title=%{title}");
139 addSubItem(value, "menu.step." + number, icon,
140 "select-step?selection=" + value
141 + "&title=%{title}");
149 public void refreshSelectedItem() {
150 // ----------------------------------
151 MenuItem item = this.getSelectedItem();
153 if (!stopen.isStarted())
154 icon = "icon.empty.png";
155 else if (stopen.isFinished())
156 icon = "icon.checked.png";
158 icon = "icon.done.png";
163 * Get the scenarioService.
165 * @return the scenarioService
167 public ScenarioService getScenarioService() {
168 return _scenarioService;
172 * Set the scenarioService.
174 * @param scenarioService
175 * the scenarioService to set
177 public void setScenarioService(ScenarioService scenarioService) {
178 _scenarioService = scenarioService;
182 * Get the projectElementService.
184 * @return the projectElementService
186 public ProjectElementService getProjectElementService() {
187 return _projectElementService;
191 * Set the projectElementService.
193 * @param projectElementService
194 * the projectElementService to set
196 public void setProjectElementService(
197 ProjectElementService projectElementService) {
198 _projectElementService = projectElementService;