Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/panels/home-view-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,15 @@ export class HomeViewProvider implements vscode.WebviewViewProvider {
this._eventEmitter = eventEmitter;
}

public setDebuggerStatus(isConnected: boolean, minecraftCapabilities: MinecraftCapabilities): void {
public setDebuggerStatus(
isConnected: boolean,
minecraftCapabilities: MinecraftCapabilities,
isListening: boolean,
): void {
this._view?.webview.postMessage({
type: 'debugger-status',
isConnected: isConnected,
isListening: isListening,
supportsCommands: minecraftCapabilities.supportsCommands,
supportsProfiler: minecraftCapabilities.supportsProfiler,
});
Expand Down
7 changes: 4 additions & 3 deletions src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ export class Session extends DebugSession implements IDebuggeeMessageSender {
}

private onRequestDebuggerStatus(): void {
this._homeViewProvider.setDebuggerStatus(this._connected, this._minecraftCapabilities);
this._homeViewProvider.setDebuggerStatus(this._connected, this._minecraftCapabilities, !!this._debugeeServer);
}

// MC has sent the profiler capture results to the debugger
Expand Down Expand Up @@ -723,6 +723,7 @@ export class Session extends DebugSession implements IDebuggeeMessageSender {
this.onDebugeeConnected(socket);
});
this._debugeeServer.listen(port);
this._homeViewProvider.setDebuggerStatus(false, this._minecraftCapabilities, true);
this.showNotification(`Listening for debugger connections on port [${port}].`, LogLevel.Log);
}

Expand Down Expand Up @@ -790,7 +791,7 @@ export class Session extends DebugSession implements IDebuggeeMessageSender {
this._minecraftCapabilities = this.getMinecraftCapabilities();

// notify home view of session connection
this._homeViewProvider.setDebuggerStatus(true, this._minecraftCapabilities);
this._homeViewProvider.setDebuggerStatus(true, this._minecraftCapabilities, !!this._debugeeServer);

// respond with protocol version and chosen debugee target
this.sendDebuggeeMessage({
Expand Down Expand Up @@ -877,7 +878,7 @@ export class Session extends DebugSession implements IDebuggeeMessageSender {

this.sendEvent(new TerminatedEvent());
this.showNotification(`Session terminated, ${reason}.`, logLevel, logLevel !== LogLevel.Log);
this._homeViewProvider.setDebuggerStatus(false, this._minecraftCapabilities);
this._homeViewProvider.setDebuggerStatus(false, this._minecraftCapabilities, !!this._debugeeServer);
this.dispose();
}
}
Expand Down
4 changes: 4 additions & 0 deletions webview-ui/src/home_panel/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@
background-color: var(--vscode-editorError-foreground);
}

.status-circle.listening {
background-color: var(--vscode-editorWarning-foreground);
}

/*
* Command Section
*/
Expand Down
4 changes: 3 additions & 1 deletion webview-ui/src/home_panel/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const onCaptureBasePathBrowseButtonPressed = () => {

const App = () => {
const [debuggerConnected, setDebuggerConnected] = useState<boolean>(false);
const [debuggerListening, setDebuggerListening] = useState<boolean>(false);
const [supportsCommands, setSupportsCommands] = useState<boolean>(false);
const [supportsProfiler, setSupportsProfiler] = useState<boolean>(false);

Expand Down Expand Up @@ -104,6 +105,7 @@ const App = () => {
setProfilerCapturing(false);
}
setDebuggerConnected(message.isConnected);
setDebuggerListening(message.isListening);
setSupportsCommands(message.supportsCommands);
setSupportsProfiler(message.supportsProfiler);
}
Expand All @@ -119,7 +121,7 @@ const App = () => {
// Render
return (
<main>
<StatusSection debuggerConnected={debuggerConnected} />
<StatusSection debuggerConnected={debuggerConnected} debuggerListening={debuggerListening} />
<GeneralSection
onShowDiagnosticsPanel={onShowDiagnosticsPanel}
onOpenDiagnosticsReplay={onOpenDiagnosticsReplay}
Expand Down
12 changes: 9 additions & 3 deletions webview-ui/src/home_panel/controls/StatusSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,19 @@ import React from 'react';

interface StatusSectionProps {
debuggerConnected: boolean;
debuggerListening: boolean;
}

const StatusSection: React.FC<StatusSectionProps> = ({ debuggerConnected }) => {
const StatusSection: React.FC<StatusSectionProps> = ({ debuggerConnected, debuggerListening }) => {
const statusClassName = debuggerConnected ? 'active' : debuggerListening ? 'listening' : 'inactive';
const statusText = debuggerConnected
? 'Minecraft Connected'
: `Minecraft Disconnected (${debuggerListening ? 'Session Active' : 'No Active Session'})`;

return (
<div className="status-container">
<div className={`status-circle ${debuggerConnected ? 'active' : 'inactive'}`}></div>
{debuggerConnected ? 'Minecraft Connected' : 'Minecraft Disconnected'}
<div className={`status-circle ${statusClassName}`}></div>
{statusText}
</div>
);
};
Expand Down