Skip to content

Commit e602b7d

Browse files
Restructuring extension local types
1 parent 9b9cd5b commit e602b7d

File tree

16 files changed

+420
-79
lines changed

16 files changed

+420
-79
lines changed

src/dataEditor/dataEditorClient.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,18 @@ import path from 'path'
6464
import * as vscode from 'vscode'
6565
import XDGAppPaths from 'xdg-app-paths'
6666
import { extractDaffodilEvent } from '../daffodilDebugger/daffodil'
67+
import { VIEWPORT_CAPACITY_MAX } from '../svelte/src/stores/configuration'
6768
import {
68-
EditByteModes,
69-
VIEWPORT_CAPACITY_MAX,
70-
} from '../svelte/src/stores/configuration'
71-
import {
72-
EditorMessage,
7369
MessageCommand,
74-
MessageLevel,
75-
} from '../svelte/src/utilities/message'
70+
EditByteModes,
71+
ExtensionMessageResponses,
72+
} from 'ext_types'
7673
import * as editor_config from './config'
7774
import { configureOmegaEditPort, ServerInfo } from './include/server/ServerInfo'
78-
import { SvelteWebviewInitializer } from './svelteWebviewInitializer'
75+
import {
76+
SvelteUIWebviewPanel,
77+
SvelteWebviewInitializer,
78+
} from './svelteWebviewInitializer'
7979
import {
8080
addActiveSession,
8181
removeActiveSession,
@@ -131,7 +131,7 @@ export function activate(ctx: vscode.ExtensionContext): void {
131131
// *****************************************************************************
132132

133133
export class DataEditorClient implements vscode.Disposable {
134-
public panel: vscode.WebviewPanel
134+
public panel: SvelteUIWebviewPanel
135135
private svelteWebviewInitializer: SvelteWebviewInitializer
136136
private displayState: DisplayState
137137
private currentViewportId: string
@@ -149,7 +149,7 @@ export class DataEditorClient implements vscode.Disposable {
149149
fileToEdit: string = '',
150150
panel: vscode.WebviewPanel
151151
) {
152-
this.panel = panel
152+
this.panel = new SvelteUIWebviewPanel(panel)
153153
this.panel.webview.onDidReceiveMessage(this.messageReceiver, this)
154154

155155
this.disposables = [

src/dataEditor/svelteWebviewInitializer.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,30 @@
1717

1818
import * as vscode from 'vscode'
1919
import * as fs from 'fs'
20+
import {
21+
DataEditorMessageRequests,
22+
DataEditorMessageResponses,
23+
ExtensionMessageRequests,
24+
ExtensionMessageResponses,
25+
} from 'ext_types'
26+
27+
export class SvelteUIWebviewPanel {
28+
constructor(private vscodePanel: vscode.WebviewPanel) {}
29+
postEditorResponse<K extends keyof DataEditorMessageResponses>(
30+
type: K,
31+
message: DataEditorMessageResponses[K]
32+
) {
33+
this.vscodePanel.webview.postMessage({ command: type, data: message })
34+
}
35+
postExtensionResponse<K extends keyof ExtensionMessageResponses>(
36+
type: K,
37+
message: ExtensionMessageResponses[K]
38+
) {
39+
this.vscodePanel.webview.postMessage({ command: type, data: message })
40+
}
41+
onDidReceive
42+
}
43+
2044
export class SvelteWebviewInitializer {
2145
constructor(private context: vscode.ExtensionContext) {}
2246

src/ext_types/dom.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { ExtensionMessages } from 'ext_types'
2+
3+
interface DataEditorDOMInterface {
4+
addMessageListener: <K extends keyof ExtensionMessages>(
5+
type: K,
6+
listener: (response: any) => void
7+
) => void
8+
}
9+
10+
declare global {
11+
interface Window {
12+
dataeditor: DataEditorDOMInterface
13+
}
14+
}
15+
16+
export {}
Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,27 @@
1515
* limitations under the License.
1616
*/
1717

18-
export enum MessageCommand {
19-
clearChanges,
20-
applyChanges,
21-
editorOnChange,
22-
fileInfo,
23-
heartbeat,
24-
profile,
25-
redoChange,
26-
replaceResults,
27-
requestEditedData,
28-
save,
29-
saveAs,
30-
saveSegment,
31-
scrollViewport,
32-
search,
33-
replace,
34-
searchResults,
35-
setUITheme,
36-
showMessage,
37-
undoChange,
38-
updateLogicalDisplay,
39-
viewportRefresh,
40-
}
18+
export type Radixes = 'Hexadecimal' | 'Decimal' | 'Octal' | 'Binary'
19+
20+
export type RadixValues = 16 | 10 | 8 | 2
4121

42-
export enum MessageLevel {
43-
Error,
44-
Info,
45-
Warn,
22+
export type BytesPerRow = 16 | 8 | 24
23+
24+
export enum EditByteModes {
25+
Single = 'single',
26+
Multiple = 'multiple',
4627
}
28+
export type AvailableStrEncodings =
29+
| 'hex'
30+
| 'binary'
31+
| 'ascii'
32+
| 'latin1'
33+
| 'utf-8'
34+
| 'utf-16'
4735

48-
export type EditorMessage = {
49-
command: MessageCommand
50-
data: Record<string, any>
36+
export enum EditActionRestrictions {
37+
None,
38+
OverwriteOnly,
5139
}
40+
41+
export type EditAction = { name: string; value: EditActionRestrictions }

src/ext_types/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export * from './formattypes'
2+
export * from './messageContent'
3+
export * from './messages'

src/ext_types/messageContent.ts

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
import { EditByteModes } from 'ext_types'
2+
import {
3+
ApplyChangesRequest,
4+
ChangesInfoResponse,
5+
CountResponse,
6+
EditedDataRequest,
7+
EditedDataResponse,
8+
EditorOnChangeRequest,
9+
EditorOnChangeResponse,
10+
FileInfoResponse,
11+
NotificationRequest,
12+
ProfileRequest,
13+
ProfileResponse,
14+
ReplaceRequest,
15+
ReplaceResponse,
16+
SaveAsResponse,
17+
SaveRequest,
18+
SaveSegmentRequest,
19+
ScrollViewportRequest,
20+
SearchRequest,
21+
SearchResponse,
22+
SetUIThemeRequest,
23+
UndoRequest,
24+
ViewportRefreshResponse,
25+
} from './messages'
26+
27+
export enum MessageCommand {
28+
clearChanges,
29+
applyChanges,
30+
editorOnChange,
31+
fileInfo,
32+
heartbeat,
33+
profile,
34+
redoChange,
35+
replaceResults,
36+
requestEditedData,
37+
save,
38+
saveAs,
39+
saveSegment,
40+
scrollViewport,
41+
search,
42+
replace,
43+
searchResults,
44+
setUITheme,
45+
showMessage,
46+
undoChange,
47+
updateLogicalDisplay,
48+
viewportRefresh,
49+
}
50+
export type ExtensionMessageCommands =
51+
| 'clearChanges'
52+
| 'applyChanges'
53+
| 'editorOnChange'
54+
| 'fileInfo'
55+
| 'heartbeat'
56+
| 'profile'
57+
| 'redoChange'
58+
| 'replaceResults'
59+
| 'requestEditedData'
60+
| 'save'
61+
| 'saveAs'
62+
| 'saveSegment'
63+
| 'scrollViewport'
64+
| 'search'
65+
| 'replace'
66+
| 'searchResults'
67+
| 'setUITheme'
68+
| 'showMessage'
69+
| 'undoChange'
70+
| 'updateLogicalDisplay'
71+
| 'viewportRefresh'
72+
73+
/**
74+
* Key indexable interface to templated type inference of available messages sent between
75+
* the components of the DFDL VSCode extension.
76+
*/
77+
export interface DataEditorMessageRequests {
78+
counts: never
79+
clearChanges: never
80+
applyChanges: ApplyChangesRequest
81+
editorOnChange: EditorOnChangeRequest
82+
fileInfo: never // service
83+
heartbeat: never // service
84+
profile: ProfileRequest // service
85+
redoChange: never
86+
replaceResults: never
87+
requestEditedData: EditedDataRequest
88+
save: SaveRequest
89+
saveAs: SaveRequest
90+
saveSegment: SaveSegmentRequest
91+
scrollViewport: ScrollViewportRequest
92+
search: SearchRequest
93+
replace: ReplaceRequest
94+
undoChange: UndoRequest
95+
viewportRefresh: never
96+
}
97+
export interface ExtensionMessageRequests {
98+
showMessage: NotificationRequest
99+
setUITheme: SetUIThemeRequest
100+
}
101+
102+
export interface ExtensionMessageResponses {
103+
showMessage: undefined
104+
setUITheme: void
105+
}
106+
107+
export interface DataEditorMessageResponses {
108+
clearChanges: void
109+
applyChanges: ChangesInfoResponse
110+
editorOnChange: EditorOnChangeResponse
111+
fileInfo: FileInfoResponse
112+
counts: CountResponse
113+
// heartbeat: IServerHeartbeat & { port: number } // service
114+
profile: ProfileResponse
115+
redoChange: void
116+
replaceResults: ReplaceResponse
117+
requestEditedData: EditedDataResponse
118+
save: void
119+
saveAs: SaveAsResponse
120+
saveSegment: void
121+
scrollViewport: void
122+
search: SearchResponse
123+
replace: ReplaceResponse
124+
undoChange: void
125+
viewportRefresh: ViewportRefreshResponse
126+
}

0 commit comments

Comments
 (0)