summaryrefslogtreecommitdiff
path: root/src/main/webapp/documentation/wires.md
blob: 988e44869659081cff2694d601b048c6a9a9f4ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# Xcos-on-Web Wires Connection
#### @jiteshjha @pooja

Track our progress on wires connection here on [xcos-on-web group](https://groups.google.com/forum/#!searchin/xcos-on-web/authorname$3A$20Jitesh$20Jha).

[Depends on mxGraph library, version  1.10.4.1, which can be found [here](https://github.com/rmoriz/mxgraph). ]

## Purpose 

 - One of the major feature of xcos-on-desktop is the connections between blocks.
 - We used [wires.html](https://github.com/rmoriz/mxgraph/blob/master/javascript/examples/wires.html) example as the basic structure of our xcos-on-web application, with many additions explained below to closely resemble the connections possible on xcos-on-desktop.
 
##Documentation
 
#### `mxConnectionHandler.prototype.movePreviewAway`

 - Switch to enable moving the preview away from the mousepointer.  This is required in browsers where the preview cannot be made transparent to events and if the built-in hit detection on the HTML elements in the page should be used. This is set as false in index.html.

#### `mxConnectionHandler.prototype.waypointsEnabled`

 - Specifies if single clicks should add waypoints on the new edge. This is set as true in index.html.

#### `mxGraph.prototype.resetEdgesOnConnect`

 - Specifies if edge control points should be reset after the the edge has been reconnected. This is set as true in index.html.

#### `graph.setPanning(true)`

 - Specifies if panning should be enabled.

#### `graph.setConnectable(true)`

 - Specifies if the graph should allow new connections.

#### `setConnectableEdges(true)`

 - Specifies if edges should be connectable.

#### `setDisconnectOnMove(false)`

 - Specifies if edges should be disconnected when moved.  (Note: Cloned edges are always disconnected)

#### `foldingEnabled = false`

 - Specifies if folding. (collapse and expand via an image icon in the graph should be enabled)

[**NOTE**: The following six functions are implemented from the [wires.html](https://github.com/rmoriz/mxgraph/blob/master/javascript/examples/wires.html) under javascript-example of [mxGraph](https://github.com/rmoriz/mxgraph). ]

### function `connectionHandlerIsStartEvent()`

 -  Starts connections on the background in wire-mode.
 -  function connectionHandlerMouseUp() depends on this function.

### function `connectionHandlerMouseUp()`

 - Avoids any connections for gestures within tolerance except when in wire-mode or when over a port.
 - Responsible for the removal of self connections over an mxCell (edges or vertices) in wire-mode.

### function `updateFixedTerminalPoint()`

 - Updates connection points before the routing is called.
 - Enables connection from any point on an edge.
 - Without this function, default edge characteristics ( mid-point-specific connections only) come in play.

### function `createEdgeState()`

 - Overrides methods to preview and create new edges.
 - Enables horizontal and vertical edges in preview state.
 - Without this function, any connection from an edge will have it's source point and target point chosen based on the assumed center of a straight edge having source edge's source point and target point.

### function `createMarker()`

 - Adds in-place highlighting for complete cell area (no hotspot).
 - Uses complete area of cell for new connections.
 - Adds in-place highlighting when reconnecting existing edges.

### function `WireConnector()`

 - Creates a custom horizontal and vertical edge style.
 - Without this function, the source and terminal of a connection from an source edge is assumed as if the source edge were an perpendicular connection.