All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jpedal.examples.viewer.gui.popups.ErrorDialog Maven / Gradle / Ivy

The newest version!
/*
 * ===========================================
 * Java Pdf Extraction Decoding Access Library
 * ===========================================
 *
 * Project Info:  http://www.idrsolutions.com
 * Help section for developers at http://www.idrsolutions.com/java-pdf-library-support/
 *
 * (C) Copyright 1997-2013, IDRsolutions and Contributors.
 *
 * 	This file is part of JPedal
 *
     This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


 *
 * ---------------
 * ErrorDialog.java
 * ---------------
 */
package org.jpedal.examples.viewer.gui.popups;

import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.io.StringWriter;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;

import org.jpedal.utils.Messages;

/** popup an error message to show user what message JPedal generated */
public class ErrorDialog {

	public static void showError(Throwable th, String message, final Component parent, String fileName) {

		final JPanel panel = new JPanel();
		panel.setLayout(new GridBagLayout());
		final GridBagConstraints c = new GridBagConstraints();

		c.anchor = GridBagConstraints.WEST;
		c.gridx = 0;
		c.gridy = 0;
		panel.add(new JLabel(message), c);

		StringWriter sw = new StringWriter();
		PrintWriter pw = new PrintWriter(sw);
		th.printStackTrace(pw);

		String trace = sw.toString();

		JTextArea ta = new JTextArea(trace);
		ta.setEditable(false);
		ta.setRows(10);
		ta.setCaretPosition(0);

		final JScrollPane scrollPane = new JScrollPane(ta, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

		scrollPane.setVisible(false);

		c.gridy = 1;
		c.ipady = 10;
		final JLabel info = new JLabel(Messages.getMessage("PdfViewerError.CopyStacktrace"));
		info.setVisible(false);
		panel.add(info, c);

		c.ipady = 0;
		c.gridy = 2;
		panel.add(scrollPane, c);

		JButton okButton = new JButton(Messages.getMessage("PdfViewerButton.ShowDetails"));
		okButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				JButton button = (JButton) arg0.getSource();
				if (scrollPane.isVisible()) {
					scrollPane.setVisible(false);
					info.setVisible(false);
					button.setText(Messages.getMessage("PdfViewerButton.ShowDetails"));
				}
				else {
					scrollPane.setVisible(true);
					info.setVisible(true);
					button.setText(Messages.getMessage("PdfViewerButton.HideDetails"));
				}

				JDialog parentDialog = (JDialog) button.getTopLevelAncestor();
				parentDialog.pack();
				parentDialog.setLocationRelativeTo(parent);
			}
		});

		Object[] buttonRowObjects = new Object[] { okButton, Messages.getMessage("PdfViewerButton.Exit") };

		JOptionPane optionPane = new JOptionPane();
		optionPane.setMessage(panel);
		optionPane.setMessageType(JOptionPane.ERROR_MESSAGE);
		optionPane.setOptionType(JOptionPane.DEFAULT_OPTION);
		optionPane.setOptions(buttonRowObjects);

		JDialog dialog = optionPane.createDialog(parent, fileName);
		dialog.pack();
		dialog.setVisible(true);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy