| Quintiq file version 2.0 | 
| #parent: #root | 
| Method ParseMenu (Menu component) id:Method_GlobalStateTestGenerator_ParseMenu_22 | 
| { | 
|   #keys: '[142876.9.493604446]' | 
|   Body: | 
|   [* | 
|     name := ''; | 
|     title := ''; | 
|     formkey := Key::ZeroKey(); | 
|     dialogkey := Key::ZeroKey(); | 
|      | 
|     if( component.istype( ComponentMenu ) ) | 
|     { | 
|       name := component.astype( ComponentMenu ).GetProperty( 'ComponentType' ); | 
|       GlobalStateTestGenerator.GetFormProperties( name, title, formkey ); | 
|     } | 
|     else | 
|     { | 
|       name := component.Text(); | 
|       title := '{TODO_TITLE}'; // TODO | 
|        | 
|       componentname := component.Display().Tokenize( '.' ).Reverse().Element( 0 ); | 
|       cd := select( ApplicationScope.Project().ComponentRegistry().GetAllComponents(), | 
|                     Elements, | 
|                     mcd, | 
|                     mcd.Name() = componentname ); | 
|        | 
|       if( not isnull( cd ) ) | 
|       { | 
|         dialogname := ''; | 
|         traverse( cd.Responses(), Responses, response, | 
|                   dialogname = '' ) | 
|         { | 
|           impl := response.Implementation().astype( ModeledResponseQuillImplementation ); | 
|           dialogname := GlobalStateTestGenerator.GetDialogNameFromResponse( impl ); | 
|         } | 
|          | 
|         if( dialogname <> '' ) | 
|         { | 
|           try | 
|           { | 
|             newdialog := construct( Dialog, dialogname ); | 
|             name := dialogname; | 
|             dialogkey := newdialog.Key(); | 
|             title := newdialog.Title(); | 
|           } | 
|           onerror | 
|           { | 
|           } | 
|         } | 
|       } | 
|     } | 
|      | 
|     if( formkey <> Key::ZeroKey() ) | 
|     { | 
|       try | 
|       { | 
|         newform := construct( Form, name ); | 
|         form := TG_UIForm::FindOrCreate( TestGenerator, name, title, formkey ); | 
|         GlobalStateTestGenerator.ParseForm( form, newform ); | 
|       } | 
|       onerror | 
|       { | 
|         newdialog := construct( Dialog, name ); | 
|         dialogkey := newdialog.Key(); | 
|          | 
|         dialog := TG_UIDialog::FindOrCreate( TestGenerator, name, title, dialogkey ); | 
|         GlobalStateTestGenerator.ParseDialog( dialog, construct( Dialog, name ) ); | 
|       } | 
|     } | 
|     else if( dialogkey <> Key::ZeroKey() ) | 
|     { | 
|       dialog := TG_UIDialog::FindOrCreate( TestGenerator, name, title, dialogkey ); | 
|       GlobalStateTestGenerator.ParseDialog( dialog, construct( Dialog, name ) ); | 
|     } | 
|      | 
|     traverse( component, SubComponents.astype( Menu ), child ) | 
|     { | 
|       this.ParseMenu( child ); | 
|     } | 
|   *] | 
| } |