| Quintiq file version 2.0 | 
| #parent: #root | 
| Method MoveAfter (LibOpt_UIGraphNode node, LibOpt_UIGraphNode after, Boolean reposition_children) | 
| { | 
|   TextBody: | 
|   [* | 
|     if( after <> node | 
|         and ( isnull( after ) or after <> node.Previous() ) | 
|         and ( not isnull( after ) or not isnull( node.Previous() ) ) ) | 
|     { | 
|       if( isnull( node ) ) | 
|       { | 
|         node.UIGraphRow().MoveFirst( node ); | 
|       } | 
|       else | 
|       { | 
|         node.UIGraphRow().MoveAfter( node, after ); | 
|       } | 
|        | 
|       // Set column | 
|       traverse( node, UIGraphRow.UIGraphNode, n ) | 
|       { | 
|         n.Column( guard( n.Previous().Column() + 1, 0 ) ); | 
|       } | 
|        | 
|       // Reset arcs | 
|       traverse( this, UIGraphNode.Incoming.UIGraphArcPoint, p ) | 
|       { | 
|         p.X( 0 ); | 
|         p.Y( 0 ); | 
|         if( not isnull( p.Next() ) and not isnull( p.Previous() ) ) | 
|         { | 
|           p.Delete(); | 
|         } | 
|       } | 
|        | 
|       traverse( this, UIGraphNode, n ) | 
|       { | 
|         n.RelativelyPositionOutgoingArcs(); | 
|       } | 
|        | 
|       if( reposition_children ) | 
|       { | 
|         rows := selectsortedset( this, UIGraphRow, row, row.RowNr() > node.UIGraphRow().RowNr(), row.RowNr() ); | 
|         traverse( rows, Elements, row ) | 
|         { | 
|           row.SortTopDown(); | 
|         } | 
|       } | 
|        | 
|       this.DrawAfterSequence(); | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |