Skip to content

Commit

Permalink
fix(lab): refresh running status
Browse files Browse the repository at this point in the history
  • Loading branch information
xujingli committed Jan 24, 2024
1 parent 5be6ab6 commit b170955
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import { LibroKernelManager, LibroSessionManager } from '@difizen/libro-kernel';
import { DocumentConnectionManager } from '@difizen/libro-lsp';
import type { ILanguageServerManager } from '@difizen/libro-lsp';
import type { ILSPDocumentConnectionManager } from '@difizen/libro-lsp';
import { TerminalManager } from '@difizen/libro-terminal';
import type { TOCView } from '@difizen/libro-toc';
import {
BaseView,
inject,
prop,
singleton,
useInject,
view,
Expand All @@ -32,20 +31,20 @@ const PanelRender: React.FC = () => {
const instance = useInject<KernelAndTerminalPanelView>(ViewInstance);
const openedTabView = instance.getAllOpenedTabView();

const libroKernelManager = useInject<LibroKernelManager>(LibroKernelManager);
const libroSessionManager = useInject<LibroSessionManager>(LibroSessionManager);
const { libroKernelManager, libroSessionManager, terminalManager, lspManager } =
instance;

const [kernelItems, setKernelItems] = useState<
LibroPanelCollapseKernelItem[] | undefined
>();

const terminalManager = useInject<TerminalManager>(TerminalManager);
const [terminalItems, setTerminalItems] = useState<
LibroPanelCollapseItem[] | undefined
>();

const lspManager = useInject<ILSPDocumentConnectionManager>(
DocumentConnectionManager,
).languageServerManager;
// const lspManager = useInject<ILSPDocumentConnectionManager>(
// DocumentConnectionManager,
// ).languageServerManager;

const [lspItems, setLSPItems] = useState<LibroPanelCollapseItem[] | undefined>();

Expand Down Expand Up @@ -127,6 +126,13 @@ const PanelRender: React.FC = () => {
type={LibroPanelCollapseItemType.PAGE}
items={undefined}
tabView={openedTabView}
shutdownAll={async () => {
openedTabView.children.forEach((item) => {
if (item.title.closable) {
item.dispose();
}
});
}}
/>
<LibroCollapse
type={LibroPanelCollapseItemType.KERNEL}
Expand Down Expand Up @@ -155,17 +161,38 @@ export class KernelAndTerminalPanelView extends BaseView {
override view = PanelRender;
@inject(ViewManager) protected viewManager: ViewManager;
@inject(LayoutService) protected layoutService: LayoutService;
@prop() libroTocView: TOCView | undefined;

constructor() {
libroKernelManager: LibroKernelManager;
libroSessionManager: LibroSessionManager;
terminalManager: TerminalManager;
lspManager: ILanguageServerManager;

constructor(
@inject(LibroKernelManager) libroKernelManager: LibroKernelManager,
@inject(LibroSessionManager) libroSessionManager: LibroSessionManager,
@inject(TerminalManager) terminalManager: TerminalManager,
@inject(DocumentConnectionManager)
lspDocumentConnectionManager: ILSPDocumentConnectionManager,
) {
super();
this.title.icon = <KernelAndTerminal />;
this.title.label = '运行的终端和内核';

this.libroKernelManager = libroKernelManager;
this.libroSessionManager = libroSessionManager;
this.terminalManager = terminalManager;
this.lspManager = lspDocumentConnectionManager.languageServerManager;
}

getAllOpenedTabView(): SaveableTabView {
return this.layoutService.getAllSlotView(
LibroLabLayoutSlots.content,
) as SaveableTabView;
}

refresh() {
this.libroSessionManager.refreshRunning();
this.terminalManager.refreshRunning();
this.lspManager.refreshRunning();
}
}
2 changes: 2 additions & 0 deletions packages/libro-lab/src/kernel-and-terminal-panel/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import { createViewPreference, ManaModule } from '@difizen/mana-app';
import { LibroLabLayoutSlots } from '../layout/protocol.js';

import { KernelAndTerminalPanelView } from './kernel-and-terminal-panel-view.js';
import { PanelCommandContribution } from './panel-command.js';

export const LibroKernelAndTerminalPanelModule = ManaModule.create().register(
PanelCommandContribution,
KernelAndTerminalPanelView,
createViewPreference({
view: KernelAndTerminalPanelView,
Expand Down
57 changes: 57 additions & 0 deletions packages/libro-lab/src/kernel-and-terminal-panel/panel-command.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { ReloadOutlined } from '@ant-design/icons';
import type { CommandRegistry, ToolbarRegistry } from '@difizen/mana-app';
import { ViewManager } from '@difizen/mana-app';
import {
CommandContribution,
inject,
MenuContribution,
singleton,
ToolbarContribution,
} from '@difizen/mana-app';

import { KernelAndTerminalPanelView } from './kernel-and-terminal-panel-view.js';

export const PanelCommand = {
REFRESH: {
id: 'panel.command.refresh',
label: '刷新',
},
};

@singleton({
contrib: [CommandContribution, MenuContribution, ToolbarContribution],
})
export class PanelCommandContribution
implements CommandContribution, ToolbarContribution
{
protected viewManager: ViewManager;

@inject(KernelAndTerminalPanelView)
kernelAndTerminalPanelView: KernelAndTerminalPanelView;

constructor(@inject(ViewManager) viewManager: ViewManager) {
this.viewManager = viewManager;
}

registerCommands(command: CommandRegistry): void {
command.registerCommand(PanelCommand.REFRESH, {
execute: async (view) => {
if (view instanceof KernelAndTerminalPanelView) {
this.kernelAndTerminalPanelView.refresh();
}
},
isVisible: (view) => {
return view instanceof KernelAndTerminalPanelView;
},
});
}

registerToolbarItems(toolbarRegistry: ToolbarRegistry): void {
toolbarRegistry.registerItem({
id: PanelCommand.REFRESH.id,
command: PanelCommand.REFRESH.id,
icon: <ReloadOutlined />,
tooltip: '刷新',
});
}
}
4 changes: 4 additions & 0 deletions packages/libro-lsp/src/manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ export class LanguageServerManager implements ILanguageServerManager {
.catch(console.error);
}

async refreshRunning() {
// TODO: refreshRunning
}

async shutdownAll() {
// TODO: shutdownAll
}
Expand Down
2 changes: 2 additions & 0 deletions packages/libro-lsp/src/tokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ export interface ILanguageServerManager extends Disposable {

shutdown: (key: string) => Promise<void>;

refreshRunning: () => Promise<void>;

/**
* @alpha
*
Expand Down

0 comments on commit b170955

Please sign in to comment.