aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SelectionManager.ts
diff options
context:
space:
mode:
authorStanley Yip <stanley_yip@brown.edu>2019-10-29 19:09:04 -0400
committerStanley Yip <stanley_yip@brown.edu>2019-10-29 19:09:04 -0400
commitb7353705ee06292e570c9847d72287190f3f42ed (patch)
tree4026264bb2a072485269dcf3b9db5bbae7cb8920 /src/client/util/SelectionManager.ts
parent3cff8e7d101a528e392d885420de118cccca6ae5 (diff)
started implementing ink select with document decorations
Diffstat (limited to 'src/client/util/SelectionManager.ts')
-rw-r--r--src/client/util/SelectionManager.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index 2d717ca57..3ae43e029 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -11,6 +11,7 @@ export namespace SelectionManager {
@observable IsDragging: boolean = false;
@observable SelectedDocuments: Array<DocumentView> = [];
+ @observable SelectedInk: Array<Map<any, any>> = [];
@action
@@ -41,6 +42,20 @@ export namespace SelectionManager {
DeselectAll(): void {
manager.SelectedDocuments.map(dv => dv.props.whenActiveChanged(false));
manager.SelectedDocuments = [];
+ manager.SelectedInk = [];
+ }
+
+ @action
+ SelectInk(ink: Map<any, any>, ctrlPressed: boolean): void {
+ if (manager.SelectedInk.indexOf(ink) === -1) {
+ if (!ctrlPressed) {
+ this.DeselectAll();
+ }
+
+ manager.SelectedInk.push(ink);
+ } else if (!ctrlPressed && manager.SelectedDocuments.length > 1) {
+ manager.SelectedInk = [ink];
+ }
}
}
@@ -53,6 +68,10 @@ export namespace SelectionManager {
manager.SelectDoc(docView, ctrlPressed);
}
+ export function SelectInk(ink: Map<any, any>, ctrlPressed: boolean): void {
+ manager.SelectInk(ink, ctrlPressed);
+ }
+
export function IsSelected(doc: DocumentView): boolean {
return manager.SelectedDocuments.indexOf(doc) !== -1;
}
@@ -75,4 +94,15 @@ export namespace SelectionManager {
export function SelectedDocuments(): Array<DocumentView> {
return manager.SelectedDocuments.slice();
}
+
+ export function SelectedInk(): Array<Map<any, any>> {
+ return manager.SelectedInk.slice();
+ }
+
+ export function AllSelected(): Array<DocumentView | Map<any, any>> {
+ let arr: Array<DocumentView | Map<any, any>> = [];
+ arr = SelectionManager.SelectedDocuments();
+ arr.push(...SelectionManager.SelectedInk());
+ return arr;
+ }
}