Method for Determining Keyboard Traversal Order for Edges/Connections
Original Publication Date: 2005-Apr-01
Included in the Prior Art Database: 2005-Apr-01
This invention describes a way to determine a traversal ordering for a node's connections which will be intuitive to the user. Most graphical applications are not completely keyboard accessible. The few that are provide very minimal support, such as simply cycling through all connections in a seemingly random order. Some application use the creation order of the connections. None of these provide a predictable or meaningful order to the user. Because of poor usability, the user is left guessing as to which connection is going to be selected next and this can lead to frustration and decreased productivity. When navigating via the keyboard, the user should be able to make a reasonable prediction of what the next item traversed to will be. The connections are traversed in a generally clockwise direction, with the anchor location of all connections determining the order of precedence. Conflicts (connections sharing one or more line segments before diverging) are resolved by taking into account the angles of the first distinct line segments of all conflicting connections. The algorithm can be applied in clickwise and counter-clockwise directions, allowing the user to navigate forwards and backwards.
Method for Determining Keyboard Traversal Order for Edges /Connections
The algorithm allows the connection for a given node in a graphical diagram to be navigated. The node is selected using normal keyboard techniques for selecting items. The most recently selected node is the focus node around which the connection navigation will occur.
The algorithm works off a set of input data. The input consists of: - All of the connections for the given node are known. A connection is a list of points eminating from the node in question - The center or reference point of the focus node. - A current reference connection or NULL. -The direction, CW or CCW
The output is of course the next connection which should be navigated to. The algorithm is described below:
If the current connection is NULL, then an imaginary connection containing a single point is placed at some initial location such as 3 O'Clock. This becomes the reference connection. See "Reference Line" in the figure below.
The algorithm will start comparing the first line segments of all connection to this reference connection. The first segments being compared are constructed using an imaginary line segment from the node's reference point to the first point (called the anchor point) of each connection. The angles are measured in the current direction (we will use clockwise throughout this discussion) relative the the same segment in the current reference connection. The figure below shows such measurements on the initial segments of 4 connections.
Now let's consider the case of a conflict. To resolve a conflict, we look at the first distinct segment of each connection. The last "shared" line segment becomes the new reference line, and then we do the same as described above. The picture below shows how a simple conflict w...