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