| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SelectScenarioReadOnly ( | 
|   Scenario scenario | 
| ) as Boolean id:Method_ApplicationLibMacroPlanner_SelectScenarioReadOnly | 
| { | 
|   #keys: '[144528.3.487223653]' | 
|   Body: | 
|   [* | 
|     // Select the active MacroPlan based on passed in scenario | 
|     // Set active MacroPlan to the application | 
|     // ComponentMDS::Create( Application ) is not available in Editor -- still finding, if exist, all this code will be moved. | 
|     status := false; | 
|      | 
|     if( not isnull( scenario ) ) | 
|     { | 
|       loop := true; | 
|       p := Progress::Level( 'Loading scenario...', 10 ); | 
|      | 
|       // changed the operation in "p.Current() < p.Maximum()" from <= to < as p.Maximum will never be reached | 
|       // causing an infinite loop when a dataset is no longer available | 
|       while( loop and p.Current() < p.Maximum() ) | 
|       { | 
|         componentmds := ComponentMDS::CreateForLoadedMDSsOnly( Application ); | 
|         mdsinstance := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = scenario.DatasetMDSID() ); | 
|      | 
|         if( not isnull( mdsinstance ) ) | 
|         { | 
|           mdsinstance.ComponentMDSKind().SelectInstance( mdsinstance ); | 
|           componentmds.Apply(); | 
|           // To set the data holder if only a scenario has changed. | 
|           if( DataHolderActiveScenario.Data() <> scenario ) | 
|           { | 
|             DataHolderActiveScenario.Data( scenario ); | 
|           } | 
|           status := true; | 
|           loop := false; | 
|         } | 
|         p.Increment(); | 
|       } | 
|     } | 
|      | 
|     return status; | 
|   *] | 
| } |