10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package hello.dialog.dialogs;
26
27 import java.io.PrintWriter;
28 import java.io.StringWriter;
29
30 import javafx.scene.control.skin.AccordionSkin;
31 import javafx.scene.Node;
32 import javafx.scene.control.ButtonType;
33 import javafx.scene.control.Dialog;
34 import javafx.scene.control.DialogPane;
35 import javafx.scene.control.Label;
36 import javafx.scene.control.TextArea;
37 import javafx.scene.image.Image;
38 import javafx.scene.image.ImageView;
39 import javafx.scene.layout.GridPane;
40 import javafx.scene.layout.Priority;
41
42 public class ExceptionDialog extends Dialog<ButtonType> {
43
44 public ExceptionDialog(Throwable exception) {
45 final DialogPane dialogPane = getDialogPane();
46
47 setTitle("Exception Details");
48 dialogPane.setGraphic(new ImageView(new Image(AccordionSkin.class.getResource("modena/dialog-error.png").toExternalForm())));
49 dialogPane.getButtonTypes().addAll(ButtonType.OK);
50 dialogPane.setContentText(exception == null? "": exception.getMessage());
51 dialogPane.setExpandableContent(buildExceptionDetails(exception));
52 }
53
54 private Node buildExceptionDetails( final Throwable exception) {
55 Label label = new Label("The exception stacktrace was:");
56
57 StringWriter sw = new StringWriter();
58 PrintWriter pw = new PrintWriter(sw);
59 exception.printStackTrace(pw);
60 pw.close();
61
62 TextArea textArea = new TextArea(sw.toString());
63 textArea.setEditable(false);
64 textArea.setWrapText(true);
65
66 textArea.setMaxWidth(Double.MAX_VALUE);
67 textArea.setMaxHeight(Double.MAX_VALUE);
68 GridPane.setVgrow(textArea, Priority.ALWAYS);
|
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25 package hello.dialog.dialogs;
26
27 import java.io.PrintWriter;
28 import java.io.StringWriter;
29
30 import javafx.scene.Node;
31 import javafx.scene.control.ButtonType;
32 import javafx.scene.control.Dialog;
33 import javafx.scene.control.DialogPane;
34 import javafx.scene.control.Label;
35 import javafx.scene.control.TextArea;
36 import javafx.scene.image.Image;
37 import javafx.scene.image.ImageView;
38 import javafx.scene.layout.GridPane;
39 import javafx.scene.layout.Priority;
40
41 public class ExceptionDialog extends Dialog<ButtonType> {
42
43 public ExceptionDialog(Throwable exception) {
44 final DialogPane dialogPane = getDialogPane();
45
46 setTitle("Exception Details");
47 dialogPane.setGraphic(new ImageView(new Image(getClass().getResource("/hello/dialog/dialog-error.png").toExternalForm())));
48 dialogPane.getButtonTypes().addAll(ButtonType.OK);
49 dialogPane.setContentText(exception == null? "": exception.getMessage());
50 dialogPane.setExpandableContent(buildExceptionDetails(exception));
51 }
52
53 private Node buildExceptionDetails( final Throwable exception) {
54 Label label = new Label("The exception stacktrace was:");
55
56 StringWriter sw = new StringWriter();
57 PrintWriter pw = new PrintWriter(sw);
58 exception.printStackTrace(pw);
59 pw.close();
60
61 TextArea textArea = new TextArea(sw.toString());
62 textArea.setEditable(false);
63 textArea.setWrapText(true);
64
65 textArea.setMaxWidth(Double.MAX_VALUE);
66 textArea.setMaxHeight(Double.MAX_VALUE);
67 GridPane.setVgrow(textArea, Priority.ALWAYS);
|