This is an extension and not part of the main GoJS library. Note that the API for this class may change at any time. If you intend to use an extension in production, you should copy the code to your own source directory. Extensions can be found in the GoJS kit under the `extensions`, `extensionsTS` (UMD modules), or `extensionsJSM` (ES6 modules) folders. See the Extensions intro page for more information.

### Hierarchy

- Tool
  - LinkingBaseTool
    - LinkingTool
      - PolylineLinkingTool

The PolylineLinkingTool class the user to draw a new Link by clicking where the route should go, until clicking on a valid target port.

This tool supports routing both orthogonal and straight links. You can customize the LinkingBaseTool.temporaryLink as needed to affect the appearance and behavior of the temporary link that is shown during the linking operation. You can customize the LinkingTool.archetypeLinkData to specify property values that can be data-bound by your link template for the Links that are actually created.

If you want to experiment with this extension, try the Polyline Linking sample.

## Index

### Constructors

- constructor

### Methods

- doActivate
- doKeyDown
- doMouseDown
- doMouseMove
- doMouseUp
- insertLink

## Constructors

### constructor

- new PolylineLinkingTool(): PolylineLinkingTool

- Constructs an PolylineLinkingTool, sets portGravity to 0, and sets the name for the tool.

  #### Returns PolylineLinkingTool

## Methods

### Override doActivate

- doActivate(): void

- Use a "crosshair" cursor.

  #### Returns void

### Override doKeyDown

- doKeyDown(): void

- This supports the "Z" command during this tool's operation to remove the last added point of the route. Type ESCAPE to completely cancel the operation of the tool.

  #### Returns void

### Override doMouseDown

- doMouseDown(): void

- Add a point to the route that the temporary Link is accumulating.

  #### Returns void

### Override doMouseMove

- doMouseMove(): void

- Have the temporary link reach to the last mouse point.

  #### Returns void

### Override doMouseUp

- doMouseUp(): void

- If this event happens on a valid target port (as determined by LinkingBaseTool.findTargetPort), we complete the link drawing operation. insertLink is overridden to transfer the accumulated route drawn by user clicks to the new Link that was created.

  If this event happens elsewhere in the diagram, this tool is not stopped: the drawing of the route continues.

  #### Returns void

### Override insertLink

- insertLink(fromnode: Node, fromport: GraphObject, tonode: Node, toport: GraphObject): Link

- This method overrides the standard link creation method by additionally replacing the default link route with the custom one laid out by the user.

  #### Parameters

  - ##### fromnode: Node

  - ##### fromport: GraphObject

  - ##### tonode: Node

  - ##### toport: GraphObject

  #### Returns Link

Copyright © 1998-2021 by Northwoods Software Corporation.