UF_QRY02 Listening for General Framework Objects And View Their Properties

Visual LANSA Framework

UF_QRY02 - Listening for General Framework Objects And View Their Properties
  • =============================================================================
    *
    * Component   : UF_QRY02
    * Type        : Reusable Component
    * Ancestor    : VF_AC010 (Command Handler)
    *
    * PLEASE NOTE:  This UF_ (User Framework) component is the shipped version. You
    * may choose to modify it. You should do this by copying the source
    * code of this component into your own component and then change
    * the copied version. This will prevent the accidental loss of your
    * changes if you upgrade your Visual LANSA framework version. Refer
    * to the end of this component for more details about making your
    * own version of this component.
    *
    * This is example code only - No warranty is expressed or implied.
    * Neither this program, nor any derivative of it, should be ever be used in
    * production or end-user environments.
    *
    * =============================================================================
    *
    * This demonstrates how to listen for general Framework objects and view their properties
    * =============================================================================
    Function Options(*DIRECT)
    Begin_Com Role(*EXTENDS #VF_AC010) Height(336) Layoutmanager(#ATLM_2) Width(552)
    * ================================================================================
    * Simple Field and Group Definitions
    * ================================================================================
    * ================================================================================
    * Component definitions
    * ================================================================================

    * Body and Button arrangement panels

    Define_Com Class(#PRIM_PANL) Name(#BUTTON_PANEL) Displayposition(2) Height(336) Layoutmanager(#BUTTON_FLOW) Left(464) Parent(#COM_OWNER) Tabposition(2) Tabstop(False) Top(0) Width(88)
    Define_Com Class(#PRIM_PANL) Name(#BODY_HEAD) Displayposition(1) Height(336) Layoutmanager(#ATLM_1) Left(0) Parent(#COM_OWNER) Tabposition(1) Tabstop(False) Top(0) Verticalscroll(True) Width(464)


    * Attachment and flow layout managers

    Define_Com Class(#PRIM_ATLM) Name(#MAIN_LAYOUT)
    Define_Com Class(#PRIM_ATLI) Name(#BUTTON_ATTACH) Attachment(Right) Manage(#BUTTON_PANEL) Parent(#MAIN_LAYOUT)
    Define_Com Class(#PRIM_FWLM) Name(#BUTTON_FLOW) Direction(TopToBottom) Flowoperation(Center) Marginbottom(4) Marginleft(4) Marginright(4) Margintop(4) Spacing(4) Spacingitems(4)

    Define_Com Class(#PRIM_ATLI) Name(#BODY_ATTACH) Attachment(Center) Manage(#BODY_HEAD) Parent(#MAIN_LAYOUT)

    * The report button

    Define_Com Class(#PRIM_PHBN) Name(#PHBN_REPORT) Buttondefault(True) Caption('Report') Displayposition(1) Left(4) Parent(#BUTTON_PANEL) Tabposition(1) Top(4)
    Define_Com Class(#PRIM_FWLI) Name(#FWLI_SAVE_BUTTON) Manage(#PHBN_REPORT) Parent(#BUTTON_FLOW)

    * The Traverse component
    Define_Com Class(#UF_TRVRS) Name(#UF_TRVRS)
    Define_Com Class(#PRIM_GRID) Name(#LTVW_1) Displayposition(1) Height(332) Left(2) Parent(#BODY_HEAD) Rowresize(True) Showsortarrow(True) Tabposition(1) Top(2) Width(460)
    Define_Com Class(#PRIM_GDCL) Name(#LVCL_1) Caption('Parent Framework') Captiontype(Caption) Displayposition(1) Parent(#LTVW_1) Source(#FP_EKEY1) Width(12)
    Define_Com Class(#PRIM_GDCL) Name(#LVCL_2) Caption('Parent Application') Captiontype(Caption) Displayposition(2) Parent(#LTVW_1) Source(#FP_EKEY2) Width(12)
    Define_Com Class(#PRIM_GDCL) Name(#LVCL_3) Caption('Parent Business Object') Captiontype(Caption) Displayposition(3) Parent(#LTVW_1) Source(#FP_EKEY3) Width(17)
    Define_Com Class(#PRIM_GDCL) Name(#LVCL_4) Displayposition(4) Parent(#LTVW_1) Source(#DF_ELTXTL) Widthtype(Remainder)
    Define_Com Class(#PRIM_ATLM) Name(#ATLM_1) Marginbottom(2) Marginleft(2) Marginright(2) Margintop(2)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_1) Attachment(Center) Parent(#ATLM_1)
    Define_Com Class(#PRIM_ATLM) Name(#ATLM_2)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_2) Attachment(Center) Manage(#BODY_HEAD) Parent(#ATLM_2)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_3) Attachment(Right) Manage(#BUTTON_PANEL) Parent(#ATLM_2)
    Define_Com Class(#PRIM_ATLI) Name(#ATLI_4) Attachment(Center) Manage(#LTVW_1) Parent(#ATLM_1)


    * Framework - class #VF_FP001 #TempVF_FP001 Reference(*Dynamic)
    * Application - class #VF_FP002 #TempVF_FP002 Reference(*Dynamic)
    * Business Object - class #VF_FP003 #TempVF_FP003 Reference(*Dynamic)
    * Command - class #VF_FPM09 #TempVF_FPM09 Reference(*Dynamic)
    * Command Usage - class #VF_FPM10 #TempVF_FPM10 Reference(*Dynamic)
    * Filter - class #VF_FPM14 #TempVF_FPM14 Reference(*Dynamic)

    * ================================================================================
    * Events Definitions
    * ================================================================================

    * ================================================================================
    * Property Definitions
    * ================================================================================

    * ================================================================================
    * Method Definitions
    * ================================================================================
    * --------------------------------------------------------------------------------
    * Handle Command Execution
    * --------------------------------------------------------------------------------

    Mthroutine Name(uExecute) Options(*REDEFINE)

    * The return code field and testing condition

    Define #Ret_Code reffld(#IO$STS)
    Def_cond Name(*RetOkay) Cond('#Ret_Code = OK')

    * Do any execution logic defined in the ancestor

    Invoke #Com_Ancestor.uExecute


    Endroutine

    * ================================================================================
    * Subroutines
    * ================================================================================

    * ================================================================================
    * Event Handlers
    * ================================================================================

    * --------------------------------------------------------------------------------
    * Handle the save button
    * --------------------------------------------------------------------------------

    EVTROUTINE HANDLING(#PHBN_REPORT.Click)

    * Tell the Traverse reusable part to read through the entire system in no particular order
    * This program listens for the signals for each new object,

    clr_list #LTVW_1
    invoke #UF_TRVRS.uTraverseFramework


    ENDROUTINE

    * Listen for  a Framework Object

    EVTROUTINE HANDLING(#UF_TRVRS.Framework) Reference(#TempVF_FP001)

    * Output generic details
    Invoke #Com_Owner.uOutputGeneric  uLevel(1) uType('Framework') uObject(#TempVF_FP001)

    add_entry #LTVW_1

    * Store a reference to the object against the list line
    Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP001)


    ENDROUTINE

    * Listen for an Application Object

    EVTROUTINE HANDLING(#UF_TRVRS.Application) Reference(#TempVF_FP002) VisParent1(#TempVF_FP001)

    * Output generic details
    Invoke #Com_Owner.uOutputGeneric  uLevel(2)  uType('Application') uObject(#TempVF_FP002) VisParent1(#TempVF_FP001)

    * For more details of the application object, click on #TempVF_FP002 above and press F2, and look at the properties of class VF_FP002

    add_entry #LTVW_1

    * Store a reference to the object against the list line
    Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP002)


    ENDROUTINE

    * Listen for a Business Object  Object

    EVTROUTINE HANDLING(#UF_TRVRS.BusinessObject) Reference(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002)

    * Output generic details
    Invoke #Com_Owner.uOutputGeneric  uLevel(3)  uType('Business Object') uObject(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002)

    * For more details of the business object object, click on #TempVF_FP003 above and press F2, and look at the properties of class VF_FP003

    add_entry #LTVW_1

    * Store a reference to the object against the list line
    Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FP003)


    ENDROUTINE

    * Listen for a Filter  Object

    EVTROUTINE HANDLING(#UF_TRVRS.Filter) Reference(#TempVF_FPM14) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * Output generic details
    Invoke #Com_Owner.uOutputGeneric  uLevel(3)  uType('Business Object') uObject(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * Specific details
    * For more details of the filter object, click on #TempVF_FPM14 above and press F2, and look at the properties of class VF_FPM14

    #DF_ELTXTL := 'Filter  ' + #TempVF_FPM14.uCaption + 'Snap in windows filter ' + #TempVF_FPM14.uFilterName + ' Snap In Web function ' + #TempVF_FPM14.uWebFilterFunction + ' ' + 'Snap in wam filter ' + #TempVF_FPM14.uWAMComponent

    add_entry #LTVW_1


    * Store a reference to the object against the list line
    Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FPM14)


    ENDROUTINE

    * Listen for a Command Usage (Command Reference)  Object

    EVTROUTINE HANDLING(#UF_TRVRS.CommandReference) Reference(#TempVF_FPM10) CommandDefinition(#TempVF_FPM09) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * Output generic details
    Invoke #Com_Owner.uOutputGeneric  uLevel(3)  uType('Command Reference')  VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * Specific details

    * Some of the details are on the Command Object (VF_FPM09)
    * Most of the details are on the Command Reference Object (VF_FPM10)

    * For more details of the Command and command reference objects, click on #TempVF_FPM09 or #TempVF_FPM10 above and press F2, and look at the properties of classes VF_FPM09 and VF_FPM10

    #DF_ELTXTL := 'Command  ' + #TempVF_FPM09.uCaption + ' Snap in windows handler ' + #TempVF_FPM10.uHandlerName + ' Snap In Web function ' + #TempVF_FPM10.uWebHandlerFunction + ' ' + ' Snap in wam handler ' + #TempVF_FPM10.uWAMComponent + ' uWAM' + #TempVF_FPM10.uWAM

    add_entry #LTVW_1

    * Store a reference to the object against the list line
    Set Com(#ltvw_1.currentitem) Relatedreference(#TempVF_FPM10)


    ENDROUTINE

    * Output a line of description of the object

    mthroutine uOutputGeneric
    define_map *input #std_num #uLevel
    define_map *input #df_elmsg #uType
    Define_Map For(*input) Class(#vf_fp001) Name(#VisParent1) Mandatory(*NULL) Pass(*BY_REFERENCE)
    Define_Map For(*input) Class(#vf_fp002) Name(#VisParent2) Mandatory(*NULL) Pass(*BY_REFERENCE)
    Define_Map For(*input) Class(#vf_fp003) Name(#VisParent3) Mandatory(*NULL) Pass(*BY_REFERENCE)
    Define_Map For(*input) Class(#vf_ac001) Name(#uObject) Mandatory(*NULL)  Pass(*BY_REFERENCE)

    * Parent Details
    Change (#FP_EKEY1 #FP_EKEY2 #FP_EKEY3) *null

    * Parent 1 details
    if_ref #VisParent1 is_not(*null)
    Change #FP_EKEY1 #VisParent1.uUserObjectType
    endif

    * Parent 2 details
    if_ref #VisParent2 is_not(*null)
    Change #FP_EKEY2 #VisParent2.uUserObjectType
    endif

    * Parent 3 details
    if_ref #VisParent3 is_not(*null)
    Change #FP_EKEY3 #VisParent3.uUserObjectType
    endif

    * Object details
    if_ref #uObject is_not(*null)
    #DF_ELTXTL := #uType + ' ' + #uObject.uCaption + ' ' + #uObject.uIdentifier + ' ' + #uObject.uUserObjectType
    endif


    endroutine

    End_Com