diff --git a/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialog.java b/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialog.java index d4a331990..fea1887b9 100644 --- a/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialog.java +++ b/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialog.java @@ -58,6 +58,7 @@ public class ErrorsDialog extends StandardDialog { private GenericTableModel tableModel; private JSplitPane splitPane; private JScrollPane tableScrollPane; + private JScrollPane detailsScrollPane; private JTextField date; private JTextField severity; private JTextField reportStatus; @@ -86,8 +87,8 @@ public ErrorsDialog(@MainWindow final Window owner, @Override public void display() { new ErrorsDialogController(model) - .init(this, tableModel, table, date, severity, reportStatus, details, deleteAll, - delete, send, getCancelButton()); + .init(this, tableModel, table, date, severity, reportStatus, details, + detailsScrollPane, deleteAll, delete, send, getCancelButton()); super.display(); } @@ -110,6 +111,8 @@ private void initComponents() { "getLevel", "getReportStatus", "getMessage"); tableModel.setHeaderNames("Severity", "Report Status", "Message"); tableScrollPane = new JScrollPane(); + detailsScrollPane = new JScrollPane(); + detailsScrollPane.setViewportView(details); splitPane = getSplitPane(); table = new PackingTable(tableModel, tableScrollPane); table.setAutoCreateRowSorter(true); @@ -135,7 +138,7 @@ private JPanel getBottomPanel() { bottom.add(new JLabel("Report Status: "), ""); bottom.add(reportStatus, "growx, pushx"); bottom.add(new JLabel("Details: "), ""); - bottom.add(new JScrollPane(details), "grow, push"); + bottom.add(detailsScrollPane, "grow, push"); return bottom; } diff --git a/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialogController.java b/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialogController.java index c54abb18d..6ff3210a5 100644 --- a/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialogController.java +++ b/ui_swing/src/com/dmdirc/addons/ui_swing/dialogs/errors/ErrorsDialogController.java @@ -31,12 +31,12 @@ import com.dmdirc.logger.ProgramError; import com.google.common.base.Joiner; -import com.google.common.collect.Lists; import java.text.SimpleDateFormat; import java.util.Optional; import javax.swing.JButton; +import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; @@ -57,6 +57,7 @@ class ErrorsDialogController implements ErrorsDialogModelListener { private JButton deleteAll; private JButton delete; private JButton send; + private JScrollPane detailsScroll; public ErrorsDialogController(final ErrorsDialogModel model) { this.model = model; @@ -64,14 +65,15 @@ public ErrorsDialogController(final ErrorsDialogModel model) { public void init(final ErrorsDialog dialog, final GenericTableModel tableModel, final JTable table, final JTextField date, final JTextField severity, - final JTextField reportStatus, final JTextArea details, final JButton deleteAll, - final JButton delete, final JButton send, final JButton close) { + final JTextField reportStatus, final JTextArea details, final JScrollPane detailsScroll, + final JButton deleteAll, final JButton delete, final JButton send, final JButton close) { this.tableModel = tableModel; this.table = table; this.date = date; this.severity = severity; this.reportStatus = reportStatus; this.details = details; + this.detailsScroll = detailsScroll; this.deleteAll = deleteAll; this.delete = delete; this.send = send; @@ -130,10 +132,15 @@ public void selectedErrorChanged(final Optional selectedError) { reportStatus.setText( selectedError.map(ProgramError::getReportStatus).map(ErrorReportStatus::name) .orElse("")); - details.setText(selectedError.map(ProgramError::getDetails).orElse("")); - details.append(Joiner.on('\n').skipNulls() - .join(selectedError.map(ProgramError::getTrace).orElse(Lists.newArrayList()))); + details.setText(""); + selectedError.map(ProgramError::getMessage).ifPresent( + message -> details.append("Message: " + message + '\n')); + selectedError.map(ProgramError::getDetails).ifPresent( + detail -> details.append("Detail: " + detail +'\n')); + selectedError.map(ProgramError::getTrace).ifPresent( + trace -> details.append("Exception: " + Joiner.on('\n').skipNulls().join(trace))); checkEnabledStates(); + UIUtilities.resetScrollPane(detailsScroll); }); }