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 ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |