@@ -41,8 +41,10 @@ public class ChatMessageResponseBody extends JPanel {
41
41
private final StreamParser streamParser ;
42
42
private final boolean readOnly ;
43
43
private final DefaultListModel <Details > webpageListModel = new DefaultListModel <>();
44
+ private final WebpageList webpageList = new WebpageList (webpageListModel );
44
45
private ResponseEditorPanel currentlyProcessedEditorPanel ;
45
46
private JTextPane currentlyProcessedTextPane ;
47
+ private JPanel webpageListPanel ;
46
48
private boolean responseReceived ;
47
49
48
50
public ChatMessageResponseBody (Project project , Disposable parentDisposable ) {
@@ -71,17 +73,10 @@ public ChatMessageResponseBody(
71
73
setOpaque (false );
72
74
73
75
if (webSearchIncluded ) {
74
- var title = new JPanel (new BorderLayout ());
75
- title .setOpaque (false );
76
- title .setBorder (JBUI .Borders .empty (8 , 0 ));
77
- title .add (new JBLabel (CodeGPTBundle .get ("chatMessageResponseBody.webPagesTitle" ))
78
- .withFont (JBUI .Fonts .miniFont ()), BorderLayout .LINE_START );
79
- add (title );
80
-
81
- var listPanel = new JPanel (new BorderLayout ());
82
- listPanel .add (new WebpageList (webpageListModel ), BorderLayout .LINE_START );
83
- add (listPanel );
76
+ webpageListPanel = createWebpageListPanel (webpageList );
77
+ add (webpageListPanel );
84
78
}
79
+
85
80
if (withGhostText ) {
86
81
prepareProcessingText (!readOnly );
87
82
currentlyProcessedTextPane .setText (
@@ -113,7 +108,11 @@ public void displayMissingCredential() {
113
108
.showSettingsDialog (project , GeneralSettingsConfigurable .class );
114
109
}
115
110
});
116
- currentlyProcessedTextPane .getCaret ().setVisible (false );
111
+ hideCaret ();
112
+
113
+ if (webpageListPanel != null ) {
114
+ webpageListPanel .setVisible (false );
115
+ }
117
116
}
118
117
119
118
public void displayQuotaExceeded () {
@@ -133,11 +132,9 @@ public void displayQuotaExceeded() {
133
132
}
134
133
});
135
134
hideCaret ();
136
- }
137
135
138
- public void hideCaret () {
139
- if (currentlyProcessedTextPane != null ) {
140
- currentlyProcessedTextPane .getCaret ().setVisible (false );
136
+ if (webpageListPanel != null ) {
137
+ webpageListPanel .setVisible (false );
141
138
}
142
139
}
143
140
@@ -150,6 +147,23 @@ public void displayError(String message) {
150
147
} else {
151
148
currentlyProcessedTextPane .setText (errorText );
152
149
}
150
+ hideCaret ();
151
+
152
+ if (webpageListPanel != null ) {
153
+ webpageListPanel .setVisible (false );
154
+ }
155
+ }
156
+
157
+ public void displayWebSearchItem (Details details ) {
158
+ webpageListModel .addElement (details );
159
+ webpageList .revalidate ();
160
+ webpageList .repaint ();
161
+ }
162
+
163
+ public void hideCaret () {
164
+ if (currentlyProcessedTextPane != null ) {
165
+ currentlyProcessedTextPane .getCaret ().setVisible (false );
166
+ }
153
167
}
154
168
155
169
public void clear () {
@@ -229,7 +243,20 @@ private JTextPane createTextPane(String text, boolean caretVisible) {
229
243
return textPane ;
230
244
}
231
245
232
- public void displayWebSearchItem (Details details ) {
233
- webpageListModel .addElement (details );
246
+ private static JPanel createWebpageListPanel (WebpageList webpageList ) {
247
+ var panel = new JPanel (new BorderLayout ());
248
+
249
+ var title = new JPanel (new BorderLayout ());
250
+ title .setOpaque (false );
251
+ title .setBorder (JBUI .Borders .empty (8 , 0 ));
252
+ title .add (new JBLabel (CodeGPTBundle .get ("chatMessageResponseBody.webPagesTitle" ))
253
+ .withFont (JBUI .Fonts .miniFont ()), BorderLayout .LINE_START );
254
+ panel .add (title );
255
+
256
+ var listPanel = new JPanel (new BorderLayout ());
257
+ listPanel .add (webpageList , BorderLayout .LINE_START );
258
+ panel .add (listPanel );
259
+
260
+ return panel ;
234
261
}
235
262
}
0 commit comments