diff --git a/package.json b/package.json index 98206f7..0238644 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,14 @@ "title": "%openmcp.hook.test-news.title%", "category": "openmcp", "icon": "$(test)" + }, + { + "command": "openmcp.sidebar.installed-connection.changeConnectionName", + "title": "%openmcp.sidebar.installed-connection.changeConnectionName.title%" + }, + { + "command": "openmcp.sidebar.workspace-connection.changeConnectionName", + "title": "%openmcp.sidebar.workspace-connection.changeConnectionName.title%" } ], "menus": { @@ -172,6 +180,14 @@ "view": "${viewItem}" } }, + { + "command": "openmcp.sidebar.workspace-connection.changeConnectionName", + "group": "navigation@1", + "when": "view == openmcp.sidebar.workspace-connection && viewItem == workspace-item", + "args": { + "view": "${viewItem}" + } + }, { "command": "openmcp.sidebar.installed-connection.revealWebviewPanel", "group": "inline@1", @@ -187,6 +203,14 @@ "args": { "view": "${viewItem}" } + }, + { + "command": "openmcp.sidebar.installed-connection.changeConnectionName", + "group": "navigation@1", + "when": "view == openmcp.sidebar.workspace-connection && viewItem == installed-item", + "args": { + "view": "${viewItem}" + } } ] }, @@ -299,4 +323,4 @@ "webpack-cli": "^5.1.4" }, "packageManager": "yarn@1.22.22" -} +} \ No newline at end of file diff --git a/package.nls.ja.json b/package.nls.ja.json index 7132d01..c0e6d96 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -14,5 +14,7 @@ "openmcp.sidebar.workspace-connection.view.title": "MCP 接続(ワークスペース)", "openmcp.sidebar.installed-connection.view.title": "インストール済み MCP サーバー", "openmcp.sidebar.help.view.title": "はじめに・ヘルプ", - "openmcp.hook.test-news.title": "テストニュースレポート" + "openmcp.hook.test-news.title": "テストニュースレポート", + "openmcp.sidebar.installed-connection.changeConnectionName.title": "サーバー名を変更", + "openmcp.sidebar.workspace-connection.changeConnectionName.title": "サーバー名を変更" } \ No newline at end of file diff --git a/package.nls.json b/package.nls.json index f59a1ff..2b33bd7 100644 --- a/package.nls.json +++ b/package.nls.json @@ -14,5 +14,7 @@ "openmcp.sidebar.workspace-connection.view.title": "MCP Connections (Workspace)", "openmcp.sidebar.installed-connection.view.title": "Installed MCP Servers", "openmcp.sidebar.help.view.title": "Getting Started & Help", - "openmcp.hook.test-news.title": "test news report" + "openmcp.hook.test-news.title": "Test News Report", + "openmcp.sidebar.installed-connection.changeConnectionName.title": "Change Server Name", + "openmcp.sidebar.workspace-connection.changeConnectionName.title": "Change Server Name" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index e4e9f73..aae7011 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -14,5 +14,7 @@ "openmcp.sidebar.workspace-connection.view.title": "MCP 连接 (工作区)", "openmcp.sidebar.installed-connection.view.title": "安装的 MCP 服务器", "openmcp.sidebar.help.view.title": "入门与帮助", - "openmcp.hook.test-news.title": "测试新闻报告" + "openmcp.hook.test-news.title": "测试新闻报告", + "openmcp.sidebar.installed-connection.changeConnectionName.title": "修改服务器名称", + "openmcp.sidebar.workspace-connection.changeConnectionName.title": "修改服务器名称" } \ No newline at end of file diff --git a/src/sidebar/installed.controller.ts b/src/sidebar/installed.controller.ts index 941b1e8..1db34bc 100644 --- a/src/sidebar/installed.controller.ts +++ b/src/sidebar/installed.controller.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import { RegisterCommand, RegisterTreeDataProvider } from '../common/index.js'; import { ConnectionViewItem } from './common.js'; import { getConnectionConfig, getInstalledConnectionConfigPath, saveConnectionConfig } from '../global.js'; -import { acquireInstalledConnection, deleteInstalledConnection } from './installed.service.js'; +import { acquireInstalledConnection, changeInstalledConnectionName, deleteInstalledConnection } from './installed.service.js'; import { revealOpenMcpWebviewPanel } from '../webview/webview.service.js'; @RegisterTreeDataProvider('openmcp.sidebar.installed-connection') @@ -14,6 +14,7 @@ export class McpInstalledConnectProvider implements vscode.TreeDataProvider { + if (!value || value.trim() === '') { + return t('error.connectionNameRequired'); + } + return null; + } + }); + + // 用户取消或输入无效名称 + if (!newName || newName.trim() === '' || newName === currentName) { + return; + } + + // 获取已安装的连接配置 + const installedConnection = getConnectionConfig(); + + // 更新连接名称 + masterNode.name = newName.trim(); + + // 保存更新后的配置 + saveConnectionConfig(); + + // 刷新侧边栏视图 + vscode.commands.executeCommand('openmcp.sidebar.installed-connection.refresh'); + + // 显示成功消息 + vscode.window.showInformationMessage(t('connectionNameChanged', currentName, newName)); +} export async function acquireInstalledConnection(): Promise { // 让用户选择连接类型 diff --git a/src/sidebar/workspace.controller.ts b/src/sidebar/workspace.controller.ts index acce499..d846517 100644 --- a/src/sidebar/workspace.controller.ts +++ b/src/sidebar/workspace.controller.ts @@ -3,7 +3,7 @@ import { RegisterCommand, RegisterTreeDataProvider } from '../common/index.js'; import { getWorkspaceConnectionConfig, getWorkspaceConnectionConfigPath, getWorkspacePath, saveWorkspaceConnectionConfig } from '../global.js'; import { ConnectionViewItem } from './common.js'; import { revealOpenMcpWebviewPanel } from '../webview/webview.service.js'; -import { acquireUserCustomConnection, deleteUserConnection } from './workspace.service.js'; +import { acquireUserCustomConnection, changeUserConnectionName, deleteUserConnection } from './workspace.service.js'; import { t } from '../i18n/index.js'; @RegisterTreeDataProvider('openmcp.sidebar.workspace-connection') @@ -15,6 +15,7 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider { @@ -96,4 +97,10 @@ export class McpWorkspaceConnectProvider implements vscode.TreeDataProvider { + if (!value || value.trim() === '') { + return t('error.connectionNameRequired'); + } + return null; + } + }); + + // 用户取消或输入无效名称 + if (!newName || newName.trim() === '' || newName === currentName) { + return; + } + + const workspaceConnectionConfig = getWorkspaceConnectionConfig(); + if (!workspaceConnectionConfig) { + vscode.window.showErrorMessage(t('error.notOpenWorkspace')); + return; + } + + // 更新连接名称 + masterNode.name = newName.trim(); + + // 保存更新后的配置 + const workspacePath = getWorkspacePath(); + await saveWorkspaceConnectionConfig(workspacePath); + + // 刷新侧边栏视图 + vscode.commands.executeCommand('openmcp.sidebar.workspace-connection.refresh'); + + // 显示成功消息 + vscode.window.showInformationMessage(t('connectionNameChanged', currentName, newName)); +} + export async function acquireUserCustomConnection(): Promise { // 让用户选择连接类型 const connectionType = await vscode.window.showQuickPick(['STDIO', 'SSE', 'STREAMABLE_HTTP'], {