@@ -44,9 +44,6 @@ import java.beans.PropertyChangeListener
44
44
import javax.swing.*
45
45
import javax.swing.border.CompoundBorder
46
46
47
- /* *
48
- * Display shire file render prompt and have a sample file as view
49
- */
50
47
open class McpPreviewEditor (
51
48
val project : Project ,
52
49
val virtualFile : VirtualFile ,
@@ -64,6 +61,8 @@ open class McpPreviewEditor(
64
61
private lateinit var chatInput: JBTextField
65
62
private lateinit var sendButton: ActionButton
66
63
private lateinit var configButton: JButton
64
+ private lateinit var resultLabel: JLabel
65
+ private lateinit var resultPanel: JPanel
67
66
private val config = McpLlmConfig ()
68
67
private val borderColor = JBColor (0xE5E7EB , 0x3C3F41 ) // Equivalent to Tailwind gray-200
69
68
private val textGray = JBColor (0x6B7280 , 0x9DA0A8 ) // Equivalent to Tailwind gray-500
@@ -129,6 +128,27 @@ open class McpPreviewEditor(
129
128
background = UIUtil .getPanelBackground()
130
129
}
131
130
131
+ resultPanel = JPanel (BorderLayout ()).apply {
132
+ background = UIUtil .getPanelBackground()
133
+ border = CompoundBorder (
134
+ BorderFactory .createMatteBorder(1 , 0 , 1 , 0 , borderColor),
135
+ JBUI .Borders .empty(16 )
136
+ )
137
+ isVisible = false
138
+ }
139
+
140
+ resultLabel = JLabel ().apply {
141
+ font = JBUI .Fonts .label(14.0f )
142
+ border = JBUI .Borders .empty(10 )
143
+ }
144
+
145
+ val resultScrollPane = JBScrollPane (resultLabel).apply {
146
+ border = BorderFactory .createEmptyBorder()
147
+ background = UIUtil .getPanelBackground()
148
+ }
149
+
150
+ resultPanel.add(resultScrollPane, BorderLayout .CENTER )
151
+
132
152
toolsWrapper.add(toolsScrollPane, BorderLayout .CENTER )
133
153
134
154
// Redesigned bottom panel using BorderLayoutPanel for better layout management
@@ -225,6 +245,7 @@ open class McpPreviewEditor(
225
245
226
246
mainPanel.add(headerPanel, BorderLayout .NORTH )
227
247
mainPanel.add(toolsWrapper, BorderLayout .CENTER )
248
+ mainPanel.add(resultPanel, BorderLayout .CENTER )
228
249
mainPanel.add(bottomPanel, BorderLayout .SOUTH )
229
250
}
230
251
@@ -267,12 +288,20 @@ open class McpPreviewEditor(
267
288
val message = chatInput.text.trim()
268
289
val result = StringBuilder ()
269
290
val stream: Flow <String > = llmProvider.stream(message, systemPrompt = config.systemPrompt)
270
- // / create a result panel to save stream text
291
+
292
+ resultLabel.text = " Loading response..."
293
+ resultPanel.isVisible = true
294
+ mainPanel.revalidate()
295
+ mainPanel.repaint()
271
296
272
297
AutoDevCoroutineScope .scope(project).launch {
273
298
stream.cancellable().collect { chunk ->
274
299
result.append(chunk)
275
- // / update result panel in here ?
300
+ SwingUtilities .invokeLater {
301
+ resultLabel.text = result.toString()
302
+ mainPanel.revalidate()
303
+ mainPanel.repaint()
304
+ }
276
305
}
277
306
}
278
307
}
0 commit comments