Arrows


Mousing over an edge of a block will cause a small gey square to appear, indicating that an arrow can be started or ended at that point on the edge of the block.

Arrows can be drawn by pressing the left button with the cursor positioned on an edge of a selected block (subject to restrictions given below), which will cause a small square to appear at that point. Now drag the cursor to an edge of the destination block, and the arrow will terminate with an arrowhead at that point. It doesn't matter whether the left button is held down or not.

You cannot start and end an arrow at the same block.

If you want a bend in the line, just release the button at the bend point, press it again and resume dragging - then finish drawing the arrow in the normal way.

If you decide to get rid of an arrow that you are drawing, you can hit the Esc keyboard button.

Arrows should start at the bottom or rightmost edge of one block, and terminate at the leftmost or top edge of another. If you want to terminate an arrow somewhere else on a block, you will be asked if that is what you want to do.

An arrow in process of being drawn can always be aborted by clicking on an edge of the block where it started, or by right-clicking, and then going to Delete in the resulting popup.

If the slope of a line segment is less than 1/10 or greater than 10/1, it will be assumed that the intention was to make it horizontal or vertical, respectively.

If you click on a line rather than the edge of a block, the line being drawn will terminate there, with a small black circle  marking the termination point. You cannot start an arrow at a line - only end it there.  For code generation purposes, DrawFBP treats an arrow terminating at a line as feeding into the same block and port as the arrow it terminates at.

An IIP can be connected to a process by an arrow, but the arrow will be displayed without an arrowhead. This type of connection can be drawn in either direction - however, if it is drawn in the wrong direction (i.e. from process to IIP), DrawFBP will try to swap the ends of the arrow, which may give strange results if there are bends in the arrow.

When an arrow is completed, port names of OUT and IN are automatically filled in (one each per block) - these can be changed as desired afterwards.

Clicking on an arrow (whether it ends at a block or other arrow) brings up a popup menu showing operations that can be performed on it. These are the following:

Edit Upstream/Downstream Port Name

Normally port names are just upper case strings; however, if you need to specify an element of an array port, use the conventional Java notation, e.g.  XYZ[3], denoting the 4th element.

Set/Remove Capacity

"Set Capacity" creates a small block containing the specified capacity, which can be dragged around to a convenient location. It will remain associated with the arrow, although it will not drag with the arrow, and can be removed using "Remove Capacity", no matter where it has been dragged to.

Automatic/Normal

If the upstream or downstream end of an arrow is toggled to "automatic" it is shown with a blue circle at that end.

An automatic output port sends a close-down signal at process close-down even though the process has not specified a port name for that function. An automatic input port will delay the process until an IP or close-down signal is detected at that port, again even though the process has not specified a port name for that function. No receive is required to process it.

DropOldest

This sets a connection attribute which drops the oldest IP on the connection if it would suspend the upstream (sending) process. DrawFBP displays this kind of connection with a zigzag line.

Drag Functions

The three drag functions allow you to move, respectively, the tail or head of the selected arrow, or to insert or move a bend in the line. When inserting a new bend, you can drag it until you release the mouse button.

If the head or tail of an arrow is dragged into contact with a different diagram block, it becomes attached to that block.

Extra Arrowhead

DrawFBP supports one additional arrowhead per arrow, anywhere the user wants. If the line is dragged the arrowhead does not follow it, but it can be repositioned by clicking on this function again.

One-button Support

If desired, the list of arrow-related actions can also be brought up by clicking on Edit/Arrow-related Actions. For this to work, one of the arrows must have been selected (by clicking on it) - it will be coloured blue.