| Quintiq file version 2.0 | 
| #parent: ListIssue | 
| Response OnClick ( | 
|   structured[LibOpt_Issue] selection | 
| ) id:Response_ListIssue_MenuSelectRelatedIterationsAndSnapshots_OnClick | 
| { | 
|   #keys: '[142652.0.1967257548]' | 
|   Body: | 
|   [* | 
|     // Select the Iterations in ListIteration and Snapshots in ListSnapshot for the Issues selected here. | 
|      | 
|     listiteration := LibOpt_GlobalState.GetActivatedFormIteration().ListIteration(); | 
|      | 
|     // See comment about WORKAROUND below. | 
|     formsnapshot := LibOpt_GlobalState.GetActivatedFormSnapshot(); | 
|     listsnapshot := formsnapshot.ListSnapshot(); | 
|      | 
|     formscopeelement := LibOpt_GlobalState.GetActivatedFormScopeElement(); | 
|      | 
|     // Select the related Iterations and Snapshots. | 
|     traverse( selection, Elements, issue ) | 
|     { | 
|       // Select Iterations. | 
|       traverse( issue.Statistic().GetIterations( issue ), Elements, iteration ) | 
|       { | 
|         listiteration.ExtendSelectByKey( iteration.Key() ); | 
|       } | 
|        | 
|       // Select Snapshots. | 
|       traverse( issue.Statistic().GetSnapshots( issue ), Elements, snapshot ) | 
|       { | 
|         listsnapshot.ExtendSelectByKey( snapshot.Key() ); | 
|       } | 
|     } | 
|      | 
|      | 
|     /*  WORKAROUND: | 
|          | 
|         Even though we have called the `GetActivatedFormSnapshot` method above, LibOpt_FormSnapshot doesn't | 
|         get activated accordingly because the method is called right after `GetActivatedFormIteration`, | 
|         where LibOpt_FormIteration is activated. | 
|         This is a known software limitation (that is yet to be solved) as documented in: | 
|         - https://support.quintiq.com/cs:solutions:trouble:form.activate_doesn_t_work_for_second_form | 
|          | 
|         As such, we use a workaround where we activate LibOpt_FormSnapshot in the `OnTimer` response of the | 
|         GUITimerActivateFormSnapshot component, which `Interval` has been set to 500ms. | 
|         - 500ms was used because lower values don't result in the intended behavior of activating the form. | 
|     */ | 
|     // Enable the GUITimerActivateFormSnapshot component. | 
|     // When the timer's Interval is used up, LibOpt_FormSnapshot is activated, and the timer is disabled. | 
|     formsnapshot.GUITimerActivateFormSnapshot().Enabled( true ); | 
|      | 
|     interval := formsnapshot.GUITimerActivateFormSnapshot().Interval(); | 
|     formscopeelement.GUITimerActivateFormScopeElement().Interval( 2 * interval ); | 
|     formscopeelement.GUITimerActivateFormScopeElement().Enabled( true ); | 
|   *] | 
|   DefinitionID => /ListIssue/Responsedef_ListIssue_Menu_OnClick | 
|   Initiator: 'MenuSelectRelatedIterationsAndSnapshots' | 
|   Precondition: | 
|   [* | 
|     return LibOpt_Issue::SelectRelatedIterationsAndSnapshotsPrecondition( selection ); | 
|   *] | 
| } |