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