| Quintiq file version 2.0 | 
| #parent: #root | 
| Method PanelSearchProducts () id:Method_ApplicationLibMacroPlanner_PanelSearchProducts | 
| { | 
|   #keys: '[113694.2.1027230159]' | 
|   Body: | 
|   [* | 
|     // Search products by string, highlight & select the instances in the list. | 
|     if( not isnull( MacroPlan ) ) | 
|     {  | 
|       ApplicationLibMacroPlanner.SetFilters(); // to retain the checkbox filters  | 
|       filter := GUIDataSetLevelProducts.FixedFilter(); | 
|        | 
|       if( EditorSearchProduct.Text() <> '' ) | 
|       { | 
|         products := MacroPlan.GetProductsByName( EditorSearchProduct.Text() ); | 
|          | 
|         if( products.Size() < 1000 ) // Performance cap | 
|         { | 
|           DataHolderProducts.Data( products.Copy() ); | 
|            | 
|           // Using recursive IsParentin filter is very expensive, so we add the parent to the dataholder and do a simpel exists filter | 
|           productswithparents := Product_MP::GetAllParents( products ); | 
|           productswithparents := productswithparents.Union( products );            | 
|           DataHolderSearchProduct.Data( productswithparents.Copy() ); | 
|                | 
|           filter := filter + ' and exists( dataholdersearchproduct, Elements, e, e = object ) '; // to retain the checkbox filters      | 
|         }       | 
|       } | 
|       GUIDataSetLevelProducts.FixedFilter( filter ); | 
|     } | 
|   *] | 
| } |