aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/SelectionManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util/SelectionManager.ts')
-rw-r--r--src/client/util/SelectionManager.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts
index 2d717ca57..2a57c67bd 100644
--- a/src/client/util/SelectionManager.ts
+++ b/src/client/util/SelectionManager.ts
@@ -4,6 +4,7 @@ import { DocumentView } from "../views/nodes/DocumentView";
import { FormattedTextBox } from "../views/nodes/FormattedTextBox";
import { NumCast, StrCast } from "../../new_fields/Types";
import { InkingControl } from "../views/InkingControl";
+import { InkDocAndStroke } from "../views/InkingStroke";
export namespace SelectionManager {
@@ -11,6 +12,7 @@ export namespace SelectionManager {
@observable IsDragging: boolean = false;
@observable SelectedDocuments: Array<DocumentView> = [];
+ @observable SelectedInk: Array<{ Document: Doc, Ink: Map<any, any> }> = [];
@action
@@ -41,6 +43,20 @@ export namespace SelectionManager {
DeselectAll(): void {
manager.SelectedDocuments.map(dv => dv.props.whenActiveChanged(false));
manager.SelectedDocuments = [];
+ manager.SelectedInk = [];
+ }
+
+ @action
+ SelectInk(ink: { Document: Doc, 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 +69,10 @@ export namespace SelectionManager {
manager.SelectDoc(docView, ctrlPressed);
}
+ export function SelectInk(ink: { Document: Doc, 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 +95,15 @@ export namespace SelectionManager {
export function SelectedDocuments(): Array<DocumentView> {
return manager.SelectedDocuments.slice();
}
+
+ export function SelectedInk(): Array<{ Document: Doc, Ink: Map<any, any> }> {
+ return manager.SelectedInk.slice();
+ }
+
+ export function AllSelected(): Array<DocumentView | InkDocAndStroke> {
+ let arr: Array<DocumentView | InkDocAndStroke> = [];
+ arr = SelectionManager.SelectedDocuments();
+ arr.push(...SelectionManager.SelectedInk());
+ return arr;
+ }
}