Skip to content

Commit ac417a4

Browse files
committed
Added JTextArea for exception cause details
1 parent 5e296c9 commit ac417a4

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;
@@ -25,11 +27,14 @@
2527
import java.util.Map;
2628

2729
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.console.event.QueryParametersRetrievalErrorEvent.PARAMS_ERROR_COMMON_MSG;
30+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.DataSourceDialog.HEIGHT;
31+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.ui.datasource.interactions.DataSourceDialog.THICKNESS;
2832
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.getCause;
33+
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.truncateString;
2934
import static com.neueda.jetbrains.plugin.graphdb.jetbrains.util.ExceptionWrapper.wrapExceptionInMeaningMessage;
3035

3136
public class LogPanel implements Disposable {
32-
private static final String SHOW_DETAILS = "Show details";
37+
private static final String SHOW_DETAILS = "Details...";
3338

3439
private ConsoleView log;
3540
private Map<String, String> exceptions = new HashMap<>();
@@ -162,7 +167,7 @@ private String printException(Exception exception) {
162167
}
163168
error(errorMessage);
164169
String details = exception.getMessage() + '\n' + getCause(exception);
165-
log.printHyperlink(SHOW_DETAILS, p -> showPopup("Error", details));
170+
log.printHyperlink(SHOW_DETAILS, p -> showPopup("Error details", details));
166171
newLine();
167172
return errorMessage;
168173
}
@@ -171,12 +176,23 @@ private void newLine() {
171176
log.print("\n", ConsoleViewContentType.NORMAL_OUTPUT);
172177
}
173178

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

0 commit comments

Comments
 (0)