()
| 244 | } |
| 245 | |
| 246 | public svgKeyDown(): void { |
| 247 | let eventHandled = true; // unless the below switch defaults |
| 248 | switch (d3.event.keyCode) { |
| 249 | case 38: // UP |
| 250 | case 40: // DOWN |
| 251 | this.showSelectionFrontierNodes(d3.event.keyCode == 38, undefined, true); |
| 252 | break; |
| 253 | case 49: |
| 254 | case 50: |
| 255 | case 51: |
| 256 | case 52: |
| 257 | case 53: |
| 258 | case 54: |
| 259 | case 55: |
| 260 | case 56: |
| 261 | case 57: // '1'-'9' |
| 262 | this.showSelectionFrontierNodes(true, |
| 263 | (edge: GraphEdge, index: number) => index == (d3.event.keyCode - 49), |
| 264 | !d3.event.ctrlKey); |
| 265 | break; |
| 266 | case 65: // 'a' |
| 267 | this.selectAllNodes(); |
| 268 | break; |
| 269 | case 67: // 'c' |
| 270 | this.showSelectionFrontierNodes(d3.event.altKey, |
| 271 | (edge: GraphEdge) => edge.type === "control", |
| 272 | true); |
| 273 | break; |
| 274 | case 69: // 'e' |
| 275 | this.showSelectionFrontierNodes(d3.event.altKey, |
| 276 | (edge: GraphEdge) => edge.type === "effect", |
| 277 | true); |
| 278 | break; |
| 279 | case 72: // 'h' |
| 280 | this.showHoveredNodeHistory(); |
| 281 | break; |
| 282 | case 73: // 'i' |
| 283 | if (!d3.event.ctrlKey && !d3.event.shiftKey) { |
| 284 | this.showSelectionFrontierNodes(true, undefined, false); |
| 285 | } else { |
| 286 | eventHandled = false; |
| 287 | } |
| 288 | break; |
| 289 | case 79: // 'o' |
| 290 | this.showSelectionFrontierNodes(false, undefined, false); |
| 291 | break; |
| 292 | case 80: // 'p' |
| 293 | this.selectOrigins(); |
| 294 | break; |
| 295 | case 82: // 'r' |
| 296 | if (!d3.event.ctrlKey && !d3.event.shiftKey) { |
| 297 | this.layoutAction(this); |
| 298 | } else { |
| 299 | eventHandled = false; |
| 300 | } |
| 301 | break; |
| 302 | case 83: // 's' |
| 303 | if (!d3.event.ctrlKey && !d3.event.shiftKey) { |
no test coverage detected