@theia/memory-inspector 1.45.1 → 1.46.0-next.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +71 -71
  2. package/lib/browser/diff-widget/memory-diff-options-widget.d.ts +36 -36
  3. package/lib/browser/diff-widget/memory-diff-options-widget.js +132 -132
  4. package/lib/browser/diff-widget/memory-diff-select-widget.d.ts +50 -50
  5. package/lib/browser/diff-widget/memory-diff-select-widget.js +137 -137
  6. package/lib/browser/diff-widget/memory-diff-table-widget.d.ts +77 -77
  7. package/lib/browser/diff-widget/memory-diff-table-widget.js +314 -314
  8. package/lib/browser/diff-widget/memory-diff-widget-types.d.ts +41 -41
  9. package/lib/browser/diff-widget/memory-diff-widget-types.js +23 -23
  10. package/lib/browser/editable-widget/memory-editable-table-widget.d.ts +64 -64
  11. package/lib/browser/editable-widget/memory-editable-table-widget.js +324 -324
  12. package/lib/browser/memory-inspector-frontend-contribution.d.ts +46 -46
  13. package/lib/browser/memory-inspector-frontend-contribution.js +291 -291
  14. package/lib/browser/memory-inspector-frontend-module.d.ts +21 -21
  15. package/lib/browser/memory-inspector-frontend-module.js +87 -87
  16. package/lib/browser/memory-provider/cdt-gdb-memory-provider.d.ts +35 -35
  17. package/lib/browser/memory-provider/cdt-gdb-memory-provider.js +136 -136
  18. package/lib/browser/memory-provider/memory-provider-service.d.ts +36 -36
  19. package/lib/browser/memory-provider/memory-provider-service.js +101 -101
  20. package/lib/browser/memory-provider/memory-provider.d.ts +65 -65
  21. package/lib/browser/memory-provider/memory-provider.js +96 -96
  22. package/lib/browser/memory-provider/memory-provider.spec.d.ts +16 -16
  23. package/lib/browser/memory-provider/memory-provider.spec.js +23 -23
  24. package/lib/browser/memory-widget/memory-options-widget.d.ts +136 -136
  25. package/lib/browser/memory-widget/memory-options-widget.js +564 -564
  26. package/lib/browser/memory-widget/memory-table-widget.d.ts +146 -146
  27. package/lib/browser/memory-widget/memory-table-widget.js +487 -487
  28. package/lib/browser/memory-widget/memory-widget.d.ts +33 -33
  29. package/lib/browser/memory-widget/memory-widget.js +112 -112
  30. package/lib/browser/register-widget/register-filter-service.d.ts +42 -42
  31. package/lib/browser/register-widget/register-filter-service.js +81 -81
  32. package/lib/browser/register-widget/register-options-widget.d.ts +81 -81
  33. package/lib/browser/register-widget/register-options-widget.js +338 -338
  34. package/lib/browser/register-widget/register-table-widget.d.ts +77 -77
  35. package/lib/browser/register-widget/register-table-widget.js +230 -230
  36. package/lib/browser/register-widget/register-widget-types.d.ts +29 -29
  37. package/lib/browser/register-widget/register-widget-types.js +35 -35
  38. package/lib/browser/utils/memory-commands.d.ts +27 -27
  39. package/lib/browser/utils/memory-commands.js +67 -67
  40. package/lib/browser/utils/memory-hover-renderer.d.ts +33 -33
  41. package/lib/browser/utils/memory-hover-renderer.js +111 -111
  42. package/lib/browser/utils/memory-recents.d.ts +27 -27
  43. package/lib/browser/utils/memory-recents.js +52 -52
  44. package/lib/browser/utils/memory-widget-components.d.ts +58 -58
  45. package/lib/browser/utils/memory-widget-components.js +69 -69
  46. package/lib/browser/utils/memory-widget-manager.d.ts +50 -50
  47. package/lib/browser/utils/memory-widget-manager.js +182 -182
  48. package/lib/browser/utils/memory-widget-utils.d.ts +113 -113
  49. package/lib/browser/utils/memory-widget-utils.js +42 -42
  50. package/lib/browser/utils/memory-widget-variable-utils.d.ts +57 -57
  51. package/lib/browser/utils/memory-widget-variable-utils.js +143 -143
  52. package/lib/browser/utils/multi-select-bar.d.ts +31 -31
  53. package/lib/browser/utils/multi-select-bar.js +34 -34
  54. package/lib/browser/wrapper-widgets/memory-dock-panel.d.ts +24 -24
  55. package/lib/browser/wrapper-widgets/memory-dock-panel.js +48 -48
  56. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.d.ts +23 -23
  57. package/lib/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.js +57 -57
  58. package/lib/browser/wrapper-widgets/memory-layout-widget.d.ts +51 -51
  59. package/lib/browser/wrapper-widgets/memory-layout-widget.js +191 -191
  60. package/lib/common/util.d.ts +21 -21
  61. package/lib/common/util.js +30 -30
  62. package/lib/common/utils.spec.d.ts +16 -16
  63. package/lib/common/utils.spec.js +45 -45
  64. package/package.json +4 -4
  65. package/src/browser/diff-widget/memory-diff-options-widget.tsx +152 -152
  66. package/src/browser/diff-widget/memory-diff-select-widget.tsx +163 -163
  67. package/src/browser/diff-widget/memory-diff-table-widget.tsx +366 -366
  68. package/src/browser/diff-widget/memory-diff-widget-types.ts +45 -45
  69. package/src/browser/editable-widget/memory-editable-table-widget.tsx +359 -359
  70. package/src/browser/memory-inspector-frontend-contribution.ts +301 -301
  71. package/src/browser/memory-inspector-frontend-module.ts +118 -118
  72. package/src/browser/memory-provider/cdt-gdb-memory-provider.ts +132 -132
  73. package/src/browser/memory-provider/memory-provider-service.ts +86 -86
  74. package/src/browser/memory-provider/memory-provider.spec.ts +23 -23
  75. package/src/browser/memory-provider/memory-provider.ts +119 -119
  76. package/src/browser/memory-widget/memory-options-widget.tsx +738 -738
  77. package/src/browser/memory-widget/memory-table-widget.tsx +625 -625
  78. package/src/browser/memory-widget/memory-widget.ts +114 -114
  79. package/src/browser/register-widget/register-filter-service.ts +76 -76
  80. package/src/browser/register-widget/register-options-widget.tsx +393 -393
  81. package/src/browser/register-widget/register-table-widget.tsx +276 -276
  82. package/src/browser/register-widget/register-widget-types.ts +45 -45
  83. package/src/browser/register-widget/register-widget.css +34 -34
  84. package/src/browser/style/index.css +746 -746
  85. package/src/browser/style/memory-lock.svg +21 -21
  86. package/src/browser/style/memory-view.svg +20 -20
  87. package/src/browser/style/register-lock.svg +29 -29
  88. package/src/browser/style/register-view.svg +28 -28
  89. package/src/browser/utils/memory-commands.ts +76 -76
  90. package/src/browser/utils/memory-hover-renderer.ts +113 -113
  91. package/src/browser/utils/memory-recents.ts +58 -58
  92. package/src/browser/utils/memory-widget-components.tsx +193 -193
  93. package/src/browser/utils/memory-widget-manager.ts +179 -179
  94. package/src/browser/utils/memory-widget-utils.tsx +132 -132
  95. package/src/browser/utils/memory-widget-variable-utils.ts +170 -170
  96. package/src/browser/utils/multi-select-bar.css +61 -61
  97. package/src/browser/utils/multi-select-bar.tsx +75 -75
  98. package/src/browser/wrapper-widgets/memory-dock-panel.ts +51 -51
  99. package/src/browser/wrapper-widgets/memory-dockpanel-placeholder-widget.tsx +38 -38
  100. package/src/browser/wrapper-widgets/memory-layout-widget.tsx +167 -167
  101. package/src/common/util.ts +28 -28
  102. package/src/common/utils.spec.ts +52 -52
@@ -1,78 +1,78 @@
1
- /********************************************************************************
2
- * Copyright (C) 2021 Ericsson and others.
3
- *
4
- * This program and the accompanying materials are made available under the
5
- * terms of the Eclipse Public License v. 2.0 which is available at
6
- * http://www.eclipse.org/legal/epl-2.0.
7
- *
8
- * This Source Code may also be made available under the following Secondary
9
- * Licenses when the conditions for such availability set forth in the Eclipse
10
- * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- * with the GNU Classpath Exception which is available at
12
- * https://www.gnu.org/software/classpath/license.html.
13
- *
14
- * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- ********************************************************************************/
16
- /// <reference types="react" />
17
- import * as React from '@theia/core/shared/react';
18
- import { DebugVariable } from '@theia/debug/lib/browser/console/debug-console-items';
19
- import { MemoryTable, MemoryTableWidget } from '../memory-widget/memory-table-widget';
20
- import { Interfaces } from '../utils/memory-widget-utils';
21
- import { RegisterReadResult } from '../utils/memory-widget-variable-utils';
22
- import { RegisterOptions, RegisterOptionsWidget } from './register-options-widget';
23
- export declare namespace RegisterTable {
24
- const ROW_CLASS = "t-mv-view-row";
25
- const ROW_DIVIDER_CLASS = "t-mv-view-row-highlight";
26
- const REGISTER_NAME_CLASS = "t-mv-view-address";
27
- const REGISTER_DATA_CLASS = "t-mv-view-data";
28
- const EXTRA_COLUMN_DATA_CLASS = "t-mv-view-code";
29
- const HEADER_ROW_CLASS = "t-mv-header";
30
- interface RowOptions {
31
- regName: string;
32
- regVal: string;
33
- hexadecimal?: string;
34
- decimal?: string;
35
- octal?: string;
36
- binary?: string;
37
- doShowDivider?: boolean;
38
- isChanged?: boolean;
39
- }
40
- interface StylableNodeAttributes {
41
- className?: string;
42
- style?: React.CSSProperties;
43
- title?: string;
44
- isChanged?: boolean;
45
- }
46
- interface RowDecorator {
47
- (...args: any[]): Partial<StylableNodeAttributes>;
48
- }
49
- }
50
- export declare class RegisterTableWidget extends MemoryTableWidget {
51
- static CONTEXT_MENU: string[];
52
- static ID: string;
53
- readonly optionsWidget: RegisterOptionsWidget;
54
- protected readonly registerNotSaved = "<not saved>";
55
- protected registers: RegisterReadResult;
56
- protected previousRegisters: RegisterReadResult | undefined;
57
- protected options: RegisterOptions;
58
- protected memory: Interfaces.WidgetMemoryState;
59
- protected doInit(): Promise<void>;
60
- handleSetValue(dVar: DebugVariable | undefined): void;
61
- protected handleRegisterChange(newRegister: [RegisterReadResult, boolean]): void;
62
- protected getState(): void;
63
- protected getTableRows(): React.ReactNode;
64
- protected renderRegRows(result?: RegisterReadResult): IterableIterator<React.ReactNode>;
65
- protected getPrevRegVal(regName: string, inRegs: RegisterReadResult): string | undefined;
66
- protected renderRegRow(options: RegisterTable.RowOptions, getRowAttributes?: RegisterTable.RowDecorator): React.ReactNode;
67
- protected getRowAttributes(options: Partial<RegisterTable.RowOptions>): Partial<RegisterTable.StylableNodeAttributes>;
68
- protected getExtraRegColumn(options: Pick<RegisterTable.RowOptions, 'hexadecimal' | 'decimal' | 'octal' | 'binary'>): React.ReactNode[];
69
- protected getWrapperHandlers(): MemoryTable.WrapperHandlers;
70
- protected doHandleTableMouseMove(targetElement: React.MouseEvent['target']): void;
71
- protected handleRowKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
72
- protected openDebugVariableByCurrentTarget: (event: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLElement>) => void;
73
- protected openDebugVariableByDataId(element: HTMLElement): void;
74
- protected openDebugVariableByName(registerName: string): void;
75
- protected doHandleTableRightClick(event: React.MouseEvent): void;
76
- protected getContextMenuArgs(event: React.MouseEvent): unknown[];
77
- }
1
+ /********************************************************************************
2
+ * Copyright (C) 2021 Ericsson and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ /// <reference types="react" />
17
+ import * as React from '@theia/core/shared/react';
18
+ import { DebugVariable } from '@theia/debug/lib/browser/console/debug-console-items';
19
+ import { MemoryTable, MemoryTableWidget } from '../memory-widget/memory-table-widget';
20
+ import { Interfaces } from '../utils/memory-widget-utils';
21
+ import { RegisterReadResult } from '../utils/memory-widget-variable-utils';
22
+ import { RegisterOptions, RegisterOptionsWidget } from './register-options-widget';
23
+ export declare namespace RegisterTable {
24
+ const ROW_CLASS = "t-mv-view-row";
25
+ const ROW_DIVIDER_CLASS = "t-mv-view-row-highlight";
26
+ const REGISTER_NAME_CLASS = "t-mv-view-address";
27
+ const REGISTER_DATA_CLASS = "t-mv-view-data";
28
+ const EXTRA_COLUMN_DATA_CLASS = "t-mv-view-code";
29
+ const HEADER_ROW_CLASS = "t-mv-header";
30
+ interface RowOptions {
31
+ regName: string;
32
+ regVal: string;
33
+ hexadecimal?: string;
34
+ decimal?: string;
35
+ octal?: string;
36
+ binary?: string;
37
+ doShowDivider?: boolean;
38
+ isChanged?: boolean;
39
+ }
40
+ interface StylableNodeAttributes {
41
+ className?: string;
42
+ style?: React.CSSProperties;
43
+ title?: string;
44
+ isChanged?: boolean;
45
+ }
46
+ interface RowDecorator {
47
+ (...args: any[]): Partial<StylableNodeAttributes>;
48
+ }
49
+ }
50
+ export declare class RegisterTableWidget extends MemoryTableWidget {
51
+ static CONTEXT_MENU: string[];
52
+ static ID: string;
53
+ readonly optionsWidget: RegisterOptionsWidget;
54
+ protected readonly registerNotSaved = "<not saved>";
55
+ protected registers: RegisterReadResult;
56
+ protected previousRegisters: RegisterReadResult | undefined;
57
+ protected options: RegisterOptions;
58
+ protected memory: Interfaces.WidgetMemoryState;
59
+ protected doInit(): Promise<void>;
60
+ handleSetValue(dVar: DebugVariable | undefined): void;
61
+ protected handleRegisterChange(newRegister: [RegisterReadResult, boolean]): void;
62
+ protected getState(): void;
63
+ protected getTableRows(): React.ReactNode;
64
+ protected renderRegRows(result?: RegisterReadResult): IterableIterator<React.ReactNode>;
65
+ protected getPrevRegVal(regName: string, inRegs: RegisterReadResult): string | undefined;
66
+ protected renderRegRow(options: RegisterTable.RowOptions, getRowAttributes?: RegisterTable.RowDecorator): React.ReactNode;
67
+ protected getRowAttributes(options: Partial<RegisterTable.RowOptions>): Partial<RegisterTable.StylableNodeAttributes>;
68
+ protected getExtraRegColumn(options: Pick<RegisterTable.RowOptions, 'hexadecimal' | 'decimal' | 'octal' | 'binary'>): React.ReactNode[];
69
+ protected getWrapperHandlers(): MemoryTable.WrapperHandlers;
70
+ protected doHandleTableMouseMove(targetElement: React.MouseEvent['target']): void;
71
+ protected handleRowKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
72
+ protected openDebugVariableByCurrentTarget: (event: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLElement>) => void;
73
+ protected openDebugVariableByDataId(element: HTMLElement): void;
74
+ protected openDebugVariableByName(registerName: string): void;
75
+ protected doHandleTableRightClick(event: React.MouseEvent): void;
76
+ protected getContextMenuArgs(event: React.MouseEvent): unknown[];
77
+ }
78
78
  //# sourceMappingURL=register-table-widget.d.ts.map
@@ -1,231 +1,231 @@
1
- "use strict";
2
- /********************************************************************************
3
- * Copyright (C) 2021 Ericsson and others.
4
- *
5
- * This program and the accompanying materials are made available under the
6
- * terms of the Eclipse Public License v. 2.0 which is available at
7
- * http://www.eclipse.org/legal/epl-2.0.
8
- *
9
- * This Source Code may also be made available under the following Secondary
10
- * Licenses when the conditions for such availability set forth in the Eclipse
11
- * Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- * with the GNU Classpath Exception which is available at
13
- * https://www.gnu.org/software/classpath/license.html.
14
- *
15
- * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- ********************************************************************************/
17
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
- return c > 3 && r && Object.defineProperty(target, key, r), r;
22
- };
23
- var __metadata = (this && this.__metadata) || function (k, v) {
24
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
- };
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.RegisterTableWidget = exports.RegisterTable = void 0;
28
- const browser_1 = require("@theia/core/lib/browser");
29
- const inversify_1 = require("@theia/core/shared/inversify");
30
- const React = require("@theia/core/shared/react");
31
- const memory_options_widget_1 = require("../memory-widget/memory-options-widget");
32
- const memory_table_widget_1 = require("../memory-widget/memory-table-widget");
33
- const register_options_widget_1 = require("./register-options-widget");
34
- var RegisterTable;
35
- (function (RegisterTable) {
36
- RegisterTable.ROW_CLASS = 't-mv-view-row';
37
- RegisterTable.ROW_DIVIDER_CLASS = 't-mv-view-row-highlight';
38
- RegisterTable.REGISTER_NAME_CLASS = 't-mv-view-address';
39
- RegisterTable.REGISTER_DATA_CLASS = 't-mv-view-data';
40
- RegisterTable.EXTRA_COLUMN_DATA_CLASS = 't-mv-view-code';
41
- RegisterTable.HEADER_ROW_CLASS = 't-mv-header';
42
- })(RegisterTable = exports.RegisterTable || (exports.RegisterTable = {}));
43
- class RegisterTableWidget extends memory_table_widget_1.MemoryTableWidget {
44
- constructor() {
45
- super(...arguments);
46
- this.registerNotSaved = '<not saved>';
47
- this.memory = { ...memory_options_widget_1.EMPTY_MEMORY, variables: [] };
48
- this.handleRowKeyDown = (event) => {
49
- var _a;
50
- const keyCode = (_a = browser_1.KeyCode.createKeyCode(event.nativeEvent).key) === null || _a === void 0 ? void 0 : _a.keyCode;
51
- switch (keyCode) {
52
- case browser_1.Key.ENTER.keyCode:
53
- this.openDebugVariableByCurrentTarget(event);
54
- break;
55
- default:
56
- break;
57
- }
58
- };
59
- this.openDebugVariableByCurrentTarget = (event) => {
60
- this.openDebugVariableByDataId(event.currentTarget);
61
- };
62
- }
63
- async doInit() {
64
- this.id = RegisterTableWidget.ID;
65
- this.addClass(RegisterTableWidget.ID);
66
- this.scrollOptions = { ...this.scrollOptions, suppressScrollX: false };
67
- this.toDispose.push(this.optionsWidget.onOptionsChanged(optionId => this.handleOptionChange(optionId)));
68
- this.toDispose.push(this.optionsWidget.onRegisterChanged(e => this.handleRegisterChange(e)));
69
- this.toDispose.push(this.themeService.onDidColorThemeChange(e => this.handleThemeChange(e)));
70
- this.getStateAndUpdate();
71
- }
72
- handleSetValue(dVar) {
73
- if (dVar) {
74
- dVar.open();
75
- }
76
- }
77
- handleRegisterChange(newRegister) {
78
- const regResult = newRegister[0];
79
- const updatePrevRegs = !newRegister[1];
80
- if (this.registers.threadId !== regResult.threadId) {
81
- // if not same thread Id, dont highlighting register changes
82
- this.previousRegisters = undefined;
83
- }
84
- else {
85
- if (updatePrevRegs) {
86
- this.previousRegisters = this.registers;
87
- }
88
- }
89
- this.getStateAndUpdate();
90
- }
91
- getState() {
92
- this.options = this.optionsWidget.options;
93
- this.registers = this.optionsWidget.registers;
94
- }
95
- getTableRows() {
96
- return [...this.renderRegRows()];
97
- }
98
- *renderRegRows(result = this.registers) {
99
- let rowsYielded = 0;
100
- // For each row...
101
- for (const reg of result.registers) {
102
- if (this.optionsWidget.displayReg(reg.name)) {
103
- const notSaved = reg.value === this.registerNotSaved;
104
- const isChanged = this.previousRegisters && reg.value !== this.getPrevRegVal(reg.name, this.previousRegisters);
105
- const options = {
106
- regName: reg.name,
107
- regVal: reg.value,
108
- hexadecimal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 16, reg.name),
109
- decimal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 10),
110
- octal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 8),
111
- binary: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 2, reg.name),
112
- doShowDivider: (rowsYielded % 4) === 3,
113
- isChanged,
114
- };
115
- yield this.renderRegRow(options);
116
- rowsYielded += 1;
117
- }
118
- }
119
- }
120
- getPrevRegVal(regName, inRegs) {
121
- var _a;
122
- return (_a = inRegs.registers.find(element => element.name === regName)) === null || _a === void 0 ? void 0 : _a.value;
123
- }
124
- renderRegRow(options, getRowAttributes = this.getRowAttributes.bind(this)) {
125
- var _a;
126
- const { regName } = options;
127
- const { className, style, title } = getRowAttributes(options);
128
- return (React.createElement("tr", {
129
- // Add a marker to help visual navigation when scrolling
130
- className: className, style: style, title: title, key: regName, "data-id": regName, "data-value": (_a = options.decimal) !== null && _a !== void 0 ? _a : 'none', tabIndex: 0, onKeyDown: this.handleRowKeyDown, onContextMenu: this.options.isFrozen ? undefined : this.handleTableRightClick, onDoubleClick: this.options.isFrozen ? undefined : this.openDebugVariableByCurrentTarget },
131
- React.createElement("td", { className: RegisterTable.REGISTER_NAME_CLASS }, regName),
132
- this.getExtraRegColumn(options)));
133
- }
134
- getRowAttributes(options) {
135
- let className = RegisterTable.ROW_CLASS;
136
- if (options.doShowDivider) {
137
- className += ` ${RegisterTable.ROW_DIVIDER_CLASS}`;
138
- }
139
- if (options.isChanged) {
140
- // use the eight-bits change CSS class
141
- className += ' eight-bits changed';
142
- }
143
- return { className };
144
- }
145
- getExtraRegColumn(options) {
146
- const additionalColumns = [];
147
- if (this.options.columnsDisplayed.hexadecimal.doRender) {
148
- additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'hexadecimal' }, options.hexadecimal));
149
- }
150
- if (this.options.columnsDisplayed.decimal.doRender) {
151
- additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'decimal' }, options.decimal));
152
- }
153
- if (this.options.columnsDisplayed.octal.doRender) {
154
- additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'octal' }, options.octal));
155
- }
156
- if (this.options.columnsDisplayed.binary.doRender) {
157
- additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'binary' }, options.binary));
158
- }
159
- return additionalColumns;
160
- }
161
- getWrapperHandlers() {
162
- return this.options.isFrozen || this.options.noRadixColumnDisplayed
163
- ? super.getWrapperHandlers()
164
- : {
165
- onMouseMove: this.handleTableMouseMove,
166
- onContextMenu: this.handleTableRightClick,
167
- };
168
- }
169
- doHandleTableMouseMove(targetElement) {
170
- var _a;
171
- const tempTarget = targetElement;
172
- const target = ((_a = tempTarget.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === 'TR' ? tempTarget.parentElement : tempTarget;
173
- if (target.tagName === 'TR') {
174
- const { x, y } = target.getBoundingClientRect();
175
- const anchor = { x: Math.round(x), y: Math.round(y + target.clientHeight) };
176
- const value = Number(target.getAttribute('data-value'));
177
- if (!isNaN(value)) {
178
- const register = target.getAttribute('data-id');
179
- const properties = {
180
- register,
181
- hex: `0x${value.toString(16)}`,
182
- binary: `0b${value.toString(2)}`,
183
- decimal: value.toString(10),
184
- octal: `0o${value.toString(8)}`,
185
- };
186
- return this.hoverRenderer.render(this.node, anchor, properties);
187
- }
188
- }
189
- return this.hoverRenderer.hide();
190
- }
191
- openDebugVariableByDataId(element) {
192
- const registerName = element.getAttribute('data-id');
193
- if (registerName) {
194
- this.openDebugVariableByName(registerName);
195
- }
196
- }
197
- openDebugVariableByName(registerName) {
198
- const debugVariable = this.registers.registers.find(element => element.name === registerName);
199
- this.handleSetValue(debugVariable);
200
- }
201
- doHandleTableRightClick(event) {
202
- event.preventDefault();
203
- const curTarget = event.currentTarget;
204
- if (curTarget.tagName === 'TR') {
205
- this.update();
206
- event.stopPropagation();
207
- this.contextMenuRenderer.render({
208
- menuPath: RegisterTableWidget.CONTEXT_MENU,
209
- anchor: event.nativeEvent,
210
- args: this.getContextMenuArgs(event),
211
- });
212
- }
213
- }
214
- getContextMenuArgs(event) {
215
- const args = [this];
216
- const regName = event.currentTarget.getAttribute('data-id');
217
- if (regName) {
218
- const dVar = this.registers.registers.find(element => element.name === regName);
219
- args.push(dVar);
220
- }
221
- return args;
222
- }
223
- }
224
- RegisterTableWidget.CONTEXT_MENU = ['register.view.context.menu'];
225
- RegisterTableWidget.ID = 'register-table-widget';
226
- __decorate([
227
- (0, inversify_1.inject)(register_options_widget_1.RegisterOptionsWidget),
228
- __metadata("design:type", register_options_widget_1.RegisterOptionsWidget)
229
- ], RegisterTableWidget.prototype, "optionsWidget", void 0);
230
- exports.RegisterTableWidget = RegisterTableWidget;
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (C) 2021 Ericsson and others.
4
+ *
5
+ * This program and the accompanying materials are made available under the
6
+ * terms of the Eclipse Public License v. 2.0 which is available at
7
+ * http://www.eclipse.org/legal/epl-2.0.
8
+ *
9
+ * This Source Code may also be made available under the following Secondary
10
+ * Licenses when the conditions for such availability set forth in the Eclipse
11
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ * with the GNU Classpath Exception which is available at
13
+ * https://www.gnu.org/software/classpath/license.html.
14
+ *
15
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ ********************************************************************************/
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.RegisterTableWidget = exports.RegisterTable = void 0;
28
+ const browser_1 = require("@theia/core/lib/browser");
29
+ const inversify_1 = require("@theia/core/shared/inversify");
30
+ const React = require("@theia/core/shared/react");
31
+ const memory_options_widget_1 = require("../memory-widget/memory-options-widget");
32
+ const memory_table_widget_1 = require("../memory-widget/memory-table-widget");
33
+ const register_options_widget_1 = require("./register-options-widget");
34
+ var RegisterTable;
35
+ (function (RegisterTable) {
36
+ RegisterTable.ROW_CLASS = 't-mv-view-row';
37
+ RegisterTable.ROW_DIVIDER_CLASS = 't-mv-view-row-highlight';
38
+ RegisterTable.REGISTER_NAME_CLASS = 't-mv-view-address';
39
+ RegisterTable.REGISTER_DATA_CLASS = 't-mv-view-data';
40
+ RegisterTable.EXTRA_COLUMN_DATA_CLASS = 't-mv-view-code';
41
+ RegisterTable.HEADER_ROW_CLASS = 't-mv-header';
42
+ })(RegisterTable = exports.RegisterTable || (exports.RegisterTable = {}));
43
+ class RegisterTableWidget extends memory_table_widget_1.MemoryTableWidget {
44
+ constructor() {
45
+ super(...arguments);
46
+ this.registerNotSaved = '<not saved>';
47
+ this.memory = { ...memory_options_widget_1.EMPTY_MEMORY, variables: [] };
48
+ this.handleRowKeyDown = (event) => {
49
+ var _a;
50
+ const keyCode = (_a = browser_1.KeyCode.createKeyCode(event.nativeEvent).key) === null || _a === void 0 ? void 0 : _a.keyCode;
51
+ switch (keyCode) {
52
+ case browser_1.Key.ENTER.keyCode:
53
+ this.openDebugVariableByCurrentTarget(event);
54
+ break;
55
+ default:
56
+ break;
57
+ }
58
+ };
59
+ this.openDebugVariableByCurrentTarget = (event) => {
60
+ this.openDebugVariableByDataId(event.currentTarget);
61
+ };
62
+ }
63
+ async doInit() {
64
+ this.id = RegisterTableWidget.ID;
65
+ this.addClass(RegisterTableWidget.ID);
66
+ this.scrollOptions = { ...this.scrollOptions, suppressScrollX: false };
67
+ this.toDispose.push(this.optionsWidget.onOptionsChanged(optionId => this.handleOptionChange(optionId)));
68
+ this.toDispose.push(this.optionsWidget.onRegisterChanged(e => this.handleRegisterChange(e)));
69
+ this.toDispose.push(this.themeService.onDidColorThemeChange(e => this.handleThemeChange(e)));
70
+ this.getStateAndUpdate();
71
+ }
72
+ handleSetValue(dVar) {
73
+ if (dVar) {
74
+ dVar.open();
75
+ }
76
+ }
77
+ handleRegisterChange(newRegister) {
78
+ const regResult = newRegister[0];
79
+ const updatePrevRegs = !newRegister[1];
80
+ if (this.registers.threadId !== regResult.threadId) {
81
+ // if not same thread Id, dont highlighting register changes
82
+ this.previousRegisters = undefined;
83
+ }
84
+ else {
85
+ if (updatePrevRegs) {
86
+ this.previousRegisters = this.registers;
87
+ }
88
+ }
89
+ this.getStateAndUpdate();
90
+ }
91
+ getState() {
92
+ this.options = this.optionsWidget.options;
93
+ this.registers = this.optionsWidget.registers;
94
+ }
95
+ getTableRows() {
96
+ return [...this.renderRegRows()];
97
+ }
98
+ *renderRegRows(result = this.registers) {
99
+ let rowsYielded = 0;
100
+ // For each row...
101
+ for (const reg of result.registers) {
102
+ if (this.optionsWidget.displayReg(reg.name)) {
103
+ const notSaved = reg.value === this.registerNotSaved;
104
+ const isChanged = this.previousRegisters && reg.value !== this.getPrevRegVal(reg.name, this.previousRegisters);
105
+ const options = {
106
+ regName: reg.name,
107
+ regVal: reg.value,
108
+ hexadecimal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 16, reg.name),
109
+ decimal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 10),
110
+ octal: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 8),
111
+ binary: notSaved ? reg.value : this.optionsWidget.handleRadixRendering(reg.value, 2, reg.name),
112
+ doShowDivider: (rowsYielded % 4) === 3,
113
+ isChanged,
114
+ };
115
+ yield this.renderRegRow(options);
116
+ rowsYielded += 1;
117
+ }
118
+ }
119
+ }
120
+ getPrevRegVal(regName, inRegs) {
121
+ var _a;
122
+ return (_a = inRegs.registers.find(element => element.name === regName)) === null || _a === void 0 ? void 0 : _a.value;
123
+ }
124
+ renderRegRow(options, getRowAttributes = this.getRowAttributes.bind(this)) {
125
+ var _a;
126
+ const { regName } = options;
127
+ const { className, style, title } = getRowAttributes(options);
128
+ return (React.createElement("tr", {
129
+ // Add a marker to help visual navigation when scrolling
130
+ className: className, style: style, title: title, key: regName, "data-id": regName, "data-value": (_a = options.decimal) !== null && _a !== void 0 ? _a : 'none', tabIndex: 0, onKeyDown: this.handleRowKeyDown, onContextMenu: this.options.isFrozen ? undefined : this.handleTableRightClick, onDoubleClick: this.options.isFrozen ? undefined : this.openDebugVariableByCurrentTarget },
131
+ React.createElement("td", { className: RegisterTable.REGISTER_NAME_CLASS }, regName),
132
+ this.getExtraRegColumn(options)));
133
+ }
134
+ getRowAttributes(options) {
135
+ let className = RegisterTable.ROW_CLASS;
136
+ if (options.doShowDivider) {
137
+ className += ` ${RegisterTable.ROW_DIVIDER_CLASS}`;
138
+ }
139
+ if (options.isChanged) {
140
+ // use the eight-bits change CSS class
141
+ className += ' eight-bits changed';
142
+ }
143
+ return { className };
144
+ }
145
+ getExtraRegColumn(options) {
146
+ const additionalColumns = [];
147
+ if (this.options.columnsDisplayed.hexadecimal.doRender) {
148
+ additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'hexadecimal' }, options.hexadecimal));
149
+ }
150
+ if (this.options.columnsDisplayed.decimal.doRender) {
151
+ additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'decimal' }, options.decimal));
152
+ }
153
+ if (this.options.columnsDisplayed.octal.doRender) {
154
+ additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'octal' }, options.octal));
155
+ }
156
+ if (this.options.columnsDisplayed.binary.doRender) {
157
+ additionalColumns.push(React.createElement("td", { className: RegisterTable.EXTRA_COLUMN_DATA_CLASS, key: 'binary' }, options.binary));
158
+ }
159
+ return additionalColumns;
160
+ }
161
+ getWrapperHandlers() {
162
+ return this.options.isFrozen || this.options.noRadixColumnDisplayed
163
+ ? super.getWrapperHandlers()
164
+ : {
165
+ onMouseMove: this.handleTableMouseMove,
166
+ onContextMenu: this.handleTableRightClick,
167
+ };
168
+ }
169
+ doHandleTableMouseMove(targetElement) {
170
+ var _a;
171
+ const tempTarget = targetElement;
172
+ const target = ((_a = tempTarget.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === 'TR' ? tempTarget.parentElement : tempTarget;
173
+ if (target.tagName === 'TR') {
174
+ const { x, y } = target.getBoundingClientRect();
175
+ const anchor = { x: Math.round(x), y: Math.round(y + target.clientHeight) };
176
+ const value = Number(target.getAttribute('data-value'));
177
+ if (!isNaN(value)) {
178
+ const register = target.getAttribute('data-id');
179
+ const properties = {
180
+ register,
181
+ hex: `0x${value.toString(16)}`,
182
+ binary: `0b${value.toString(2)}`,
183
+ decimal: value.toString(10),
184
+ octal: `0o${value.toString(8)}`,
185
+ };
186
+ return this.hoverRenderer.render(this.node, anchor, properties);
187
+ }
188
+ }
189
+ return this.hoverRenderer.hide();
190
+ }
191
+ openDebugVariableByDataId(element) {
192
+ const registerName = element.getAttribute('data-id');
193
+ if (registerName) {
194
+ this.openDebugVariableByName(registerName);
195
+ }
196
+ }
197
+ openDebugVariableByName(registerName) {
198
+ const debugVariable = this.registers.registers.find(element => element.name === registerName);
199
+ this.handleSetValue(debugVariable);
200
+ }
201
+ doHandleTableRightClick(event) {
202
+ event.preventDefault();
203
+ const curTarget = event.currentTarget;
204
+ if (curTarget.tagName === 'TR') {
205
+ this.update();
206
+ event.stopPropagation();
207
+ this.contextMenuRenderer.render({
208
+ menuPath: RegisterTableWidget.CONTEXT_MENU,
209
+ anchor: event.nativeEvent,
210
+ args: this.getContextMenuArgs(event),
211
+ });
212
+ }
213
+ }
214
+ getContextMenuArgs(event) {
215
+ const args = [this];
216
+ const regName = event.currentTarget.getAttribute('data-id');
217
+ if (regName) {
218
+ const dVar = this.registers.registers.find(element => element.name === regName);
219
+ args.push(dVar);
220
+ }
221
+ return args;
222
+ }
223
+ }
224
+ RegisterTableWidget.CONTEXT_MENU = ['register.view.context.menu'];
225
+ RegisterTableWidget.ID = 'register-table-widget';
226
+ __decorate([
227
+ (0, inversify_1.inject)(register_options_widget_1.RegisterOptionsWidget),
228
+ __metadata("design:type", register_options_widget_1.RegisterOptionsWidget)
229
+ ], RegisterTableWidget.prototype, "optionsWidget", void 0);
230
+ exports.RegisterTableWidget = RegisterTableWidget;
231
231
  //# sourceMappingURL=register-table-widget.js.map