Patent ID: 8479218

Claim:
A non-transitory computer-readable memory medium comprising program instructions executable to: display a graphical program on a display, wherein the graphical program includes a plurality of nodes interconnected by wires indicating data flow among the nodes, wherein the plurality of interconnected nodes visually indicate functionality of the graphical program, wherein displaying the graphical program comprises displaying the plurality of interconnected nodes in a block diagram on the display, wherein each of the nodes is initially displayed in the block diagram at a respective initial horizontal coordinate; receive a request to automatically organize the graphical program; automatically organize the graphical program in response to the request, wherein said automatically organizing comprises: horizontally ranking the nodes by assigning each respective node to one of a plurality of horizontal ranks, wherein the horizontal ranks divide the block diagram along a horizontal axis, wherein the nodes are assigned to the horizontal ranks based on how the nodes are interconnected by the wires, wherein assigning the nodes to the horizontal ranks indicates a desired horizontal positioning of the nodes relative to each other, wherein for each source node that is connected to one or more target nodes to indicate data flow from the source node to the one or more target nodes, the source node is assigned to a horizontal rank leftward of the respective horizontal rank(s) to which the one or more target nodes are assigned, wherein the plurality of interconnected nodes includes a first node connected to a second node by a wire indicating data flow from the first node to the second node, wherein the first node is initially positioned rightward of the second node, wherein the horizontal rank to which the first node is assigned is leftward of the horizontal rank to which the second node is assigned; and determining a desired horizontal coordinate for each respective node based on the horizontal rank to which the respective node is assigned, wherein one or more of the nodes has a desired horizontal coordinate different from its initial horizontal coordinate; and for each respective node with a desired horizontal coordinate different from its initial horizontal coordinate, automatically re-positioning the respective node to its desired horizontal coordinate within the block diagram, wherein the first node is automatically re-positioned leftward of the second node.