Make KeyAction able to instantiate every KeyAction subclass.

This commit is contained in:
László Monda
2016-03-31 16:36:40 +02:00
parent ad5118a62c
commit ae6342911c

View File

@@ -16,12 +16,20 @@ 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);
case KeystrokeAction.keyActionTypeString:
return new KeystrokeAction().fromJsObject(jsObject);
case KeystrokeWithModifiersAction.keyActionTypeString:
return new KeystrokeWithModifiersAction().fromJsObject(jsObject);
case DualRoleKeystrokeAction.keyActionTypeString:
return new DualRoleKeystrokeAction().fromJsObject(jsObject);
case SwitchLayerAction.keyActionTypeString:
return new SwitchLayerAction().fromJsObject(jsObject);
case SwitchKeymapAction.keyActionTypeString:
return new SwitchKeymapAction().fromJsObject(jsObject);
case MouseAction.keyActionTypeString:
return new MouseAction().fromJsObject(jsObject);
default:
throw `Invalid KeyAction.keyActionType: "${jsObject.actionType}"`;
}
@@ -32,14 +40,22 @@ class KeyAction {
buffer.backtrack();
switch (keyActionFirstByte) {
case KeyActionId.KeystrokeAction:
return new KeystrokeAction().fromBinary(buffer);
case KeyActionId.MouseAction:
return new MouseAction().fromBinary(buffer);
case KeyActionId.NoneAction:
return new NoneAction().fromBinary(buffer);
case KeyActionId.KeystrokeAction:
return new KeystrokeAction().fromBinary(buffer);
case KeyActionId.KeystrokeWithModifiersAction:
return new KeystrokeWithModifiersAction().fromBinary(buffer);
case KeyActionId.DualRoleKeystrokeAction:
return new DualRoleKeystrokeAction().fromBinary(buffer);
case KeyActionId.SwitchLayerAction:
return new SwitchLayerAction().fromBinary(buffer);
case KeyActionId.SwitchKeymapAction:
return new SwitchKeymapAction().fromBinary(buffer);
case KeyActionId.MouseAction:
return new MouseAction().fromBinary(buffer);
default:
throw `Invalid KeyAction first byte "${keyActionFirstByte}"`;
throw `Invalid KeyAction first byte: ${keyActionFirstByte}`;
}
}