@@ -63,7 +63,7 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
63
63
64
64
var lastExecutionResults: String = " "
65
65
var hasExecutionResults: Boolean = false
66
-
66
+
67
67
var isExecuting = false
68
68
var currentExecutionJob: Job ? = null
69
69
@@ -137,12 +137,6 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
137
137
terminalWidget!! .addMessageFilter(FrontendWebViewServerFilter (project, mainPanel!! ))
138
138
}
139
139
140
- /* *
141
- * 设置终端执行结果的状态
142
- *
143
- * @param state 执行状态
144
- * @param message 附加消息(如错误信息)
145
- */
146
140
fun setResultStatus (state : TerminalExecutionState , message : String? = null) {
147
141
ApplicationManager .getApplication().invokeLater {
148
142
when (state) {
@@ -151,38 +145,38 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
151
145
resultPanel.border = JBUI .Borders .emptyTop(1 )
152
146
collapsibleResultPanel.setTitle(" 准备执行" )
153
147
}
154
-
148
+
155
149
TerminalExecutionState .EXECUTING -> {
156
150
resultPanel.background = UIUtil .getPanelBackground()
157
151
resultPanel.border = LineBorder (AutoDevColors .EXECUTION_RUNNING_BORDER , 1 )
158
152
collapsibleResultPanel.setTitle(" ⏳ 正在执行..." )
159
153
}
160
-
154
+
161
155
TerminalExecutionState .SUCCESS -> {
162
156
resultPanel.background = AutoDevColors .EXECUTION_SUCCESS_BACKGROUND
163
157
resultPanel.border = LineBorder (AutoDevColors .EXECUTION_SUCCESS_BORDER , 1 )
164
158
collapsibleResultPanel.setTitle(" ✅ 执行成功" )
165
159
}
166
-
160
+
167
161
TerminalExecutionState .FAILED -> {
168
162
resultPanel.background = AutoDevColors .EXECUTION_ERROR_BACKGROUND
169
163
resultPanel.border = LineBorder (AutoDevColors .EXECUTION_ERROR_BORDER , 1 )
170
164
val errorText = message?.let { " : $it " } ? : " "
171
165
collapsibleResultPanel.setTitle(" ❌ 执行失败$errorText " )
172
166
}
173
-
167
+
174
168
TerminalExecutionState .TERMINATED -> {
175
169
resultPanel.background = UIUtil .getPanelBackground()
176
170
resultPanel.border = LineBorder (AutoDevColors .EXECUTION_WARNING_BORDER , 1 )
177
171
collapsibleResultPanel.setTitle(" ⚠️ 执行已终止" )
178
172
}
179
173
}
180
-
174
+
181
175
currentExecutionState = state
182
176
resultPanel.repaint()
183
177
}
184
178
}
185
-
179
+
186
180
private fun toggleTerminalAction () {
187
181
resizableTerminalPanel.isVisible = ! resizableTerminalPanel.isVisible
188
182
resizableTerminalPanel.revalidate()
@@ -191,18 +185,17 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
191
185
}
192
186
193
187
fun createConsoleActions (): List <AnAction > {
194
- // 修改这里,直接实例化外部的 TerminalExecuteAction 类
195
188
executeAction = TerminalExecuteAction (this )
196
189
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 ) {
199
192
override fun actionPerformed (e : AnActionEvent ) {
200
193
toggleTerminalAction()
201
194
}
202
195
}
203
196
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 ) {
206
199
override fun actionPerformed (e : AnActionEvent ) {
207
200
val clipboard = Toolkit .getDefaultToolkit().systemClipboard
208
201
val textToCopy = if (hasExecutionResults) {
@@ -216,8 +209,8 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
216
209
}
217
210
}
218
211
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 ) {
221
214
override fun actionPerformed (e : AnActionEvent ) {
222
215
try {
223
216
val output = if (hasExecutionResults) {
@@ -233,12 +226,8 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
233
226
}
234
227
}
235
228
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 ) {
242
231
override fun displayTextInToolbar (): Boolean = true
243
232
244
233
override fun actionPerformed (e : AnActionEvent ) {
@@ -328,16 +317,13 @@ class TerminalLangSketch(val project: Project, var content: String) : ExtensionL
328
317
ApplicationManager .getApplication().invokeLater {
329
318
terminalWidget!! .terminalStarter?.sendString(content, false )
330
319
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
340
322
}
323
+
324
+ val action =
325
+ AnActionEvent .createFromAnAction(executeAction, null , " AutoExecuteTerminal" , DataContext .EMPTY_CONTEXT )
326
+ executeAction.actionPerformed(action)
341
327
}
342
328
}
343
329
0 commit comments