Files
agent/config-serializer/config-items/KeyAction.ts
2016-03-29 13:07:33 +02:00

31 lines
1.2 KiB
TypeScript

class KeyAction {
static fromJsObject(jsObject: any): KeyAction {
switch (jsObject.keyActionType) {
case KeystrokeAction.keyActionTypeString:
return new KeystrokeAction().fromJsObject(jsObject);
case MouseAction.keyActionTypeString:
return new MouseAction().fromJsObject(jsObject);
case NoneAction.keyActionTypeString:
return new NoneAction().fromJsObject(jsObject);
default:
throw 'Invalid KeyAction.keyActionType: "${jsObject.actionType}"';
}
}
static fromBinary(buffer: UhkBuffer): KeyAction {
let keyActionFirstByte = buffer.readUInt8();
buffer.backtrack();
if (KeystrokeAction.isScancodeValid(keyActionFirstByte)) {
return new KeystrokeAction().fromBinary(buffer);
} else if (keyActionFirstByte === MouseAction.keyActionId) {
return new MouseAction().fromBinary(buffer);
} else if (keyActionFirstByte === NoneAction.keyActionId) {
return new NoneAction().fromBinary(buffer);
} else {
throw 'Invalid KeyAction first byte "${keyActionFirstByte}"';
}
}
}