From 7f33b62e0b21b2d18a437fe600795e43787dde3b Mon Sep 17 00:00:00 2001 From: jbicker Date: Fri, 16 Aug 2019 14:47:08 +0200 Subject: [PATCH] Preserve Autoscroll and Timestamp states Signed-off-by: jbicker --- .../src/browser/monitor/monitor-model.ts | 19 +++++++++++++++++++ .../src/browser/monitor/monitor-widget.tsx | 12 ++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/arduino-ide-extension/src/browser/monitor/monitor-model.ts b/arduino-ide-extension/src/browser/monitor/monitor-model.ts index 960d6301..bc945f69 100644 --- a/arduino-ide-extension/src/browser/monitor/monitor-model.ts +++ b/arduino-ide-extension/src/browser/monitor/monitor-model.ts @@ -1,6 +1,13 @@ import { injectable } from "inversify"; import { Emitter } from "@theia/core"; +export namespace MonitorModel { + export interface Data { + autoscroll: boolean, + timestamp: boolean + } +} + @injectable() export class MonitorModel { @@ -28,4 +35,16 @@ export class MonitorModel { this._timestamp = !this._timestamp; this.onChangeEmitter.fire(undefined); } + + restore(model: MonitorModel.Data) { + this._autoscroll = model.autoscroll; + this._timestamp = model.timestamp; + } + + store(): MonitorModel.Data { + return { + autoscroll: this._autoscroll, + timestamp: this._timestamp + } + } } \ No newline at end of file diff --git a/arduino-ide-extension/src/browser/monitor/monitor-widget.tsx b/arduino-ide-extension/src/browser/monitor/monitor-widget.tsx index f0ebb8e6..c8e18c9c 100644 --- a/arduino-ide-extension/src/browser/monitor/monitor-widget.tsx +++ b/arduino-ide-extension/src/browser/monitor/monitor-widget.tsx @@ -1,4 +1,4 @@ -import { ReactWidget, Message, Widget } from "@theia/core/lib/browser"; +import { ReactWidget, Message, Widget, StatefulWidget } from "@theia/core/lib/browser"; import { postConstruct, injectable, inject } from "inversify"; import * as React from 'react'; import Select, { components } from 'react-select'; @@ -107,7 +107,7 @@ export interface SelectOption { } @injectable() -export class MonitorWidget extends ReactWidget { +export class MonitorWidget extends ReactWidget implements StatefulWidget { static readonly ID = 'serial-monitor'; @@ -169,6 +169,14 @@ export class MonitorWidget extends ReactWidget { this.update(); } + storeState(): MonitorModel.Data { + return this.model.store(); + } + + restoreState(oldState: MonitorModel.Data): void { + this.model.restore(oldState); + } + protected onAfterAttach(msg: Message) { super.onAfterAttach(msg); this.clear();