--- /dev/null
+package com.quantum.ui.dialog;
+
+import java.sql.SQLException;
+
+import com.quantum.Messages;
+import com.quantum.model.Bookmark;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+
+
+/**
+ * @author BC Holmes
+ */
+public class SQLExceptionDialog extends MessageDialog {
+
+ private final SQLException sqlException;
+
+ /**
+ * @param parentShell
+ * @param dialogTitle
+ * @param sqlException
+ */
+ private SQLExceptionDialog(Shell parentShell, String dialogTitle,
+ SQLException sqlException) {
+ super(parentShell, dialogTitle, null, sqlException.getLocalizedMessage(), ERROR,
+ new String[]{IDialogConstants.OK_LABEL}, 0);
+ this.sqlException = sqlException;
+ }
+
+ protected Control createCustomArea(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(2, false));
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ Label label = new Label(composite, SWT.NONE);
+ label.setText(Messages.getString(SQLExceptionDialog.class, "sqlState"));
+ label = new Label(composite, SWT.NONE);
+ label.setText(this.sqlException.getSQLState() == null
+ ? "" : this.sqlException.getSQLState());
+
+ label = new Label(composite, SWT.NONE);
+ label.setText(Messages.getString(SQLExceptionDialog.class, "errorCode"));
+ label = new Label(composite, SWT.NONE);
+ label.setText(String.valueOf(this.sqlException.getErrorCode()));
+ return composite;
+ }
+
+ public static void openException(Shell shell, Bookmark bookmark, SQLException sqlException) {
+ SQLExceptionDialog dialog = new SQLExceptionDialog(shell,
+ bookmark == null
+ ? Messages.getString(SQLExceptionDialog.class, "title")
+ : Messages.getString(
+ SQLExceptionDialog.class, "titleWithBookmark",
+ new Object[] { bookmark.getDisplayName() }),
+ sqlException);
+ dialog.open();
+ }
+}