aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortschicke-brown <tyler_schicke@brown.edu>2019-01-17 22:57:50 -0500
committerGitHub <noreply@github.com>2019-01-17 22:57:50 -0500
commit1eb79ea2e6f2ddeea19b8cc399b373809279b862 (patch)
tree249bec9f12bec513ac649119f67cef04d1dfb14b /src
parentdced23210ce1b7e005d239f2167cae363bfef52f (diff)
parent4f370fb92ab849e6dabd9a8b5a762fa6c8d75188 (diff)
Merge pull request #1 from browngraphicslab/move_doc_get_out_the_way
moving documents and panning stuff now uses right click
Diffstat (limited to 'src')
-rw-r--r--src/views/freeformcanvas/CollectionFreeFormView.tsx23
-rw-r--r--src/views/freeformcanvas/FreeFormCanvas.tsx22
-rw-r--r--src/views/nodes/DocumentView.tsx46
3 files changed, 72 insertions, 19 deletions
diff --git a/src/views/freeformcanvas/CollectionFreeFormView.tsx b/src/views/freeformcanvas/CollectionFreeFormView.tsx
index 84a599907..d5343536d 100644
--- a/src/views/freeformcanvas/CollectionFreeFormView.tsx
+++ b/src/views/freeformcanvas/CollectionFreeFormView.tsx
@@ -27,19 +27,23 @@ export class CollectionFreeFormView extends React.Component<IProps> {
@action
onPointerDown = (e: React.PointerEvent): void => {
e.stopPropagation();
- this._isPointerDown = true;
- document.removeEventListener("pointermove", this.onPointerMove);
- document.addEventListener("pointermove", this.onPointerMove);
- document.removeEventListener("pointerup", this.onPointerUp);
- document.addEventListener("pointerup", this.onPointerUp);
+ 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);
+ }
}
@action
onPointerUp = (e: PointerEvent): void => {
e.stopPropagation();
- this._isPointerDown = false;
- document.removeEventListener("pointermove", this.onPointerMove);
- document.removeEventListener("pointerup", this.onPointerUp);
+ if (e.button === 2) {
+ this._isPointerDown = false;
+ document.removeEventListener("pointermove", this.onPointerMove);
+ document.removeEventListener("pointerup", this.onPointerUp);
+ }
}
@action
@@ -70,11 +74,12 @@ export class CollectionFreeFormView extends React.Component<IProps> {
const panx: number = doc.GetFieldValue(KeyStore.PanX, NumberField, Number(0));
const pany: number = doc.GetFieldValue(KeyStore.PanY, NumberField, Number(0));
return (
+
<div className="border" style={{
borderStyle: "solid",
borderWidth: "2px"
}}>
- <div className="collectionfreeformview-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel} style={{
+ <div className="collectionfreeformview-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel} onContextMenu={(e) => e.preventDefault()} style={{
width: "100%",
height: "calc(100% - 4px)",
overflow: "hidden"
diff --git a/src/views/freeformcanvas/FreeFormCanvas.tsx b/src/views/freeformcanvas/FreeFormCanvas.tsx
index cee093fcb..9ef5ab8f7 100644
--- a/src/views/freeformcanvas/FreeFormCanvas.tsx
+++ b/src/views/freeformcanvas/FreeFormCanvas.tsx
@@ -27,19 +27,23 @@ export class FreeFormCanvas extends React.Component<IProps> {
@action
onPointerDown = (e: React.PointerEvent): void => {
e.stopPropagation();
- this._isPointerDown = true;
- document.removeEventListener("pointermove", this.onPointerMove);
- document.addEventListener("pointermove", this.onPointerMove);
- document.removeEventListener("pointerup", this.onPointerUp);
- document.addEventListener("pointerup", this.onPointerUp);
+ 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);
+ }
}
@action
onPointerUp = (e: PointerEvent): void => {
e.stopPropagation();
- this._isPointerDown = false;
- document.removeEventListener("pointermove", this.onPointerMove);
- document.removeEventListener("pointerup", this.onPointerUp);
+ if (e.button === 2) {
+ this._isPointerDown = false;
+ document.removeEventListener("pointermove", this.onPointerMove);
+ document.removeEventListener("pointerup", this.onPointerUp);
+ }
// let doc = this.props.store.Docs[0];
// let dataField = doc.GetFieldT(KeyStore.Data, TextField);
@@ -68,7 +72,7 @@ export class FreeFormCanvas extends React.Component<IProps> {
render() {
let store = this.props.store;
return (
- <div className="freeformcanvas-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel}>
+ <div className="freeformcanvas-container" onPointerDown={this.onPointerDown} onWheel={this.onPointerWheel} onContextMenu={(e) => e.preventDefault()}>
<div className="freeformcanvas" style={{ transform: store.Transform, transformOrigin: '50% 50%' }}>
<div className="node-container">
{this.props.store.Docs.map(doc => {
diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx
index c468d5576..f955a8c39 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)`;
@@ -58,6 +66,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 = {
@@ -77,7 +118,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}