ontomde-java 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. data/History.txt +10 -0
  2. data/Manifest.txt +156 -0
  3. data/README.txt +98 -0
  4. data/Rakefile +21 -0
  5. data/bin/ontomde-java +5 -0
  6. data/generateRdocFile.sh +16 -0
  7. data/lib/ontomde-java.rb +45 -0
  8. data/lib/ontomde-java/crank.rb +13 -0
  9. data/lib/ontomde-java/crank/context.rb +384 -0
  10. data/lib/ontomde-java/crank/crankJpa.rb +103 -0
  11. data/lib/ontomde-java/crank/equals.rb +83 -0
  12. data/lib/ontomde-java/crank/facelets.rb +243 -0
  13. data/lib/ontomde-java/crank/facesconfig.rb +113 -0
  14. data/lib/ontomde-java/crank/helper.rb +46 -0
  15. data/lib/ontomde-java/crank/main.rb +51 -0
  16. data/lib/ontomde-java/crank/menu.rb +39 -0
  17. data/lib/ontomde-java/crank/menu2.rb +78 -0
  18. data/lib/ontomde-java/crank/validation.rb +34 -0
  19. data/lib/ontomde-java/ejb2.rb +3 -0
  20. data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
  21. data/lib/ontomde-java/flex.rb +7 -0
  22. data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
  23. data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
  24. data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
  25. data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
  26. data/lib/ontomde-java/flex/fileTypes.rb +19 -0
  27. data/lib/ontomde-java/flex/main.rb +347 -0
  28. data/lib/ontomde-java/frontend/command.rb +324 -0
  29. data/lib/ontomde-java/frontend/command.rdoc +583 -0
  30. data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
  31. data/lib/ontomde-java/frontend/options.rb +555 -0
  32. data/lib/ontomde-java/frontend/steps.rb +287 -0
  33. data/lib/ontomde-java/java/accessorCode.rb +528 -0
  34. data/lib/ontomde-java/java/accessorSignature.rb +347 -0
  35. data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
  36. data/lib/ontomde-java/java/apache.rb +34 -0
  37. data/lib/ontomde-java/java/build.rb +80 -0
  38. data/lib/ontomde-java/java/collectionMapping.rb +112 -0
  39. data/lib/ontomde-java/java/component.rb +446 -0
  40. data/lib/ontomde-java/java/contextualize.rb +43 -0
  41. data/lib/ontomde-java/java/enumAssignable.rb +75 -0
  42. data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
  43. data/lib/ontomde-java/java/equals.rb +91 -0
  44. data/lib/ontomde-java/java/groovy.rb +95 -0
  45. data/lib/ontomde-java/java/java.rb +1329 -0
  46. data/lib/ontomde-java/java/java.rdoc +78 -0
  47. data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
  48. data/lib/ontomde-java/java/javaHelper.rb +25 -0
  49. data/lib/ontomde-java/java/java_todo.rdoc +3 -0
  50. data/lib/ontomde-java/java/javadoc.rb +254 -0
  51. data/lib/ontomde-java/java/meta.rb +28 -0
  52. data/lib/ontomde-java/java/operationAsClass.rb +144 -0
  53. data/lib/ontomde-java/java/security.rb +260 -0
  54. data/lib/ontomde-java/java/stateMachine.rb +415 -0
  55. data/lib/ontomde-java/java/tenant.rb +65 -0
  56. data/lib/ontomde-java/java/xsd.rb +1363 -0
  57. data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
  58. data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
  59. data/lib/ontomde-java/jpa.rb +17 -0
  60. data/lib/ontomde-java/jpa/configuration.rb +176 -0
  61. data/lib/ontomde-java/jpa/finder.rb +102 -0
  62. data/lib/ontomde-java/jpa/jpa.rb +531 -0
  63. data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
  64. data/lib/ontomde-java/jpa/locking.rb +18 -0
  65. data/lib/ontomde-java/jpa/mapping.rb +314 -0
  66. data/lib/ontomde-java/jpa/redefined.rb +77 -0
  67. data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
  68. data/lib/ontomde-java/jpdl.rb +9 -0
  69. data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
  70. data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
  71. data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
  72. data/lib/ontomde-java/jpdl/constant.rb +5 -0
  73. data/lib/ontomde-java/jpdl/graphic.rb +52 -0
  74. data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
  75. data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
  76. data/lib/ontomde-java/jpdl/main.rb +348 -0
  77. data/lib/ontomde-java/jpdl/main.rdoc +2 -0
  78. data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
  79. data/lib/ontomde-java/kbjava.rb +6 -0
  80. data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
  81. data/lib/ontomde-java/struts.rb +27 -0
  82. data/lib/ontomde-java/struts/MessageResources.rb +359 -0
  83. data/lib/ontomde-java/struts/action.rb +883 -0
  84. data/lib/ontomde-java/struts/blob.rb +11 -0
  85. data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
  86. data/lib/ontomde-java/struts/footer.rb +128 -0
  87. data/lib/ontomde-java/struts/form.rb +450 -0
  88. data/lib/ontomde-java/struts/header.rb +37 -0
  89. data/lib/ontomde-java/struts/header_link.rb +39 -0
  90. data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
  91. data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
  92. data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
  93. data/lib/ontomde-java/struts/jsp_index.rb +136 -0
  94. data/lib/ontomde-java/struts/localeAction.rb +641 -0
  95. data/lib/ontomde-java/struts/main.rb +41 -0
  96. data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
  97. data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
  98. data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
  99. data/lib/ontomde-java/struts/reloadAction.rb +33 -0
  100. data/lib/ontomde-java/struts/spring.rb +89 -0
  101. data/lib/ontomde-java/struts/struts-config.rb +232 -0
  102. data/lib/ontomde-java/struts/validation.rb +116 -0
  103. data/lib/ontomde-java/struts/validator.rb +341 -0
  104. data/lib/ontomde-java/struts/webXml.rb +195 -0
  105. data/lib/ontomde-java/struts/xmlForm.rb +308 -0
  106. data/lib/ontomde-java/version.rb +5 -0
  107. data/profiling.xls +0 -0
  108. data/test/.classpath +14 -0
  109. data/test/.project +17 -0
  110. data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
  111. data/test/Rakefile +71 -0
  112. data/test/build.xml +34 -0
  113. data/test/classpath.rb +15 -0
  114. data/test/lib/junit-4.1.jar +0 -0
  115. data/test/load1.rb +3 -0
  116. data/test/load2.rb +3 -0
  117. data/test/log4j.properties +46 -0
  118. data/test/model/.project +11 -0
  119. data/test/model/BigProject.mdzip +0 -0
  120. data/test/model/BigProject.mdzip.nt +102866 -0
  121. data/test/model/ClassDiagram.EntArch.gif +0 -0
  122. data/test/model/ClassDiagram.emx.gif +0 -0
  123. data/test/model/ClassDiagram.mdzip.gif +0 -0
  124. data/test/model/model_ea71.bis.ea.xmi +149 -0
  125. data/test/model/model_ea71.ea.xmi +4470 -0
  126. data/test/model/model_ea71.eap +0 -0
  127. data/test/model/model_ea71_README.txt +8 -0
  128. data/test/model/multipleInheritance.emx +466 -0
  129. data/test/model/multipleInheritance.emx.nt +2428 -0
  130. data/test/model/simple1-530.ofp +0 -0
  131. data/test/model/simple1-includedAsReference.emx +169 -0
  132. data/test/model/simple1.emx +3729 -0
  133. data/test/model/simple1.emx.fragments.nt +81 -0
  134. data/test/model/simple1.emx.nt +5760 -0
  135. data/test/model/simple1.mdzip +0 -0
  136. data/test/model/simple1.mdzip.nt +11500 -0
  137. data/test/model/simple1.oe530.nt +1986 -0
  138. data/test/model/simple1.oe600.nt +1627 -0
  139. data/test/src/RuntimeTest.java +656 -0
  140. data/test/src/testsLevel1.java +174 -0
  141. data/test/src/testsLevel2.java +29 -0
  142. data/test/src/testsLevel3.java +40 -0
  143. data/test/test-ea7.sh +15 -0
  144. data/test/test-magicDraw.sh +10 -0
  145. data/test/test-mi.sh +9 -0
  146. data/test/test-oe530.sh +10 -0
  147. data/test/test-oe600.sh +11 -0
  148. data/test/test-rsm.sh +11 -0
  149. data/test/test_export_ea71.rb +5 -0
  150. data/test/test_export_oe530.rb +4 -0
  151. data/test/test_export_oe600.rb +4 -0
  152. data/test/test_export_rsm60.rb +4 -0
  153. data/test/trace +419 -0
  154. data/test/uml_test.rb +1434 -0
  155. data/test/uml_test.xls +0 -0
  156. data/test/unit_test.rb +6 -0
  157. metadata +224 -0
@@ -0,0 +1,37 @@
1
+
2
+ module Mrdf_Repository
3
+ def struts_header_generate
4
+ write <<END
5
+ <%-- ******** ENTETE ****************** --%>
6
+ <div class="cadre">
7
+ <div class="AgLeft">
8
+ <a href="https://rubyforge.org/">
9
+ <img src="#{css_path_model}/#{css_color_class}/image/logoMDE.gif" border="0" alt="Home"/>
10
+ </a>
11
+ </div>
12
+ <div class="AgCenter">
13
+ <img src="#{css_path_model}/#{css_color_class}/image/bienvenue.gif" border="0" alt="will be delete"/>
14
+ </div>
15
+ <div class="AgRight">
16
+ <a href="javascript:window.print();">
17
+ <img src="#{css_path_model}/#{css_color_class}/image/btnPrint.gif" width="25" height="25" border="0" alt="Print"/>
18
+ </a>
19
+ <html:link page="/Welcome.do"title="Retour a l'accueil">
20
+ <img src="#{css_path_model}/#{css_color_class}/image/btnPosition.gif" width="25" height="25" border="0" alt="Position"/>
21
+ </html:link>
22
+ <a href="#">
23
+ <img src="#{css_path_model}/#{css_color_class}/image/btnHelp.gif" width="25" height="25" border="0" alt="Help"/>
24
+ </a>
25
+ </div>
26
+ </div>
27
+ <%-- ******** USER CONTEXT ************* --%>
28
+ END
29
+ end
30
+ end
31
+
32
+ module Muml_Class
33
+ def struts_header_generate
34
+ self.rdf_Repository.struts_header_generate;
35
+ return
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ require 'pathname'
2
+
3
+ module Muml_Class
4
+ def struts_header_link_generate
5
+ rdf_Repository.struts_header_link_generate(struts_jsp_edit_path.to_s)
6
+ end
7
+ end
8
+
9
+ module Mrdf_Resource #< ::Crdfs_Class
10
+ # def struts_header_link_generate
11
+ # rdf_Repository.struts_header_link_generate
12
+ # end
13
+ def css_path_model
14
+ rdf_Repository.css_path_model
15
+ end
16
+ def css_color_class
17
+ rdf_Repository.css_color_class
18
+ end
19
+ end
20
+
21
+ module Mrdf_Repository
22
+ STRUTS_RES_DIRECTORY="res"
23
+
24
+ def css_path_model
25
+ return "#{STRUTS_RES_DIRECTORY}/"
26
+ end
27
+
28
+ def css_color_class
29
+ return "orange"
30
+ end
31
+
32
+ def struts_header_link_generate(sourcePage)
33
+ rel=Pathname.new(".").relative_path_from(Pathname.new(File.dirname(sourcePage)))
34
+ write <<END
35
+ <jsp:include page="#{rel}/res/orange/include/include_head.jsp" flush="false"/>
36
+ END
37
+ end
38
+ end
39
+
@@ -0,0 +1,870 @@
1
+ # ------------------------
2
+ # Different widgets
3
+ # ------------------------
4
+ # OAS (Object Association Single)
5
+ # OAM (Object Association Multiple)
6
+ # OCS (Object Composition Single)
7
+ # OCM (Object Composition Multiple)
8
+ #
9
+ # EPS (Enumeration Property Single)
10
+ # EPM (Enumeration Property Multiple)
11
+ #
12
+ # BPS (Boolean Property Single)
13
+ # CPS (Calendar Property Single)
14
+ # FPS (Float Property Single)
15
+ # IPS (Integer Property Single)
16
+ # SPS (String Property Single)
17
+ # TPS (Timestamp Property Single)
18
+
19
+ module Mrdf_Repository
20
+ def struts_encloseWrite(before,after,&block)
21
+ write(before)
22
+ yield
23
+ write(after)
24
+ end
25
+ end
26
+ module Mrdf_Resource
27
+ def struts_encloseWrite(before,after,&block)
28
+ write(before)
29
+ yield
30
+ write(after)
31
+ end
32
+ end
33
+
34
+ module Mrdf_Repository
35
+
36
+ def eachStrutsBean
37
+ uml_Class_all.each { |c|
38
+ next if c.kind_of?(Muml_Enumeration)
39
+ next if c.kind_of?(Muml_Interface)
40
+ next if c.java_ignoreMe?
41
+ yield(c)
42
+ }
43
+ end
44
+
45
+ def eachStrutsFormset
46
+ uml_Class_all.each { |c|
47
+ next if c.kind_of?(Muml_Enumeration)
48
+ next if c.kind_of?(Muml_Interface)
49
+ next if c.java_ignoreMe?
50
+ yield(c)
51
+ }
52
+ end
53
+
54
+ def struts_edit_generate
55
+ uml_Class_all.each { |c|
56
+ next if c.kind_of?(Muml_Enumeration)
57
+ next if c.kind_of?(Muml_Interface)
58
+ next if c.java_ignoreMe?
59
+ #next if c.db_isTransient?
60
+ c.struts_edit_generate
61
+ c.struts_row_generate
62
+ }
63
+ end
64
+ end
65
+
66
+ module Mrdf_Repository
67
+ STRUTS_SESSION_TIMEOUT_IN_MINUTES_RES="server.session.timeout.minutes"
68
+ end
69
+
70
+ def struts_writeTimeoutIndicator()
71
+ write %{
72
+ <div style="display: none; left: 136px; top: 112px;" id="bubble_tooltip">
73
+ <div class="bubble_top"><span></span></div>
74
+ <div class="bubble_middle"><span id="bubble_tooltip_content">Message Help To add</span></div>
75
+ <div class="bubble_bottom"></div>
76
+ </div>
77
+ <script>
78
+ function showToolTip(e,text){
79
+ if(document.all)e = event;
80
+
81
+ var obj = document.getElementById('bubble_tooltip');
82
+ var obj2 = document.getElementById('bubble_tooltip_content');
83
+ obj2.innerHTML = text;
84
+ obj.style.display = 'block';
85
+ var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
86
+ if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0;
87
+ var leftPos = e.clientX - 100;
88
+ if(leftPos<0)leftPos = 0;
89
+ obj.style.left = leftPos + 'px';
90
+ obj.style.top = e.clientY - obj.offsetHeight -1 + st + 'px';
91
+ }
92
+
93
+ function hideToolTip()
94
+ {
95
+ document.getElementById('bubble_tooltip').style.display = 'none';
96
+
97
+ }
98
+ </script>
99
+
100
+ <%-- TPL:1 BEGIN --%>
101
+ <%-- Start JavaScript Clock Code --%>
102
+ <a id="js_remaining_time" onmouseover="showToolTip(event,'This is a simple, simple test');return false" onmouseout="hideToolTip()">
103
+ <script language="javascript">
104
+ load_time=new Date();
105
+ server_timeout=#{struts_writeMsg(Mrdf_Repository::STRUTS_SESSION_TIMEOUT_IN_MINUTES_RES)} // minutes
106
+ function js_remaining_time(){
107
+ var clock_div = document.getElementById('js_remaining_time');
108
+ clock_div.innerHTML = Math.floor(server_timeout-(new Date()-load_time)/1000/60)+"'"
109
+ setTimeout("js_remaining_time()", 10000);
110
+ }
111
+ js_remaining_time();
112
+ </script>
113
+ </a>
114
+ <div id="TipLayer" style="visibility:hidden;position:absolute;z-index:1000;top:-100;"></div>
115
+
116
+ <%-- End JavaScript Clock Code --%>
117
+ <%-- TPL:1 END --%>
118
+ }
119
+ end
120
+
121
+ module Muml_Class
122
+
123
+ # return identifier of the default tab
124
+ def struts_defaultTabId
125
+ return "all"
126
+ end
127
+
128
+ # Returns the internal where to generate file for this object.
129
+ def struts_jsp_edit_path
130
+ path="form"
131
+ return "pages/#{java_InternalFilePath}/#{path}/#{java_Name}#{context[:struts_tab].java_Name}.jsp"
132
+ end
133
+ # Returns the internal where to generate file for this object.
134
+ def struts_jsp_row_path
135
+ path="form"
136
+ return "pages/#{java_InternalFilePath}/#{path}/#{java_Name}-row.jsp"
137
+ end
138
+
139
+ def struts_row_generate
140
+ mtk_writeSession( %{#{context[:webContentDir]}/#{struts_jsp_row_path}} ) {
141
+ mtk_context( :struts_curClass => self) {
142
+ struts_edit_writeHeader
143
+ write("<%-- TPL:2 BEGIN --%>\n<tr>")
144
+ struts_formAttribute.each { |a|
145
+ next if a.uml_name_one=="id"
146
+ write("<%-- UML PROPERTY: #{a.uml_name}--%>\n")
147
+ write("<td>");
148
+ write("</td>");
149
+ }
150
+ write("</tr>\n<%-- TPL:2 END --%>\n")
151
+ }
152
+ }
153
+ end
154
+
155
+ def struts_edit_generate
156
+ return if java_ignoreMe?
157
+ #path=context[:jspEditMode] ? "form_item" : "view_item"
158
+ struts_ownedTab.each { |i|
159
+ label="#{i}"
160
+ f=self.struts_actionForm_one
161
+ mtk_context(:struts_tab => i ) {
162
+
163
+
164
+ mtk_writeSession( %{#{context[:webContentDir]}/#{struts_jsp_edit_path}} ) {
165
+ #log.debug { %{#{context[:webContentDir]}/{struts_jsp_edit_path}} }
166
+ struts_edit_writeHeader
167
+ before=""
168
+ after=""
169
+ if(context[:generateXMLStrutsForm])
170
+ before=%{<logic:notPresent parameter="FLEX">\n}
171
+ after=%{</logic:notPresent>\n}
172
+ end
173
+
174
+ struts_encloseWrite(before,after) {
175
+ mtk_context( :struts_curClass => self) {
176
+ struts_edit_writePage
177
+ }}
178
+ before=""
179
+ after=""
180
+ if(context[:generateXMLStrutsForm])
181
+ before=%{<logic:present parameter="FLEX">\n}
182
+ after=%{</logic:present>\n}
183
+ end
184
+ struts_encloseWrite(before,after) {
185
+ struts_edit_writePageXML(f)
186
+ }
187
+ }}}
188
+ end
189
+
190
+ STRUTS_XML_VIEW_PREFIX="src."
191
+ def struts_edit_writePageXML(f)
192
+ return unless context[:generateXMLStrutsForm]
193
+ write( %{
194
+ <message>
195
+ <meta>
196
+ <html:link action="/#{java_Name}#{context[:struts_tab].java_Name}-submit"/>
197
+ <timeout_ms><%= 3*60*60*1000 %></timeout_ms>
198
+ <timezone><bean:write name="#{struts_actionForm_one.java_Name}" property="#{::Muml_Classifier::STRUTS_SETTIMEZONE_FIELD}"/></timezone>
199
+ <sessionId><%=session.getId()%></sessionId>
200
+ <view>#{STRUTS_XML_VIEW_PREFIX}#{java_qualifiedName}</view><logic:messagesPresent>
201
+ <html:messages id="error"><errors>
202
+ <error><bean:write name="error"/></error></html:messages>
203
+ </errors>
204
+ </logic:messagesPresent></meta>
205
+ <form>
206
+ <bean:write name="#{f.java_Name}" property="#{::Muml_Class::STRUTS_XML_FORM_PROPERTY}" filter="false" />
207
+ </form>
208
+ </message>
209
+ })
210
+ end
211
+
212
+ def struts_edit_writePage
213
+ struts_edit_writeHTML {
214
+ struts_edit_writeHead {
215
+ struts_jspEdit_generateJavascript
216
+ struts_header_link_generate
217
+ struts_jspEditwriteSelfJSInclude
218
+ struts_edit_writeTitle
219
+ }
220
+ struts_edit_writeBody
221
+ }
222
+ end
223
+
224
+
225
+ def struts_edit_writeHTML(&block)
226
+ write("<html:html><%-- T:1004 --%>")
227
+ yield
228
+ write("</html:html><%-- T:1004 --%>")
229
+ end
230
+
231
+ def struts_edit_writeHeader
232
+
233
+ # encoding must be ISO8859-1 to avoid bug with forms and accentuated characters.
234
+
235
+ write <<END
236
+ <?xml version="1.0" encoding="ISO-8859-1" ?>
237
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
238
+ <%@ page contentType="text/html;charset=ISO8859-1" %>
239
+ <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
240
+ <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
241
+ <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
242
+ END
243
+ if context[:jspUseXmdaTaglib]
244
+ write <<END
245
+ <%@ taglib uri="http://orange.fr/2007/xmda/struts-tags" prefix="xmda" %>
246
+ <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
247
+ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
248
+ END
249
+
250
+ if context[:security]
251
+ write <<END
252
+ <%@ taglib uri="http://orange.fr/2007/xmda/struts-security-tags" prefix="xmdas" %>
253
+ END
254
+ end
255
+ if context[:statemachine]
256
+ write <<END
257
+ <%@ taglib uri="http://orange.fr/2007/xmda/fsm-tags" prefix="xmdafsm" %>
258
+ END
259
+ end
260
+
261
+ end
262
+ end
263
+ def struts_edit_writeHead(&block)
264
+ write "<head>"
265
+ yield
266
+ write "</head>"
267
+ end
268
+
269
+ def struts_edit_writeTitle
270
+ write %{<title>#{struts_writeMsg("#{self.java_qualifiedName}.title")}</title>}
271
+ end
272
+
273
+
274
+ # write tabs in JSP
275
+ # NOTE: CSS is design in such a way that active tab
276
+ # is the last one and its id is menuOptDivId0
277
+ def struts_jsp_writeTabBar
278
+ return if struts_ownedTab.size <= 1
279
+ write %{<div class="menu" id="menuDivId">\n}
280
+ cmpt =1;
281
+ onglet_actif=context[:struts_tab]
282
+ struts_ownedTab.each { |tab|
283
+ id=tab.java_Name
284
+ label="#{self.java_qualifiedName}.#{id}.tab"
285
+ if tab==onglet_actif
286
+
287
+
288
+ write %{\n<div class="menuOptnSelect" id="menuOptDivId0">
289
+ <div class="menuOptnSelectLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
290
+ </div>
291
+ \n}
292
+
293
+ else
294
+ if cmpt==1
295
+ write %{\n<div class="menuOptn" id="menuOptDivId#{id}" style="display:none;">
296
+ <div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
297
+ </div>}
298
+ else
299
+ write %{\n<div class="menuOptn" id="menuOptDivId#{id}">
300
+ <div class="menuLink"><html:link onclick="#{STRUTS_REFRESH_ACTION}('#{id}');return false;" page="">#{struts_writeMsg(label)}</html:link></div>
301
+ </div>}
302
+ end
303
+
304
+ cmpt=cmpt+1;
305
+ end
306
+ }
307
+ write %{</div>\n}
308
+ end
309
+
310
+ # form enctype attribute
311
+ # useful when form includes a field of type blob
312
+ def struts_formEncTypeAttribute
313
+ #TODO: add enctype *only* if form has a blob field
314
+ return %{ enctype="multipart/form-data"}
315
+ end
316
+
317
+ #name of the javascript openTab method used to switch to the requested tab.
318
+
319
+ def struts_edit_writeBody
320
+ mtk_context(:strutsActionName => "/#{java_Name}#{context[:struts_tab].java_Name}-submit" ) {
321
+ struts_encloseWrite(%{<body >\n<html:form #{struts_formEncTypeAttribute} action="#{context[:strutsActionName]}">\n<center>},"</center>\n</html:form></body>\n") {
322
+ if(context[:generateXMLStrutsForm])
323
+ write <<END
324
+ <!-- DEBUG SWITCH -->
325
+ <input type="checkbox" name="FLEX"/>
326
+ END
327
+ end
328
+
329
+ struts_header_generate
330
+ write <<END
331
+ <%-- ********* CORPS DE PAGE ********** --%>
332
+ <logic:messagesPresent>
333
+ <div>
334
+ <table class="tableForm">
335
+ <tr>
336
+ <td class="attributeIcons">
337
+ <img src="#{css_path_model}/#{css_color_class}/image/btnWarning.gif" alt="" width="25" height="25" border="0" />
338
+ </td>
339
+ <td>
340
+ <h1>
341
+ #{struts_writeMsg("errors.header")}
342
+ </h1>
343
+ </td>
344
+ </tr>
345
+ </table>
346
+ <html:messages id="error">
347
+ <p class="attributeError">
348
+ <bean:write name="error"/>
349
+ </p>
350
+ </html:messages>
351
+ </div>
352
+ </logic:messagesPresent>
353
+
354
+
355
+ END
356
+ struts_jsp_writeTabBar
357
+
358
+ write "<SCRIPT>\n"
359
+ context[:struts_tab].struts_ownedAttribute.each { |a|
360
+ next unless a.umlx_isComposite?
361
+ #next if a.umlx_oneSide?
362
+ f="createAndAdd#{a.java_NameBean}"
363
+ write %{
364
+ function #{f}(reqType) {
365
+ document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value="#{f}";
366
+ document.forms[0].#{STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME}.value=reqType;
367
+ document.forms[0].submit();
368
+ }
369
+ }
370
+ }
371
+ write "<!-- THERE -->\n"
372
+
373
+ write <<END_SCRIPT
374
+ </SCRIPT>
375
+ END_SCRIPT
376
+
377
+ write <<END
378
+ <div class="body">
379
+ <div class="bodyTop"/><div class="bodyContent">
380
+
381
+ END
382
+
383
+
384
+ write <<END
385
+
386
+ <h1>#{struts_writeMsg("#{java_qualifiedName}.title")}</h1>
387
+
388
+ #{mtk_stss{struts_jspEdit_write_Operation}}
389
+ END
390
+ struts_edit_writeForm
391
+ write <<END
392
+ </div>
393
+ <div class="bodyBottom"></div>
394
+
395
+
396
+ END
397
+ struts_footer_generate
398
+ write <<END
399
+
400
+ </div>
401
+ END
402
+ }}
403
+ end
404
+
405
+ def struts_edit_writeForm
406
+ #<html:text property="xmda_action"/>
407
+
408
+
409
+ struts_edit_writeFields
410
+ write <<END
411
+ <%-- ****** --%>
412
+ <%-- SUBMIT --%>
413
+ <%-- ****** --%>
414
+ <div>
415
+ <input type="hidden" name="#{STRUTS_REQUESTED_CREATION_TYPE_FIELD_NAME}"/>
416
+ <html:hidden property="#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}"/>
417
+ <input type="hidden" name="#{Muml_Class::STRUTS_REQUESTED_TAB}"/>
418
+ <html:hidden property="#{Muml_Class::STRUTS_SGBD_STATE}"/>
419
+ <SCRIPT>function sel(target) {document.forms[0].#{Muml_Class::STRUTS_DISPATCH_FIELD_NAME}.value=target;}</SCRIPT>
420
+ </div><br/>
421
+ <div class="boutons" align="right">
422
+ <html:submit styleClass="boutonForm" onclick="#{STRUTS_RETURN_ACTION}();return false;">#{struts_writeMsg("button.return")}</html:submit>
423
+ <html:submit styleClass="boutonForm" onclick="#{STRUTS_PROCEED_ACTION}();return false;">#{struts_writeMsg("button.validate")}</html:submit>
424
+ <%-- <html:submit onclick="sel('delete');" styleClass="boutonForm">#{struts_writeMsg("button.delete")}</html:submit> --%>
425
+ <html:reset styleClass="boutonForm">#{struts_writeMsg("button.reset")}</html:reset>
426
+ <%-- <html:cancel styleClass="boutonForm">#{struts_writeMsg("button.cancel")}</html:cancel> --%>
427
+ </div>
428
+ END
429
+ end
430
+
431
+ def struts_jspEdit_write_Operation
432
+ uml_ownedOperation.each {|biz|
433
+ next unless biz.uml_visibility_one.isPublic?
434
+ next unless biz.umlx_businessMethod?
435
+ next if biz.struts_bizOperationReverse.empty?
436
+
437
+ #TODO:recuperer le nom MPC par navigation!
438
+
439
+ #<html:form action="/#{self.java_Name}#{biz.java_Name}MPC-new.do">
440
+ #<html:id>
441
+ #<html:submit name="[#{biz.uml_name}]"/>
442
+ #</html:form>
443
+
444
+ # write %{
445
+ # <a href="" onclick="#{biz.java_Name}();return false;">
446
+ # [#{biz.java_Name}]
447
+ # </a>
448
+ # }
449
+ if context[:statemachine] && biz.java_isFsmOperation
450
+ write(%{<xmdafsm:FsmZoneTag methodName="#{biz.java_Name}" state="$\{#{self.struts_actionForm_one.java_Name}.persistedState\}">\n})
451
+ end
452
+ write %{
453
+ <html:submit styleClass="boutonForm" onclick="#{biz.java_Name}();return false;">#{struts_writeMsg("#{biz.umlx_owner_one.java_qualifiedName}.#{biz.java_Name}")}</html:submit>
454
+ }
455
+ if context[:statemachine] && biz.java_isFsmOperation
456
+ write(%{</xmdafsm:FsmZoneTag>\n})
457
+ end
458
+
459
+
460
+ }
461
+ end
462
+
463
+
464
+ def struts_edit_writeFields
465
+ context[:struts_tab].struts_ownedAttribute.each { |a|
466
+ next if a.uml_name_one=="id"
467
+ a.struts_edit_writeFieldProp(self)
468
+ }
469
+ end
470
+
471
+ end
472
+
473
+ module Muml_DataType
474
+ #error style used for form fields
475
+ STRUTS_ERROR_STYLE=%{errorStyle="background-color: yellow"}
476
+
477
+ def struts_edit_writeField(field,owner)
478
+ tpl=DatatypeMapping.instance.getMapping(self)
479
+ write tpl.getJSP(self,field,owner)
480
+ end
481
+ end
482
+ module Muml_Enumeration
483
+ def struts_edit_writeField(field,owner)
484
+ tpl=DatatypeMapping.instance.getMapping(self)
485
+ write tpl.getJSP(self,field,owner)
486
+ end
487
+ end
488
+
489
+ module Muml_Classifier
490
+ def struts_edit_writeField(field,owner)
491
+ if field.nil?
492
+ log.error { "nil field in #{self}" }
493
+ return
494
+ end
495
+ os=field.umlx_oneSide?
496
+ ic=field.umlx_isComposite?
497
+ if os && !ic
498
+ # OAS (Object Association Single)
499
+ struts_edit_writeFieldOne(field,owner)
500
+ elsif (!os) && (!ic)
501
+ # OAM (Object Association Multiple)
502
+ struts_edit_writeFieldMany(field,owner)
503
+ elsif os && ic
504
+ # OCS (Object Composition Single)
505
+ struts_edit_writeFieldOneCompo(field,owner)
506
+ elsif (!os) && ic
507
+ # OCM (Object Composition Multiple)
508
+ struts_edit_writeFieldManyCompo(field,owner)
509
+ end
510
+ end
511
+ def struts_edit_writeFieldMany(field,owner)
512
+ struts_edit_writeFieldGeneric(field,owner,true,false)
513
+ struts_edit_writeSelectAndAdd(field,owner)
514
+ end
515
+
516
+ #add label
517
+ #use every property stereotpyed Label.
518
+ #if none found, use every field
519
+ def struts_editWriteSelectAndAddLabel(field,elt,withLabelOnly=true)
520
+ emptySelection=true
521
+ field.uml_type_one.struts_formAttribute.each { |a|
522
+ #next if a.uml_name_one=="id"
523
+ next if a.uml_name_one=="owner"
524
+ next if a.uml_type_one.kind_of?(Muml_Class)
525
+ next if withLabelOnly && !(a.umlx_hasStereotype?("label"))
526
+ emptySelection=false
527
+ write %{<bean:write name="#{elt}" property="#{a.java_Name}"/>, }
528
+ }
529
+ struts_editWriteSelectAndAddLabel(field,elt,false) if emptySelection && withLabelOnly
530
+ end
531
+
532
+ def struts_edit_writeSelectAndAdd(field,owner)
533
+ return if field.uml_isReadOnly?
534
+ elt="#{field.java_Name}_add"
535
+ struts_encloseWrite( %{<select name="#{field.java_Name}_add" onchange="add#{field.java_NameBean}(value);"> \n<option>--</option>\n} ,%{</select>\n}) {
536
+ struts_encloseWrite( %{<logic:iterate id="#{elt}" name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}Sug" >\n} ,%{</logic:iterate>}) {
537
+ struts_encloseWrite( %{ <option value="<bean:write name="#{elt}" property="id"/>">\n},%{ </option> \n}) {
538
+ struts_editWriteSelectAndAddLabel(field,elt)
539
+ }}}
540
+ end
541
+
542
+ def struts_edit_writeFieldManyCompo(field,owner)
543
+ struts_edit_writeFieldCompo(field,owner,true)
544
+ end
545
+ def struts_edit_writeFieldOneCompo(field,owner)
546
+ struts_edit_writeFieldCompo(field,owner,false)
547
+ end
548
+
549
+ def struts_edit_writeFieldCompo(field,owner,isMany)
550
+ struts_edit_writeFieldGeneric(field,owner,isMany,true)
551
+ end
552
+
553
+ def struts_edit_writeFieldGenericIsCompo(field,owner,isMany,isCompo)
554
+ return unless isCompo
555
+ before=""
556
+ after=""
557
+ if !isMany
558
+ # only display creater if adding one more is ok.
559
+ before=%{<logic:empty name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}">\n}
560
+ after=%{</logic:empty>\n}
561
+ end
562
+
563
+ struts_encloseWrite( before,after) {
564
+ if context[:jspUseXmdaTaglib]
565
+ write <<END
566
+
567
+ <div style=' width:400px; overflow:left; display: none; ' class="dialog" id="Popup#{field.java_NameBean}">
568
+ <div class="alphacube_close" onclick="javascript:show_sel('#{field.java_Name}_createAndAdd');document.getElementById('Popup#{field.java_NameBean}').style.display='none';document.getElementById('add#{field.java_NameBean}').style.display='block';"> </div>
569
+ <table class="top table_window">
570
+ <tbody>
571
+ <tr>
572
+ <td class="alphacube_nw">&nbsp;</td>
573
+ <td class="alphacube_n">
574
+ <div class="alphacube_title title_window top_draggable">
575
+ #{struts_writeMsg("#{field.umlx_owner_one.java_qualifiedName}.#{field.java_Name}")}</div></td>
576
+ <td class="alphacube_ne">&nbsp;</td>
577
+ </tr>
578
+ </tbody>
579
+ </table>
580
+ <table class="mid table_window">
581
+ <tbody>
582
+ <tr>
583
+ <td class="alphacube_w"></td>
584
+ <td class="alphacube_content" valign="top">
585
+ <div class="alphacube_content">
586
+ <center><br/>
587
+ <select name="#{field.java_Name}_createAndAdd" onchange="createAndAdd#{field.java_NameBean}(options[selectedIndex].value);return false;" id="#{field.java_Name}_createAndAdd">
588
+ <xmda:i18noptionsCollection name="#{owner.java_Name}StrutsForm" property="createAndAdd#{field.java_NameBean}Sug" />
589
+ </select>
590
+ </center><br/>
591
+ </div></td>
592
+ <td class="alphacube_e"></td>
593
+ </tr>
594
+ </tbody>
595
+ </table>
596
+ <table class="bot table_window">
597
+ <tbody>
598
+ <tr>
599
+ <td class="alphacube_sw">&nbsp;</td>
600
+ <td class="alphacube_s"><div class="status_bar bottom_draggable">&nbsp;</div></td>
601
+ <td class="alphacube_sizer" >&nbsp;</td>
602
+ </tr>
603
+ </tbody>
604
+ </table>
605
+ </div>
606
+ <div style="color:#FF5400;background-color:#FAFCEB;" id='add#{field.java_NameBean}'>
607
+ <a onClick="javascript:hide_sel('#{field.java_Name}_createAndAdd');document.getElementById('Popup#{field.java_NameBean}').style.display='block';document.getElementById('add#{field.java_NameBean}').style.display='none';" >
608
+ <img src="res//orange/image/plus.gif" alt="Add" border="0" />
609
+ </a>&nbsp;&nbsp;&nbsp;<bean:message key="label.helper.none"/>
610
+ </div>
611
+
612
+ END
613
+ else
614
+ write %{
615
+
616
+ <%-- begin TPL:1006 --%>
617
+ <select name="#{field.java_Name}_createAndAdd" onchange="createAndAdd#{field.java_NameBean}(options[selectedIndex].value);return false;">
618
+ <logic:iterate id="_#{field.java_Name}" name="#{owner.java_Name}StrutsForm" property="createAndAdd#{field.java_NameBean}Sug" >
619
+ <option value="<bean:write name="_#{field.java_Name}" property="value" />" >
620
+ <bean:define id="_id">
621
+ <bean:write name="_#{field.java_Name}" property="label" />
622
+ </bean:define>
623
+ <%-- TODO: eviter entrelacement balises XML --%>
624
+ <bean:message key="<%= _id %>"/>
625
+ </option>
626
+ </logic:iterate>
627
+ </select>
628
+ <SCRIPT> <%-- TODO : supprimer javascript --%>
629
+ document.forms[0].#{field.java_Name}_createAndAdd.value="#{::Muml_Property::NIL_LVB_KEY}";
630
+ </SCRIPT>
631
+ <%-- end TPL:1006 --%>
632
+ }
633
+ end
634
+ }
635
+ end
636
+
637
+ def struts_edit_writeFieldGeneric(field,owner,isMany,isCompo)
638
+ #adds create and add section
639
+ struts_edit_writeFieldGenericIsCompo(field,owner,isMany,isCompo)
640
+
641
+ #adds table displaying already selected elements
642
+ struts_edit_writeFieldGeneric_DisplayTable(field,owner,isMany,isCompo)
643
+ end
644
+
645
+ def struts_edit_writeFieldGeneric_DisplayTable(field,owner,isMany,isCompo)
646
+ elt="elt_#{field.java_Name}"
647
+ struts_encloseWrite(%{<logic:notEmpty name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}">\n},'</logic:notEmpty>') {
648
+ if field.context[:jspUseXmdaTaglib]
649
+ struts_edit_writeFieldGeneric_DisplayTable_displayTag(field,owner,isMany,isCompo)
650
+ else
651
+ struts_edit_writeFieldGeneric_DisplayTable_strutsOnly(field,owner,isMany,isCompo)
652
+ end
653
+ }
654
+ end
655
+
656
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag(field,owner,isMany,isCompo)
657
+ elt="elt_#{field.java_Name}"
658
+ struts_encloseWrite(%{
659
+
660
+ <div class="blockScroll">
661
+ <%--
662
+ You can specify the column to sort by adding sortable="true"
663
+ By default this is the first column
664
+ --%>
665
+ <display:table id="#{elt}" name="sessionScope.#{owner.java_Name}StrutsForm.reference.#{field.java_Name}" defaultorder="descending" defaultsort="1" class="CWTable">
666
+ <display:column class='action'>
667
+ <a onclick='removeAndDelete#{field.java_NameBean}("<c:out value="${#{elt}.id}"/>");return false;' >
668
+ <img src="#{css_path_model}/#{css_color_class}/image/btnDelete.gif" alt="" border="0" height="16" width="16"/>
669
+ </a>
670
+ </display:column>
671
+ <display:column class='action'>
672
+ <a onclick='edit#{field.java_NameBean}("<c:out value="${#{elt}.id}"/>");return false;' >
673
+ <img src="#{css_path_model}/#{css_color_class}/image/btnCreate.gif" alt="" border="0" height="16" width="16"/>
674
+ </a>
675
+ </display:column>
676
+ },
677
+ %{</display:table>\n </div>
678
+
679
+ }) {
680
+ field.uml_type_one.struts_formAttribute.each { |a|
681
+ next if a.uml_name_one=="id"
682
+ next if a.uml_name_one=="owner"
683
+ t=a.uml_type_one
684
+ next unless a.uml_type_one.kind_of?(Muml_Enumeration) || a.uml_type_one.kind_of?(Muml_DataType)
685
+ tpl=DatatypeMapping.instance.getMapping(t)
686
+ tpl.struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(a)
687
+ }
688
+ }
689
+ end
690
+
691
+ def struts_edit_writeFieldGeneric_DisplayTable_strutsOnly(field,owner,isMany,isCompo)
692
+ struts_encloseWrite( %{
693
+ <table class="proprietes"><%-- T:1006 --%>
694
+ <thead><tr>
695
+ #{field.uml_isReadOnly? ? "" : "<th>&nbsp;</th>"}
696
+ <th>&nbsp;</th>
697
+ }, %{</table>\n}) {
698
+ field.uml_type_one.struts_formAttribute.each { |a|
699
+ next if a.uml_name_one=="id"
700
+ next if a.uml_name_one=="owner"
701
+ next unless a.uml_type_one.kind_of?(Muml_Enumeration) || a.uml_type_one.kind_of?(Muml_DataType)
702
+ write(%{<th><b>#{struts_writeMsg("#{a.umlx_owner_one.java_qualifiedName}.#{a.java_Name}")}</b></th>\n})
703
+ }
704
+ write %{</tr></thead>\n}
705
+
706
+ before=isMany ? %{<logic:iterate id="#{elt}" name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}" >\n} : %{<bean:define id="#{elt}" name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}" />\n}
707
+ after=isMany ? '</logic:iterate>' : '</bean>'
708
+
709
+ struts_encloseWrite(before,after) {
710
+ write %{<tr>}
711
+ write %{<td class='action'><a onclick='removeAndDelete#{field.java_NameBean}("<bean:write name="#{elt}" property="id"/>");return false;'/>#{isCompo ? "[D]" : "[R]"}</a></td>\n} unless field.uml_isReadOnly?
712
+ write %{<td class='action'><a onclick='edit#{field.java_NameBean}("<bean:write name="#{elt}" property="id"/>");return false;'/>[E]</a></td>\n}
713
+
714
+ field.uml_type_one.struts_formAttribute.each { |a|
715
+ next if a.uml_name_one=="id"
716
+ next if a.uml_name_one=="owner"
717
+ next unless a.uml_type_one.kind_of?(Muml_Enumeration) || a.uml_type_one.kind_of?(Muml_DataType)
718
+ if(a.uml_type_one.kind_of?(Muml_Enumeration))
719
+ write(%{
720
+ <td class='action'>
721
+ <%-- enum:TODO localize (use ressource) --%>
722
+ <bean:write name="#{elt}" property="#{a.java_Name}"/>
723
+ </td>
724
+ })
725
+ else
726
+ write(%{
727
+ <td class='action'>
728
+ <bean:write name="#{elt}" property="#{a.java_Name}"/>
729
+ </td>
730
+ })
731
+ end
732
+
733
+ }
734
+ write %{</tr>\n}
735
+ }
736
+ }
737
+ end
738
+
739
+ def struts_edit_writeFieldOne(field,owner)
740
+ struts_edit_writeFieldGeneric(field,owner,false,false)
741
+ write %{<logic:empty name="#{owner.java_Name}StrutsForm" property="reference.#{field.java_Name}">\n}
742
+ struts_edit_writeSelectAndAdd(field,owner)
743
+ write %{</logic:empty>\n}
744
+ end
745
+ end
746
+
747
+
748
+ module Muml_Property
749
+
750
+ def writeEnclose(before,after)
751
+ write before
752
+ yield
753
+ write after
754
+ end
755
+
756
+ #writes java code for a property
757
+ # * labels
758
+ # * editing zones
759
+ # * security management
760
+ # * help zone
761
+ def struts_edit_writeFieldProp(owner)
762
+ write(%{<xmdas:SecureZoneTag name="#{owner.java_qualifiedName}.#{java_Name}">\n}) if context[:security]
763
+ struts_edit_writeFieldPropCode(owner)
764
+ write(%{</xmdas:SecureZoneTag>\n}) if context[:security]
765
+ end
766
+
767
+ #writes java code for a property
768
+ # * labels
769
+ # * editing zones
770
+ # * help zone
771
+ def struts_edit_writeFieldPropCode(owner)
772
+
773
+ write <<END
774
+ <div class="row">
775
+ <span class="label">
776
+ #{struts_writeMsg("#{owner.java_qualifiedName}.#{java_Name}")}
777
+ </span>
778
+ END
779
+
780
+ write %{<span class="formw"><table><tr><td>\n\n}
781
+ struts_edit_writeHelpToggle
782
+ write %{</td><td>\n\n}
783
+ #Protected zone for edit area
784
+ mtk_protected(Mrdf_Resource::NOREVERSE,"edit") {
785
+ uml_type_one.struts_edit_writeField(self,owner)
786
+ }
787
+ write %{</td><td>\n\n}
788
+ struts_edit_writeValidateErrorMessage
789
+ write %{</td></tr></table>\n\n}
790
+ write("</span>\n</div>")
791
+
792
+ struts_edit_writeHelpMessage(owner)
793
+ #write("</div>")
794
+
795
+ end
796
+
797
+ def struts_edit_writeValidateErrorMessage
798
+ write %{<html:messages property="#{java_Name}" id="error"><bean:write name="error" /></html:messages>\n}
799
+ end
800
+
801
+ def struts_edit_writeHelpToggle
802
+ if uml_ownedComment.empty?
803
+ write %{<img src="#{css_path_model}/#{css_color_class}/image/vide.gif" width="25" height="25" border="0" alt="" />\n}
804
+ else
805
+ write %{<img src="#{css_path_model}/#{css_color_class}/image/btnHelp.gif" width="25" height="25" border="0" alt="help" onclick='togglehelp("#{java_Name}")' />\n}
806
+ end
807
+
808
+ end
809
+
810
+ def struts_edit_writeHelpMessage(owner)
811
+ write %{
812
+ <div class="aidelongue" id='aide_#{java_Name}'>
813
+ <span class="labelHelp">
814
+ <bean:message key="help.label"/>
815
+ </span>
816
+ <span class="contentHelp">
817
+ #{struts_writeMsg("#{owner.java_qualifiedName}.#{java_Name}.help")}
818
+ </span>
819
+ </div>
820
+
821
+ }
822
+ end
823
+
824
+ end
825
+
826
+ class DatatypeMappingText < DatatypeMapping
827
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
828
+ prop.write %{<display:column property="#{prop.java_Name}" titleKey="#{prop.umlx_owner_one.java_qualifiedName}.#{prop.java_Name}" />\n}
829
+ end
830
+ end
831
+
832
+ class DatatypeMappingOrdinal < DatatypeMappingText
833
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
834
+ prop.write %{<display:column property="#{prop.java_Name}" titleKey="#{prop.umlx_owner_one.java_qualifiedName}.#{prop.java_Name}" />\n}
835
+ end
836
+ end
837
+
838
+ class DatatypeMapping
839
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
840
+ # One decorator for every type
841
+ prop.write %{<display:column property="#{prop.java_Name}" titleKey="#{prop.umlx_owner_one.java_qualifiedName}.#{prop.java_Name}" decorator="xmda.displayTag.extensions.I18nColumnDecorator"/>\n}
842
+ end
843
+ end
844
+
845
+ class DatatypeMappingCalendar < DatatypeMapping
846
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
847
+ #TODO: on ne passe pas ici
848
+ #Note: Because Calendar and TimeStamp share the same java type (java.util.Date)
849
+ # the decorator cannot detect which is which.
850
+ prop.write %{<display:column property="#{prop.java_Name}" titleKey="#{prop.umlx_owner_one.java_qualifiedName}.#{prop.java_Name}" decorator="xmda.displayTag.extensions.I18nCalendarColumnDecorator" />\n}
851
+ end
852
+ end
853
+
854
+ class DatatypeMappingTimeStamp < DatatypeMapping
855
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
856
+ #Note: Because Calendar and TimeStamp share the same java type (java.util.Date)
857
+ # the decorator cannot detect which is which.
858
+ prop.write %{<display:column property="#{prop.java_Name}" titleKey="#{prop.umlx_owner_one.java_qualifiedName}.#{prop.java_Name}" decorator="xmda.displayTag.extensions.I18nColumnDecorator" />\n}
859
+ end
860
+ end
861
+
862
+ class DatatypeMappingGRAPHVIZ < DatatypeMappingLargeText
863
+ def struts_edit_writeFieldGeneric_DisplayTable_displayTag_column(prop)
864
+ #we don't display graphviz into table (but we could)
865
+ prop.write %{<%-- skip graphviz field #{prop.java_Name} --%>\n}
866
+ end
867
+ end
868
+
869
+
870
+