diff options
author | yipstanley <stanley_yip@brown.edu> | 2019-01-17 22:40:45 -0500 |
---|---|---|
committer | yipstanley <stanley_yip@brown.edu> | 2019-01-17 22:40:45 -0500 |
commit | 96dcfc8db79c035ba355d7459907f48c1f62ec08 (patch) | |
tree | 28c5f4e2cb7c92c9d7eccf1c38b69e4d38c3bc6b /src/views/nodes/DocumentView.tsx | |
parent | bec89018d0ee73a8abaa5e01f2262bd95bc687f7 (diff) |
moving documents and panning stuff now uses right click
Diffstat (limited to 'src/views/nodes/DocumentView.tsx')
-rw-r--r-- | src/views/nodes/DocumentView.tsx | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx index b9fbef91c..1c9f850ed 100644 --- a/src/views/nodes/DocumentView.tsx +++ b/src/views/nodes/DocumentView.tsx @@ -28,6 +28,14 @@ export class DocumentView extends React.Component<IProps> { return this.props.dvm.Doc.GetFieldValue(KeyStore.Y, NumberField, Number(0)); } + set x(x: number) { + this.props.dvm.Doc.SetFieldValue(KeyStore.X, x, NumberField) + } + + set y(y: number) { + this.props.dvm.Doc.SetFieldValue(KeyStore.Y, y, NumberField) + } + @computed get transform(): string { return `translate(${this.x}px, ${this.y}px)`; @@ -64,6 +72,39 @@ export class DocumentView extends React.Component<IProps> { return this.props.dvm.Doc.GetFieldValue(KeyStore.LayoutFields, ListField, new Array<Key>()); } + private _isPointerDown = false; + + onPointerDown = (e: React.PointerEvent): void => { + e.stopPropagation(); + if (e.button === 2) { + this._isPointerDown = true; + document.removeEventListener("pointermove", this.onPointerMove); + document.addEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + document.addEventListener("pointerup", this.onPointerUp); + } + } + + onPointerUp = (e: PointerEvent): void => { + e.stopPropagation(); + if (e.button === 2) { + e.preventDefault(); + this._isPointerDown = false; + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + } + } + + onPointerMove = (e: PointerEvent): void => { + e.stopPropagation(); + e.preventDefault(); + if (!this._isPointerDown) { + return; + } + this.x += e.movementX; + this.y += e.movementY; + } + render() { let doc = this.props.dvm.Doc; let bindings: any = { @@ -83,7 +124,10 @@ export class DocumentView extends React.Component<IProps> { transform: this.transform, width: this.width, height: this.height - }}> + }} onPointerDown={this.onPointerDown} onContextMenu={ + (e) => { + e.preventDefault() + }}> <JsxParser components={{ FieldTextBox, FreeFormCanvas, CollectionFreeFormView }} bindings={bindings} |