Salome HOME
63e7fff7e632f2cc4591989adc7a08c6c4429c3d
[tools/siman.git] / Workspace / Siman / src / org / splat / simer / OpenKnowledge.java
1 package org.splat.simer;
2
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.ResourceBundle;
8
9 import org.splat.dal.bo.som.KnowledgeElement;
10 import org.splat.dal.bo.som.ProgressState;
11 import org.splat.dal.bo.som.SimulationContext;
12 import org.splat.service.dto.KnowledgeElementDTO;
13 import org.splat.som.Step;
14 import org.splat.wapp.SimpleMenu;
15
16 /**
17  * Open knowledge details for presentation.
18  */
19 public class OpenKnowledge extends OpenObject {
20
21         /**
22          * The open knowledge element DTO.
23          */
24         private KnowledgeElementDTO myknelm = new KnowledgeElementDTO();
25         /**
26          * Creation date.
27          */
28         private String credate;
29
30         /**
31          * Knowledge element left menu.
32          */
33         public class Menu extends SimpleMenu {
34                 /**
35                  * Build menu from the list of study steps.
36                  * 
37                  * @param context
38                  *            the list of steps
39                  */
40                 public Menu(List<Step> context) {
41                         super("steps", "study");
42                         int i = 0;
43                         int j = 0;
44                         for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
45                                 Step step = k.next();
46                                 int number = step.getNumber();
47                                 String icon;
48                                 if (step.mayContain(KnowledgeElement.class))
49                                         j = i + 1; // Steps are numbered from 1 to N
50                                 if (!step.isStarted())
51                                         icon = "icon.empty.png";
52                                 else
53                                         icon = "icon.done.png";
54                                 addItem(String.valueOf(number), "folder.step." + number, icon,
55                                                 "step-knowledge?selection=" + number);
56                         }
57                         this.selects(String.valueOf(j));
58                 }
59         }
60
61         // ==============================================================================================================================
62         // Constructor
63         // ==============================================================================================================================
64
65         /**
66          * Set the given knowledge as currently open.
67          * 
68          * @param knelm
69          *            the knowledge element DTO
70          * @return the open knowledge presentation
71          */
72         public OpenKnowledge open(KnowledgeElementDTO knelm) {
73                 ResourceBundle label = ResourceBundle.getBundle("labels",
74                                 getApplicationSettings().getCurrentLocale());
75                 ResourceBundle custom = ResourceBundle.getBundle("som",
76                                 getApplicationSettings().getCurrentLocale());
77                 SimpleDateFormat convert = new SimpleDateFormat(custom
78                                 .getString("date.format"));
79                 StringBuffer value = new StringBuffer(knelm.getValue());
80                 String sceneTitle = knelm.getScenarioTitle();
81                 String studyTitle = knelm.getStudyTitle();
82
83                 myknelm = knelm;
84
85                 // Preparation of the display
86                 credate = convert.format(myknelm.getDate());
87                 // involving = getAllSteps(knelm.getOwnerScenario());
88                 involving = knelm.getInvolving();
89                 context = new ArrayList<SimulationContextFacade>();
90                 menu = new Menu(getInvolvedSteps());
91                 selection = menu.getSelection(); // The default selection is set in the menu definition
92                 int index = Integer.valueOf(selection);
93                 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
94                         Step next = i.next();
95                         if (next.getNumber() == index)
96                                 ustep = next;
97                         for (Iterator<SimulationContext> j = next
98                                         .getAllSimulationContexts().iterator(); j.hasNext();) {
99                                 context.add(new SimulationContextFacade(j.next(),
100                                                 getProjectSettings().getAllSteps()));
101                         }
102                 }
103                 value.append("<p>").append("<b>").append(
104                                 label.getString("label.source")).append(":</b>").append("<br>")
105                                 .append(label.getString("label.study")).append("&nbsp\"")
106                                 .append(studyTitle/* scene.getOwnerStudy().getTitle() */)
107                                 .append("\",").append("<br>")
108                                 .append(sceneTitle/* scene.getTitle() */).append(".").append(
109                                                 "</p>");
110                 description = value.toString();
111                 setupContents(); // Initializes documents and knowledge at ustep
112                 return this;
113         }
114
115         // ==============================================================================================================================
116         // Public member functions
117         // ==============================================================================================================================
118
119         public String getAuthorName() {
120                 return myknelm.getAuthor().toString();
121         }
122
123         public String getDate() {
124                 return credate;
125         }
126
127         public Long getIndex() {
128                 return myknelm.getIndex();
129         }
130
131         public Menu getMenu() {
132                 return (Menu) menu;
133         }
134
135         public ProgressState getProgressState() {
136                 return myknelm.getProgressState();
137         }
138
139         public String getReference() {
140                 return myknelm.getReference();
141         }
142
143         public KnowledgeElementDTO getKnowledgeObject() {
144                 return myknelm;
145         }
146
147         public String getTitle() {
148                 return myknelm.getTitle();
149         }
150
151         public String getType() {
152                 return ResourceBundle.getBundle("som",
153                                 getApplicationSettings().getCurrentLocale()).getString(
154                                 "type.knowledge." + myknelm.getType().getName());
155         }
156
157         public void setSelection(String step) {
158                 selection = step;
159                 int index = Integer.valueOf(selection);
160                 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
161                         ustep = i.next();
162                         if (ustep.getNumber() == index)
163                                 break;
164                 }
165                 menu.selects(selection);
166                 setupContents(); // The contents may have changed even if the selection is the same
167         }
168 }