Quintiq file version 2.0 
 | 
#parent: CustomDrawComponentRoutingConfigurator/CustomDrawDataLayerOperationInputGroupEdge 
 | 
Response OnDrawObject ( 
 | 
  OperationInputGroupEdge object 
 | 
) id:Response_CustomDrawComponentRoutingConfigurator_CustomDrawDataLayerOperationInputGroupEdge_OnDrawObject 
 | 
{ 
 | 
  #keys: '[136682.0.487067637]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Draw PISP Operation Input Edge 
 | 
    rcv := DataHolderRCView.Data(); 
 | 
     
 | 
    // Adjust line based on its orientations 
 | 
    topdown := object.FromY() < object.ToY(); 
 | 
    leftright := object.FromX() < object.ToX(); 
 | 
    padding := 6; 
 | 
     
 | 
    fromy := region.Top() + padding; 
 | 
    toy := region.Height() - padding; 
 | 
     
 | 
    inputs := selectset( object, OperationInputGroup.OperationInput, input, true ); 
 | 
    if( topdown ) 
 | 
    { 
 | 
      if( not leftright ) 
 | 
      { 
 | 
        fromy := region.Top() + padding; 
 | 
        toy := region.Height() - padding; 
 | 
      } 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      if( leftright ) 
 | 
      { 
 | 
        fromy := region.Height() - padding; 
 | 
        toy := region.Top() + padding; 
 | 
      } 
 | 
    } 
 | 
     
 | 
     
 | 
    surface.Brush().Reset(); // strange. without this line, the arrow head will not be filled. 
 | 
    surface.Pen().Color( ColorScheme.Outline() ); 
 | 
    surface.Brush().Color( ColorScheme.Outline() ); // to paint the solid arrowhead 
 | 
     
 | 
     
 | 
    // Highlight operation input outputs related to this edge 
 | 
    operationinputs := selectset( DataHolderHighlightOperationInputOutputNode.Data(), 
 | 
                                  Elements.astype( OperationInput ), 
 | 
                                  e, 
 | 
                                  true, 
 | 
                                  true ); 
 | 
    ois := inputs.Intersect( operationinputs );  
 | 
    pispnodes := selectset( inputs, Elements.PISPNodeInRouting, pispr, true ); 
 | 
    inpisnodeshighlight := pispnodes.Intersect( DataHolderHighlightPISPNodeInRouting.Data() );   
 | 
     
 | 
    highlight := ois.Size() >0 or inpisnodeshighlight.Size() >0;  
 | 
    if( highlight ) 
 | 
    { 
 | 
      surface.Brush().Reset(); // strange. without this line, the arrow head will not be filled. 
 | 
      surface.Pen().Color( Color::DarkGreen() ); 
 | 
      surface.Brush().Color( Color::DarkGreen() ); // to paint the solid arrowhead 
 | 
    } 
 | 
     
 | 
    surface.Pen().Style( PenSpecification::StyleSolid() ); 
 | 
    surface.Pen().Width( rcv.EdgeThickness() ); 
 | 
     
 | 
    // Draw the directional line 
 | 
    line := GraphicalLine::LineTo( region.Left(), fromy, region.Width(), toy ); 
 | 
    line.ArrowToEnd( true ).ArrowPos( GraphicalLine::ArrowPosMiddle() ); 
 | 
    surface.Draw( line ); 
 | 
  *] 
 | 
  CanBindMultiple: false 
 | 
  DefinitionID: 'Responsedef_CustomDrawDataLayer_OnDrawObject' 
 | 
  Precondition: 
 | 
  [* 
 | 
    return object.IsVisible(); 
 | 
  *] 
 | 
} 
 |