MockActivationController.ts
43 lines
| 1.2 KiB
| video/mp2t
|
TypeScriptLexer
|
|
r40 | import { IActivatable, ICancellation, IActivationController } from "@implab/core/interfaces"; | ||
| import { Cancellation } from "@implab/core/Cancellation"; | ||||
| export class MockActivationController implements IActivationController { | ||||
| _active: IActivatable = null; | ||||
| getActive(): IActivatable { | ||||
| return this._active; | ||||
| } | ||||
| async deactivate() { | ||||
| if (this._active) | ||||
| await this._active.deactivate(); | ||||
| this._active = null; | ||||
| } | ||||
| async activate(component: IActivatable) { | ||||
| if (!component || component.isActive()) | ||||
| return; | ||||
| component.setActivationController(this); | ||||
| await component.activate(); | ||||
| } | ||||
| async activating(component: IActivatable, ct: ICancellation = Cancellation.none) { | ||||
| if (component !== this._active) | ||||
| await this.deactivate(); | ||||
| } | ||||
| async activated(component: IActivatable, ct: ICancellation = Cancellation.none) { | ||||
| this._active = component; | ||||
| } | ||||
| async deactivating(component: IActivatable, ct: ICancellation = Cancellation.none) { | ||||
| } | ||||
| async deactivated(component: IActivatable, ct: ICancellation = Cancellation.none) { | ||||
| if (this._active === component) | ||||
| this._active = null; | ||||
| } | ||||
| } | ||||
