aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-01-30 09:45:15 -0500
committerbob <bcz@cs.brown.edu>2019-01-30 09:45:15 -0500
commit13518146c955f012a6f6cd2b802f80aeeffcd58d (patch)
tree7b5c52ceefc6c3dbbd7c80f54900f8c5ad7db6e0
parent8ce38637c0a8ebb8aab936aec2ee46d5833e7b3b (diff)
docking for top-level only
-rw-r--r--src/DocumentDecorations.tsx10
-rw-r--r--src/Main.tsx8
-rw-r--r--src/views/collections/CollectionFreeFormView.tsx5
-rw-r--r--src/views/nodes/DocumentView.tsx10
4 files changed, 18 insertions, 15 deletions
diff --git a/src/DocumentDecorations.tsx b/src/DocumentDecorations.tsx
index d71cda539..1cf875ea5 100644
--- a/src/DocumentDecorations.tsx
+++ b/src/DocumentDecorations.tsx
@@ -3,6 +3,7 @@ import React = require("react");
import { SelectionManager } from "./util/SelectionManager";
import { observer } from "mobx-react";
import './DocumentDecorations.scss'
+import { CollectionFreeFormView } from "./views/collections/CollectionFreeFormView";
@observer
export class DocumentDecorations extends React.Component {
@@ -20,12 +21,13 @@ export class DocumentDecorations extends React.Component {
@computed
get Bounds(): { x: number, y: number, b: number, r: number } {
return SelectionManager.SelectedDocuments().reduce((bounds, element) => {
+ if (element.props.ContainingCollectionView != undefined &&
+ !(element.props.ContainingCollectionView instanceof CollectionFreeFormView)) {
+ return bounds;
+ }
var spt = element.TransformToScreenPoint(0, 0);
var bpt = element.TransformToScreenPoint(element.width, element.height);
- if (spt.ScreenX == undefined || spt.ScreenY == undefined ||
- bpt.ScreenX == undefined || bpt.ScreenY == undefined)
- return { x: bounds.x, y: bounds.y, r: bounds.r, b: bounds.b };
- else return {
+ return {
x: Math.min(spt.ScreenX, bounds.x), y: Math.min(spt.ScreenY, bounds.y),
r: Math.max(bpt.ScreenX, bounds.r), b: Math.max(bpt.ScreenY, bounds.b)
}
diff --git a/src/Main.tsx b/src/Main.tsx
index 118e745cd..33e38004f 100644
--- a/src/Main.tsx
+++ b/src/Main.tsx
@@ -22,7 +22,7 @@ configure({
});
const mainNodeCollection = new Array<Document>();
-let mainContainer = Documents.CollectionDocument(mainNodeCollection, {
+let mainContainer = Documents.DockDocument(mainNodeCollection, {
x: 0, y: 0, width: window.screen.width, height: window.screen.height
})
@@ -73,10 +73,10 @@ runInAction(() => {
}
// mainNodes.Data.push(doc1);
// mainNodes.Data.push(doc2);
- //mainNodes.Data.push(doc4);
+ mainNodes.Data.push(doc4);
// mainNodes.Data.push(doc3);
- //mainNodes.Data.push(doc5);
+ mainNodes.Data.push(doc5);
// mainNodes.Data.push(doc1);
// mainNodes.Data.push(doc2);
- mainNodes.Data.push(doc6);
+ //mainNodes.Data.push(doc6);
}); \ No newline at end of file
diff --git a/src/views/collections/CollectionFreeFormView.tsx b/src/views/collections/CollectionFreeFormView.tsx
index c84b8e3e5..736bcb786 100644
--- a/src/views/collections/CollectionFreeFormView.tsx
+++ b/src/views/collections/CollectionFreeFormView.tsx
@@ -13,6 +13,7 @@ import { ContextMenu } from "../ContextMenu";
import { DragManager } from "../../util/DragManager";
import "./CollectionFreeFormView.scss";
import { Utils } from "../../Utils";
+import { CollectionDockingView } from "./CollectionDockingView";
@observer
export class CollectionFreeFormView extends React.Component<CollectionViewProps> {
@@ -29,7 +30,9 @@ export class CollectionFreeFormView extends React.Component<CollectionViewProps>
public get active(): boolean {
var isSelected = (this.props.ContainingDocumentView != undefined && SelectionManager.IsSelected(this.props.ContainingDocumentView));
var childSelected = SelectionManager.SelectedDocuments().some(view => view.props.ContainingCollectionView == this);
- var topMost = this.props.ContainingDocumentView != undefined && this.props.ContainingDocumentView.props.ContainingCollectionView == undefined;
+ var topMost = this.props.ContainingDocumentView != undefined && (
+ this.props.ContainingDocumentView.props.ContainingCollectionView == undefined ||
+ this.props.ContainingDocumentView.props.ContainingCollectionView instanceof CollectionDockingView);
return isSelected || childSelected || topMost;
}
diff --git a/src/views/nodes/DocumentView.tsx b/src/views/nodes/DocumentView.tsx
index 38e695ed2..86d5ed305 100644
--- a/src/views/nodes/DocumentView.tsx
+++ b/src/views/nodes/DocumentView.tsx
@@ -196,17 +196,15 @@ export class DocumentView extends React.Component<DocumentViewProps> {
//
// Converts a point in the coordinate space of a document to a screen space coordinate.
//
- public TransformToScreenPoint(localX: number, localY: number, Ss: number = 1, Panxx: number = 0, Panyy: number = 0): { ScreenX: Opt<number>, ScreenY: Opt<number> } {
- // if (this.props.ContainingCollectionView != undefined && !(this.props.ContainingCollectionView instanceof CollectionFreeFormView)) {
- // return { ScreenX: undefined, ScreenY: undefined };
- // }
+ public TransformToScreenPoint(localX: number, localY: number, Ss: number = 1, Panxx: number = 0, Panyy: number = 0): { ScreenX: number, ScreenY: number } {
+
let dockingViewChromeHack = this.props.ContainingCollectionView instanceof CollectionDockingView;
let W = CollectionFreeFormView.BORDER_WIDTH; // this.props.Document.GetFieldValue(KeyStore.Width, NumberField, Number(0));
let H = CollectionFreeFormView.BORDER_WIDTH;
let Xx = dockingViewChromeHack ? 0 : this.props.Document.GetFieldValue(KeyStore.X, NumberField, Number(0));
let Yy = dockingViewChromeHack ? CollectionDockingView.TAB_HEADER_HEIGHT : this.props.Document.GetFieldValue(KeyStore.Y, NumberField, Number(0));
- let parentX: Opt<any> = (localX - W) * Ss + (Xx + Panxx) + W;
- let parentY: Opt<any> = (localY - H) * Ss + (Yy + Panyy) + H;
+ let parentX = (localX - W) * Ss + (Xx + Panxx) + W;
+ let parentY = (localY - H) * Ss + (Yy + Panyy) + H;
// if this collection view is nested within another collection view, then
// first transform the local point into the parent collection's coordinate space.