Skip to content

Commit 1f18e16

Browse files
committed
Added JTextArea for exception cause details
1 parent 0ee0225 commit 1f18e16

File tree

1 file changed

+22
-6
lines changed
  • ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/log

1 file changed

+22
-6
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/console/log/LogPanel.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import com.intellij.openapi.project.Project;
99
import com.intellij.openapi.ui.popup.JBPopupFactory;
1010
import com.intellij.openapi.util.Disposer;
11+
import com.intellij.ui.components.JBScrollPane;
1112
import com.intellij.util.messages.MessageBus;
13+
import com.intellij.util.ui.JBUI;
1214
import com.neueda.jetbrains.plugin.graphdb.database.api.query.GraphQueryResult;
1315
import com.neueda.jetbrains.plugin.graphdb.jetbrains.actions.execute.ExecuteQueryPayload;
1416
import com.neueda.jetbrains.plugin.graphdb.jetbrains.component.datasource.metadata.DataSourceMetadata;
@@ -24,11 +26,14 @@
2426
import java.util.Map;
2527

2628
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryParametersRetrievalErrorEvent.PARAMS_ERROR_COMMON_MSG;
29+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.DataSourceDialog.HEIGHT;
30+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.DataSourceDialog.THICKNESS;
2731
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.getCause;
32+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.truncateString;
2833
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.wrapExceptionInMeaningMessage;
2934

3035
public class LogPanel implements Disposable {
31-
private static final String SHOW_DETAILS = "Show details";
36+
private static final String SHOW_DETAILS = "Details...";
3237

3338
private ConsoleView log;
3439
private Map<String, String> exceptions = new HashMap<>();
@@ -159,7 +164,7 @@ private String printException(Exception exception) {
159164
}
160165
error(errorMessage);
161166
String details = exception.getMessage() + '\n' + getCause(exception);
162-
log.printHyperlink(SHOW_DETAILS, p -> showPopup("Error", details));
167+
log.printHyperlink(SHOW_DETAILS, p -> showPopup("Error details", details));
163168
newLine();
164169
return errorMessage;
165170
}
@@ -168,12 +173,23 @@ private void newLine() {
168173
log.print("\n", ConsoleViewContentType.NORMAL_OUTPUT);
169174
}
170175

171-
private void showPopup(String title, String text) {
176+
private void showPopup(String title, String details) {
177+
JPanel popupPanel = new JPanel(new BorderLayout());
178+
popupPanel.setBorder(JBUI.Borders.empty(THICKNESS));
179+
180+
JTextArea exceptionDetails = new JTextArea();
181+
exceptionDetails.setLineWrap(true);
182+
exceptionDetails.append(details);
183+
JLabel jLabel = new JLabel(truncateString(details, 120), AllIcons.Process.State.RedExcl, JLabel.LEFT);
184+
185+
JBScrollPane scrollPane = new JBScrollPane(exceptionDetails);
186+
scrollPane.setPreferredSize(new Dimension(-1, HEIGHT));
187+
popupPanel.add(jLabel, BorderLayout.CENTER);
188+
popupPanel.add(scrollPane, BorderLayout.SOUTH);
189+
172190
JBPopupFactory.getInstance()
173191
.createComponentPopupBuilder(
174-
new JLabel(text,
175-
AllIcons.General.Error,
176-
JLabel.LEFT),
192+
popupPanel,
177193
log.getComponent())
178194
.setTitle(title)
179195
.createPopup()

0 commit comments

Comments
 (0)