Project

General

Profile

4589_4.patch

Sergey Ivanovskiy, 03/19/2020 04:03 PM

Download (9.63 KB)

View differences:

rules/annotations/menu_scoping.rules 2020-03-19 19:42:27 +0000
89 89
   <variable name="parentId"    type="java.lang.Long" />
90 90
   <variable name="defRef"      type="com.goldencode.ast.Aast" />
91 91

  
92
   <!-- Map menus, submenus, menu items to their javanames -->
93
   <variable name="keys_jnames" type="java.util.Map" />
94
   <variable name="menukey"     type="java.lang.String" />
95
   <variable name="jname"       type="java.lang.String" />
96
    
92 97
   <!--
93 98
      Map of unqualified MENU-ITEMs to their resolved MENUs,
94 99
      the map key is MENU-ITEM and the value is DEFINE MENU Ast
......
119 124
         <return    name="cur"   type="java.lang.String" />
120 125
          
121 126
         <rule>true
122
            <action>parnt = sm_menus.get(sm)</action>
127
            <action>parnt = sm_menus.get(sm.toLowerCase())</action>
128
            <action>printfln("find_sm_menu-> %s = sm_menus.get(%s)", parnt, sm)</action>
123 129
            <action>cur = parnt</action>
124 130
            <while>parnt != null and sm_menus.containsKey(parnt)
125
               <!--<action>printfln("parnt: %s, sm_menus.get(parnt): %s", parnt, sm_menus.get(parnt))</action>-->
131
               <action>printfln("parnt: %s, sm_menus.get(parnt): %s", parnt, sm_menus.get(parnt))</action>
126 132
               <action>cur = sprintf("%s.%s", sm_menus.get(parnt), parnt)</action>
127 133
               <action>parnt = sm_menus.get(parnt)</action>
128 134
            </while>
......
135 141
         <return    name="res"   type="java.lang.Boolean" />
136 142

  
137 143
         <rule>true
138
            <action>sm = names.convert(smRef.text, names.variable)</action>
144
            <action>sm = names.convert(smRef.text.toLowerCase(), names.variable)</action>
145
            <action>printfln("is_submenu-> %s = names.convert(%s, names.variable)", sm, smRef.text)</action>
139 146
            <action>res = sm_menus.containsKey(sm)</action>
140 147
         </rule>
141 148
      </function>
......
143 150

  
144 151
   <init-rules>
145 152
      <rule>menu_defs = #(java.util.Map) create('java.util.HashMap')</rule>
153
      <rule>keys_jnames = #(java.util.Map) create('java.util.HashMap')</rule>
146 154
      <rule>sm_menus = #(java.util.Map) create('java.util.HashMap')</rule>
147 155
      <rule>items = #(java.util.Map) create('java.util.HashMap')</rule>
148 156
      <rule>items_subs = #(java.util.Map) create('java.util.HashMap')</rule>
......
158 166
   <walk-rules>
159 167
      <rule>type == prog.define_menu
160 168
         <action>menu_defs.put(getNoteString("name").toLowerCase(), this.id)</action>
169
         <action>printfln("menu_defs.put(%s, %s)", getNoteString("name"), this.id)</action>
170
         <action>keys_jnames.put(getNoteString("name").toLowerCase(), this.getAnnotation("javaname"))</action>
161 171
      </rule>
162 172
      <rule>type == prog.wid_menu and menu_defs.containsKey(this.text.toLowerCase())
163 173
         <action>putNote("refid", #(long) menu_defs.get(this.text.toLowerCase()))</action>
......
169 179
      <rule>type == prog.wid_sub_menu and
170 180
            parent.type == prog.kw_sub_menu 
171 181
           
172
         <action>submenu = names.convert(text, names.variable)</action>
173
 
182
         <action>submenu = names.convert(text.toLowerCase(), names.variable)</action>
183
         <action>printfln("%s = names.convert(%s, names.variable)", submenu, text)</action>
184
         
174 185
         <rule>parent.parent != null and
175 186
               (parent.parent.type == prog.define_menu or
176 187
               parent.parent.type == prog.define_sub_menu) and 
177 188
               !sm_menus.containsKey(submenu) 
178 189
            <action>menu = parent.parent.getAnnotation("name")</action>
179 190
            <action>menu = names.convert(menu, names.variable)</action>
180
            <!--<action>printfln("adding %s to %s", submenu, menu)</action>-->
191
            <action>printfln("adding %s to %s", submenu, menu)</action>
181 192
            <action>sm_menus.put(submenu, menu)</action>
182 193
         </rule>
183 194

  
......
198 209
               <action>ref = ref.getImmediateChild(wid_m_or_sm, null)</action>
199 210
               <action>
200 211
                  putNote(sprintf("IN_%s", ref.getSymbolicTokenType()), 
201
                          names.convert(ref.text, names.variable))
212
                          keys_jnames.get(ref.text))
202 213
               </action>
203 214
               <action>
204 215
                  putNote(sprintf("IN_%s_ID", ref.getSymbolicTokenType()), ref.id)
......
206 217
            </rule>
207 218
      </rule>
208 219

  
220
      <rule>type == prog.define_sub_menu
221
         <action>menukey = getNoteString("name")</action>
222
         <rule> menukey != null
223
            <action>keys_jnames.put(menukey.toLowerCase(), this.getAnnotation("javaname"))</action>
224
         </rule>
225
      </rule>
226

  
209 227
      <!--
210 228
         MENU-ITEM and SUB-MENU with the same name can appear in multiple MENUs and/or SUB-MENUs. When
211 229
         referencing unqualified MENU-ITEMs or SUB-MENUs (SUB-MENU and/or MENU qualifiers missing) in WAIT-FOR
......
224 242
      -->
225 243
      <rule>type == prog.kw_menu_itm and parent.type == prog.define_menu
226 244
         <action>item = names.convert(#(java.lang.String) this.getAnnotation("name"), names.variable)</action>
227
         <action>items.put(item, parent)</action>
245
         <action>items.put(item.toLowerCase(), parent)</action>
246
         <action>printfln("items.put(%s, parent)", item)</action>
228 247
      </rule>
229 248

  
249
      
230 250
      <rule>type == prog.kw_menu_itm and parent.type == prog.define_sub_menu
231 251
         <action>item = names.convert(#(java.lang.String) this.getAnnotation("name"), names.variable)</action>
232
         <rule>!items.containsKey(item)
233
            <action>list = items_subs.get(item)</action>
252
         <action>printfln("%s= names.convert(%s, names.variable)", item, this.getAnnotation("name"))</action>
253
         <action>keys_jnames.put(item.toLowerCase(), this.getAnnotation("javaname"))</action>
254
         <rule>!items.containsKey(item.toLowerCase())
255
            <action>list = items_subs.get(item.toLowerCase())</action>
234 256
            <rule>list == null
235 257
               <action>list = #(java.util.List) create("java.util.ArrayList")</action>
236
               <action>items_subs.put(item, list)</action>
258
               <action>items_subs.put(item.toLowerCase(), list)</action>
259
               <action>printfln("items_subs.put(%s, list)", item)</action>
237 260
            </rule>
238 261
            <action>list.add(parent)</action>
239 262
         </rule>
......
263 286
                  <action>symToken = "wid_sub_menu"</action>
264 287
                  <action on="false">symToken = ref.getSymbolicTokenType()</action>
265 288
               </rule>
289
              <action>jname = keys_jnames.get(ref.text.toLowerCase())</action>
290
               <rule>jname != null
291
                  <action>
292
                     putNote(sprintf("IN_%s", symToken), jname)
293
                  </action>
294
                  <action on="false">
295
                     putNote(sprintf("IN_%s", symToken), names.convert(ref.text, names.variable))
296
                  </action>
297
                  <action on="false">
298
                     printfln("putNote(%s, %s)", sprintf("IN_%s", symToken), names.convert(ref.text, names.variable))
299
                  </action>
300
               </rule>
266 301
               <action>
267
                  putNote(sprintf("IN_%s", symToken), names.convert(ref.text, names.variable))
302
                  printfln("putNote(sprintf('IN_ s', symToken), names.convert(%s, names.variable))", ref.text)
268 303
               </action>
269 304
               <action>
270 305
                  putNote(sprintf("IN_%s_ID", symToken), ref.id)
......
272 307
            </rule>
273 308

  
274 309
            <rule>ref == null
275
               <action>ref = items.get(names.convert(text, names.variable))</action>
310
               <action>ref = items.get(names.convert(text.toLowerCase(), names.variable))</action>
311
               <action>printfln("ref = items.get(names.convert(%s, names.variable))", text)</action>
276 312
            </rule>
277 313

  
278 314
            <rule>ref != null
......
308 344
              #(java.lang.Boolean) execLib("is_submenu", this))) and
309 345
             parent.parent.type != prog.define_menu and
310 346
             parent.parent.type != prog.define_sub_menu
311
         <action>menu = execLib("find_sm_menu", names.convert(text, names.variable))</action>
347
         <action>menu = execLib("find_sm_menu", names.convert(text.toLowerCase(), names.variable))</action>
348
         <action>printfln("menu = execLib('find_sm_menu', names.convert(%s, names.variable))", text)</action>
312 349
         <rule>menu != null
313 350
            <action>putNote("first-menu-path", menu)</action>
314 351
            <action>putNote("in_wid_menu", menu)</action>
rules/convert/methods_attributes.rules 2020-03-18 18:59:30 +0000
4939 4939
                    implementation -->
4940 4940
               <rule>ftype == prog.kw_handle and 
4941 4941
                          (evalLib("widgettype", ref.type) or
4942
                           ref.type == prog.kw_menu_itm    or
4942 4943
                           ref.type == prog.kw_sub_menu    or
4943 4944
                           ref.type == prog.kw_menu)
4944 4945
                  <action>hwrap = "Widget"</action>
src/com/goldencode/p2j/admin/AdminAppBase.gwt.xml 2020-03-19 09:42:34 +0000
101 101
  <inherits name="org.gwtbootstrap3.extras.select.Select"/>
102 102

  
103 103
  <!-- Uncomment to save time during development -->
104
  <!--<set-property name='user.agent' value='gecko1_8,safari'/>-->
104
  <set-property name='user.agent' value='gecko1_8'/>
105 105

  
106 106
  <set-property name='locale' value='default'/>
107 107