aboutsummaryrefslogtreecommitdiff
path: root/src/controllers/BasicFieldController.ts
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-01-10 23:52:54 -0500
committerTyler Schicke <tyler_schicke@brown.edu>2019-01-10 23:52:54 -0500
commitee068ab30c43125efd2b0ab853531df9777f544f (patch)
tree9560b014b4de30c3a8f1e3d77ae70db27558fe58 /src/controllers/BasicFieldController.ts
parent861d61970afc9e67afbafa64e8c1347a18335077 (diff)
Started adding various controllers
Diffstat (limited to 'src/controllers/BasicFieldController.ts')
-rw-r--r--src/controllers/BasicFieldController.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/controllers/BasicFieldController.ts b/src/controllers/BasicFieldController.ts
new file mode 100644
index 000000000..ff88f8781
--- /dev/null
+++ b/src/controllers/BasicFieldController.ts
@@ -0,0 +1,36 @@
+import { FieldController } from "./FieldController"
+import { FieldUpdatedAction } from "./FieldUpdatedArgs";
+
+export abstract class BasicFieldController<T> extends FieldController {
+ get Data(): T {
+ return this.data;
+ }
+
+ set Data(value: T) {
+ if(this.data === value) {
+ return;
+ }
+ this.data = value;
+
+ this.FieldUpdated.emit({
+ field: this,
+ action: FieldUpdatedAction.Update
+ });
+ }
+
+ constructor(private data: T) {
+ super();
+ }
+
+ TrySetValue(value: any): boolean {
+ if (typeof value == typeof this.data) {
+ this.Data = value;
+ return true;
+ }
+ return false;
+ }
+
+ GetValue(): any {
+ return this.Data;
+ }
+}