aboutsummaryrefslogtreecommitdiff
path: root/src/controllers/BasicFieldController.ts
diff options
context:
space:
mode:
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;
+ }
+}