Skip to content

Commit 9108d22

Browse files
committed
refactor(terminal): optimize terminal execution and UI interactions
- Remove unused comment blocks and redundant code - Improve code readability and reduce code duplication in AnAction objects - Optimize terminal execution flow, considering enableAutoRunTerminal flag- Refactor result status updates and terminal actions for better maintainability
1 parent 40af31e commit 9108d22

File tree

1 file changed

+21
-35
lines changed

1 file changed

+21
-35
lines changed

exts/ext-terminal/src/main/kotlin/cc/unitmesh/terminal/sketch/TerminalSketchProvider.kt

Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
6363

6464
var lastExecutionResults: String = ""
6565
var hasExecutionResults: Boolean = false
66-
66+
6767
var isExecuting = false
6868
var currentExecutionJob: Job? = null
6969

@@ -137,12 +137,6 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
137137
terminalWidget!!.addMessageFilter(FrontendWebViewServerFilter(project, mainPanel!!))
138138
}
139139

140-
/**
141-
* 设置终端执行结果的状态
142-
*
143-
* @param state 执行状态
144-
* @param message 附加消息(如错误信息)
145-
*/
146140
fun setResultStatus(state: TerminalExecutionState, message: String? = null) {
147141
ApplicationManager.getApplication().invokeLater {
148142
when (state) {
@@ -151,38 +145,38 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
151145
resultPanel.border = JBUI.Borders.emptyTop(1)
152146
collapsibleResultPanel.setTitle("准备执行")
153147
}
154-
148+
155149
TerminalExecutionState.EXECUTING -> {
156150
resultPanel.background = UIUtil.getPanelBackground()
157151
resultPanel.border = LineBorder(AutoDevColors.EXECUTION_RUNNING_BORDER, 1)
158152
collapsibleResultPanel.setTitle("⏳ 正在执行...")
159153
}
160-
154+
161155
TerminalExecutionState.SUCCESS -> {
162156
resultPanel.background = AutoDevColors.EXECUTION_SUCCESS_BACKGROUND
163157
resultPanel.border = LineBorder(AutoDevColors.EXECUTION_SUCCESS_BORDER, 1)
164158
collapsibleResultPanel.setTitle("✅ 执行成功")
165159
}
166-
160+
167161
TerminalExecutionState.FAILED -> {
168162
resultPanel.background = AutoDevColors.EXECUTION_ERROR_BACKGROUND
169163
resultPanel.border = LineBorder(AutoDevColors.EXECUTION_ERROR_BORDER, 1)
170164
val errorText = message?.let { ": $it" } ?: ""
171165
collapsibleResultPanel.setTitle("❌ 执行失败$errorText")
172166
}
173-
167+
174168
TerminalExecutionState.TERMINATED -> {
175169
resultPanel.background = UIUtil.getPanelBackground()
176170
resultPanel.border = LineBorder(AutoDevColors.EXECUTION_WARNING_BORDER, 1)
177171
collapsibleResultPanel.setTitle("⚠️ 执行已终止")
178172
}
179173
}
180-
174+
181175
currentExecutionState = state
182176
resultPanel.repaint()
183177
}
184178
}
185-
179+
186180
private fun toggleTerminalAction() {
187181
resizableTerminalPanel.isVisible = !resizableTerminalPanel.isVisible
188182
resizableTerminalPanel.revalidate()
@@ -191,18 +185,17 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
191185
}
192186

193187
fun createConsoleActions(): List<AnAction> {
194-
// 修改这里,直接实例化外部的 TerminalExecuteAction 类
195188
executeAction = TerminalExecuteAction(this)
196189

197-
val showTerminalAction = object :
198-
AnAction(AutoDevBundle.message("sketch.terminal.copy.text"), AutoDevBundle.message("sketch.terminal.show.hide"), AutoDevIcons.Terminal) {
190+
val showText = AutoDevBundle.message("sketch.terminal.show.hide")
191+
val showTerminalAction = object : AnAction(showText, showText, AutoDevIcons.Terminal) {
199192
override fun actionPerformed(e: AnActionEvent) {
200193
toggleTerminalAction()
201194
}
202195
}
203196

204-
val copyAction = object :
205-
AnAction(AutoDevBundle.message("sketch.terminal.copy.text"), AutoDevBundle.message("sketch.terminal.copy.text"), AutoDevIcons.Copy) {
197+
val copyText = AutoDevBundle.message("sketch.terminal.copy.text")
198+
val copyAction = object : AnAction(copyText, copyText, AutoDevIcons.Copy) {
206199
override fun actionPerformed(e: AnActionEvent) {
207200
val clipboard = Toolkit.getDefaultToolkit().systemClipboard
208201
val textToCopy = if (hasExecutionResults) {
@@ -216,8 +209,8 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
216209
}
217210
}
218211

219-
val sendAction = object :
220-
AnAction(AutoDevBundle.message("sketch.terminal.send.chat"), AutoDevBundle.message("sketch.terminal.send.chat"), AutoDevIcons.Send) {
212+
val sendText = AutoDevBundle.message("sketch.terminal.send.chat")
213+
val sendAction = object : AnAction(sendText, sendText, AutoDevIcons.Send) {
221214
override fun actionPerformed(e: AnActionEvent) {
222215
try {
223216
val output = if (hasExecutionResults) {
@@ -233,12 +226,8 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
233226
}
234227
}
235228

236-
val popupAction = object :
237-
AnAction(
238-
"Popup",
239-
AutoDevBundle.message("sketch.terminal.popup"),
240-
AllIcons.Ide.External_link_arrow
241-
) {
229+
val popup = AutoDevBundle.message("sketch.terminal.popup")
230+
val popupAction = object : AnAction(popup, popup, AllIcons.Ide.External_link_arrow) {
242231
override fun displayTextInToolbar(): Boolean = true
243232

244233
override fun actionPerformed(e: AnActionEvent) {
@@ -328,16 +317,13 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
328317
ApplicationManager.getApplication().invokeLater {
329318
terminalWidget!!.terminalStarter?.sendString(content, false)
330319

331-
if (enableAutoRunTerminal && ::executeAction.isInitialized) {
332-
executeAction.actionPerformed(
333-
AnActionEvent.createFromAnAction(
334-
executeAction,
335-
null,
336-
"AutoExecuteTerminal",
337-
DataContext.EMPTY_CONTEXT
338-
)
339-
)
320+
if (!enableAutoRunTerminal || !::executeAction.isInitialized) {
321+
return@invokeLater
340322
}
323+
324+
val action =
325+
AnActionEvent.createFromAnAction(executeAction, null, "AutoExecuteTerminal", DataContext.EMPTY_CONTEXT)
326+
executeAction.actionPerformed(action)
341327
}
342328
}
343329

0 commit comments

Comments
 (0)