Skip to content

Commit dd8b73e

Browse files
Messages only correlate to appropriate sender IDs
1 parent fc41483 commit dd8b73e

File tree

11 files changed

+163
-137
lines changed

11 files changed

+163
-137
lines changed

src/dataEditor/dataEditorClient.ts

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,13 @@ export class DataEditorClient implements vscode.Disposable {
134134
private panel: DataEditorUI
135135
) {
136136
this.panel.onDidReceiveMessage(this.msgReceiver)
137-
137+
if (OPEN_EDITORS.size === 1) {
138+
let bytePos1b = 0
139+
const testmsgint = setInterval(() => {
140+
this.panel.postMessage('bytesPos1b', { bytePos1b })
141+
bytePos1b = bytePos1b + 2
142+
}, 1000)
143+
}
138144
this.disposables = [
139145
this.panel,
140146
vscode.debug.onDidReceiveDebugSessionCustomEvent(async (e) => {
@@ -384,6 +390,11 @@ export class DataEditorClient implements vscode.Disposable {
384390
filename: this.fileToEdit,
385391
language: data.language,
386392
})
393+
this.panel.postMessage('counts', {
394+
applied: 0,
395+
computedFileSize: data.computedFileSize,
396+
undos: 0,
397+
})
387398
// send the initial file info to the webview
388399
// await this.panel.postMessage({
389400
// command: MessageCommand.fileInfo,
@@ -393,28 +404,20 @@ export class DataEditorClient implements vscode.Disposable {
393404

394405
private async sendHeartbeat() {
395406
const heartbeatInfo = getCurrentHeartbeatInfo()
396-
397-
// await this.panel.postMessage({
398-
// command: MessageCommand.heartbeat,
399-
// data: {
400-
// latency: heartbeatInfo.latency,
401-
// omegaEditPort: this.configVars.port,
402-
// serverCpuLoadAverage: heartbeatInfo.serverCpuLoadAverage,
403-
// serverUptime: heartbeatInfo.serverUptime,
404-
// serverUsedMemory: heartbeatInfo.serverUsedMemory,
405-
// sessionCount: heartbeatInfo.sessionCount,
406-
// serverInfo: {
407-
// omegaEditPort: this.configVars.port,
408-
// serverVersion: serverInfo.serverVersion,
409-
// serverHostname: serverInfo.serverHostname,
410-
// serverProcessId: serverInfo.serverProcessId,
411-
// jvmVersion: serverInfo.jvmVersion,
412-
// jvmVendor: serverInfo.jvmVendor,
413-
// jvmPath: serverInfo.jvmPath,
414-
// availableProcessors: serverInfo.availableProcessors,
415-
// },
416-
// },
417-
// })
407+
this.panel.postMessage('heartbeat', {
408+
...heartbeatInfo,
409+
port: 9000, // TODO: Get this from stored value
410+
// serverInfo: {
411+
// omegaEditPort: this.configVars.port,
412+
// serverVersion: serverInfo.serverVersion,
413+
// serverHostname: serverInfo.serverHostname,
414+
// serverProcessId: serverInfo.serverProcessId,
415+
// jvmVersion: serverInfo.jvmVersion,
416+
// jvmVendor: serverInfo.jvmVendor,
417+
// jvmPath: serverInfo.jvmPath,
418+
// availableProcessors: serverInfo.availableProcessors,
419+
// },
420+
})
418421
}
419422

420423
private async sendChangesInfo() {
@@ -445,7 +448,11 @@ export class DataEditorClient implements vscode.Disposable {
445448
break
446449
}
447450
})
448-
451+
this.panel.postMessage('counts', {
452+
applied: data.changeCount,
453+
computedFileSize: data.computedFileSize,
454+
undos: data.undoCount,
455+
})
449456
// send the accumulated counts to the webview
450457
// await this.panel.postMessage({
451458
// command: MessageCommand.fileInfo,
@@ -985,6 +992,14 @@ async function sendViewportRefresh(
985992
panel: DataEditorUI,
986993
viewportDataResponse: ViewportDataResponse
987994
): Promise<void> {
995+
panel.postMessage('viewportRefresh', {
996+
viewportId: viewportDataResponse.getViewportId(),
997+
fileOffset: viewportDataResponse.getOffset(),
998+
length: viewportDataResponse.getLength(),
999+
bytesLeft: viewportDataResponse.getFollowingByteCount(),
1000+
data: viewportDataResponse.getData_asU8(),
1001+
capacity: VIEWPORT_CAPACITY_MAX,
1002+
})
9881003
// await panel.postMessage({
9891004
// command: MessageCommand.viewportRefresh,
9901005
// data: {

src/dataEditor/ui/svelteWebviewInitializer.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,15 @@ class SvelteWebviewInitializer {
128128
return idStr
129129
}
130130
createSveltePanel(args: SveltePanelArgs): SvelteUIWebviewPanel {
131+
const opts = this.getWebviewOptions()
131132
const ret = vscode.window.createWebviewPanel(
132133
SvelteUIWebviewPanel.uiViewId,
133134
args.title,
134-
args.column
135+
args.column,
136+
{
137+
...opts,
138+
}
135139
)
136-
this.setWebviewOptions(ret)
137140
this.setHtmlContent(ret, args.uiMsgId)
138141

139142
return new SvelteUIWebviewPanel(ret, args.uiMsgId)
@@ -199,7 +202,7 @@ class SvelteWebviewInitializer {
199202
}
200203
return text
201204
}
202-
private setWebviewOptions(vsPanel: vscode.WebviewPanel) {
205+
private getWebviewOptions() {
203206
const opts: vscode.WebviewPanelOptions & vscode.WebviewOptions = {
204207
enableScripts: true,
205208
retainContextWhenHidden: true,
@@ -211,7 +214,7 @@ class SvelteWebviewInitializer {
211214
),
212215
],
213216
}
214-
vsPanel.webview.options = opts
217+
return opts
215218
}
216219

217220
// get the svelte app distribution folder uri

src/ext_types/messageContent.ts

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
ApplyChangesRequest,
1010
ChangesInfoResponse,
1111
CountResponse,
12+
DFDLDataBytePos,
1213
EditedDataRequest,
1314
EditedDataResponse,
1415
EditorOnChangeRequest,
@@ -98,6 +99,7 @@ export interface MessageResponseMap extends CommandMap {
9899
showMessage: undefined
99100
setUITheme: void
100101
heartbeat: IServerHeartbeat & { port: number }
102+
bytesPos1b: DFDLDataBytePos
101103
}
102104

103105
export type ExtensionMessageKeys =
@@ -121,55 +123,14 @@ export type DataEditorMessageResponses = Pick<
121123
* Key indexable interface to templated type inference of available messages sent between
122124
* the components of the DFDL VSCode extension.
123125
*/
124-
// export interface DataEditorMessageRequests
125-
// extends MessageRequestMap<EditorMessageId> {
126-
// counts: never
127-
// clearChanges: never
128-
// applyChanges: ApplyChangesRequest
129-
// editorOnChange: EditorOnChangeRequest
130-
// fileInfo: never // service
131-
// heartbeat: never // service
132-
// profile: ProfileRequest // service
133-
// redoChange: never
134-
// replaceResults: never
135-
// requestEditedData: EditedDataRequest
136-
// save: SaveRequest
137-
// saveAs: SaveRequest
138-
// saveSegment: SaveSegmentRequest
139-
// scrollViewport: ScrollViewportRequest
140-
// search: SearchRequest
141-
// replace: ReplaceRequest
142-
// undoChange: UndoRequest
143-
// viewportRefresh: never
144-
// }
145126
export type ExtensionMessageRequests = Pick<
146127
MessageRequestMap,
147128
ExtensionMessageKeys
148129
>
149130

150-
// export type ExtensionMessageResponses = Pick<
151-
152-
// export interface DataEditorMessageResponses
153-
// extends Record<keyof DataEditorMessageRequests, unknown> {
154-
// clearChanges: void
155-
// applyChanges: ChangesInfoResponse
156-
// editorOnChange: EditorOnChangeResponse
157-
// fileInfo: FileInfoResponse
158-
// counts: CountResponse
159-
// // heartbeat: IServerHeartbeat & { port: number } // service
160-
// profile: ProfileResponse
161-
// redoChange: void
162-
// replaceResults: ReplaceResponse
163-
// requestEditedData: EditedDataResponse
164-
// save: void
165-
// saveAs: SaveAsResponse
166-
// saveSegment: void
167-
// scrollViewport: void
168-
// search: SearchResponse
169-
// replace: ReplaceResponse
170-
// undoChange: void
171-
// viewportRefresh: ViewportRefreshResponse
172-
// }
131+
export interface DFDLSessionMessageResponses extends MessageResponseMap {
132+
bytesPos1b: DFDLDataBytePos
133+
}
173134

174135
export type VSEditorMessagePackage<K extends keyof DataEditorMessageRequests> =
175136
{

src/ext_types/messages.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,7 @@ export type CountResponse = {
178178
export type SaveAsResponse = {
179179
newFilePath: string
180180
}
181+
182+
export type DFDLDataBytePos = {
183+
bytePos1b: number
184+
}

src/svelte/src/App.svelte

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,17 @@ limitations under the License.
5959
import { byte_count_divisible_offset } from './utilities/display'
6060
import Help from './components/layouts/Help.svelte'
6161
import { EditByteModes, type BytesPerRow } from 'ext_types'
62-
import { VIEWPORT_SCROLL_INCREMENT } from './stores/configuration'
63-
import { getUIMsgId, setUIMsgId } from './stores/states.svelte'
62+
import { VIEWPORT_CAPACITY_MAX, VIEWPORT_SCROLL_INCREMENT } from './stores/configuration'
63+
import { getUIMsgId, setUIMessenger, setUIMsgId } from './stores/states.svelte'
6464
setUIMsgId( document.getElementById('app')?.attributes['extension_msg_id'].value )
6565
console.log("Svelte UI Messenger Id: ", getUIMsgId())
6666
67-
vscode.registerMessenger(getUIMsgId())
67+
const messenger = setUIMessenger(vscode.getMessenger(getUIMsgId()))
6868
6969
function requestEditedData() {
7070
if ($requestable) {
7171
72-
vscode.postMessage('test','requestEditedData', {
72+
messenger.postMessage('requestEditedData', {
7373
selectionToFileOffset: $selectionDataStore.startOffset,
7474
editedContent: $editorSelection,
7575
viewport: $focusedViewportId,
@@ -158,7 +158,7 @@ limitations under the License.
158158
$bytesPerRow,
159159
fetchOffset
160160
)
161-
vscode.postMessage('test','scrollViewport', {
161+
messenger.postMessage('scrollViewport', {
162162
startOffset: fetchOffset,
163163
bytesPerRow: $bytesPerRow,
164164
numLinesDisplayed: $dataDislayLineAmount,
@@ -174,7 +174,7 @@ limitations under the License.
174174
const navigationData = navigationEvent.detail
175175
$dataFeedAwaitRefresh = true
176176
177-
vscode.postMessage('test','scrollViewport', {
177+
messenger.postMessage('scrollViewport', {
178178
startOffset: navigationData.nextViewportOffset,
179179
bytesPerRow: $bytesPerRow
180180
})
@@ -222,7 +222,7 @@ limitations under the License.
222222
editedData = new Uint8Array(0)
223223
break
224224
}
225-
vscode.postMessage('test','applyChanges', {
225+
messenger.postMessage('applyChanges', {
226226
offset: editedOffset,
227227
original_segment: originalData as Uint8Array,
228228
edited_segment: editedData,
@@ -234,15 +234,15 @@ limitations under the License.
234234
}
235235
236236
function undo() {
237-
vscode.postMessage('test',"undoChange")
237+
messenger.postMessage("undoChange")
238238
}
239239
240240
function redo() {
241-
vscode.postMessage('test',"redoChange")
241+
messenger.postMessage("redoChange")
242242
}
243243
244244
function clearChangeStack() {
245-
vscode.postMessage('test','clearChanges')
245+
messenger.postMessage('clearChanges')
246246
}
247247
248248
function clearDataDisplays() {
@@ -270,6 +270,19 @@ limitations under the License.
270270
}
271271
}
272272
273+
messenger.addListener(
274+
'viewportRefresh',
275+
(msg) => {
276+
const { data , fileOffset, length, bytesLeft } = msg
277+
$viewport = {
278+
data: data as Uint8Array<ArrayBuffer>,
279+
fileOffset,
280+
length,
281+
bytesLeft,
282+
capacity: VIEWPORT_CAPACITY_MAX
283+
}
284+
}
285+
)
273286
window.addEventListener('message', (msg) => {
274287
switch (msg.data.command) {
275288
case "editorOnChange":

src/svelte/src/components/DataDisplays/CustomByteDisplay/DataLineFeed.svelte

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ limitations under the License.
1919
import {
2020
editedDataSegment,
2121
editMode,
22-
editorEncoding,
2322
focusedViewportId,
2423
selectionDataStore,
25-
selectionSize,
2624
selectedByte,
2725
fileMetrics,
2826
searchQuery,
@@ -43,7 +41,6 @@ limitations under the License.
4341
import {
4442
VIEWPORT_SCROLL_INCREMENT,} from '../../../stores/configuration'
4543
// import { MessageCommand } from '../../../utilities/message'
46-
import { vscode } from '../../../utilities/vscode'
4744
import Button from '../../Inputs/Buttons/Button.svelte'
4845
import FlexContainer from '../../layouts/FlexContainer.svelte'
4946
import {
@@ -72,7 +69,8 @@ limitations under the License.
7269
import { bytesPerRow } from '../../../stores'
7370
7471
/* DEBUG_ONLY_START */
75-
import { addVarToDebug, getDebugVarContext } from '../../Debug'
72+
import { getDebugVarContext } from '../../Debug'
73+
import { getUIMessenger } from 'stores/states.svelte'
7674
const debugVarsCtx = getDebugVarContext()
7775
debugVarsCtx.add(
7876
{ id: 'bytes / row', valueStr: () => $bytesPerRow.toString() },
@@ -561,7 +559,18 @@ limitations under the License.
561559
bytepos < last + viewportData.fileOffset
562560
)
563561
}
562+
getUIMessenger().addListener(
563+
'bytesPos1b',
564+
(msg)=>{
565+
const { bytePos1b } = msg
566+
if (!bytePosIsDisplayable(bytePos1b)) {
567+
$seekOffsetInput = bytePos1b.toString(addressRadix)
568+
eventDispatcher('seek')
569+
}
570+
$dfdlBytePos = bytePos1b
564571
572+
}
573+
)
565574
window.addEventListener('keydown', navigation_keydown_event)
566575
window.addEventListener('message', (msg) => {
567576
switch (msg.data.command) {

0 commit comments

Comments
 (0)