/** * Copyright (C) 2002-2012 The FreeCol Team * * This file is part of FreeCol. * * FreeCol is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * FreeCol 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FreeCol. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.freecol.client.gui.panel; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.logging.Logger; import org.freecolandroid.repackaged.java.awt.event.ActionEvent; import org.freecolandroid.repackaged.javax.swing.JButton; import org.freecolandroid.repackaged.javax.swing.JScrollPane; import org.freecolandroid.repackaged.javax.swing.JTextArea; import net.miginfocom.swing.MigLayout; import net.sf.freecol.FreeCol; import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.GUI; import net.sf.freecol.client.gui.i18n.Messages; /** * This is the panel that pops up when an error needs to be reported. */ public final class ErrorPanel extends FreeColDialog<Boolean> { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(ErrorPanel.class.getName()); private static final String SHOW = "show"; /** * Displays the given error message. * @param freeColClient * * @param parent The parent of this panel. * @param message The error message to display in this error panel. */ public ErrorPanel(FreeColClient freeColClient, GUI gui, String message) { super(freeColClient, gui); setLayout(new MigLayout()); JButton showButton = new JButton(Messages.message("errorMessage.showLogFile")); showButton.setActionCommand(SHOW); showButton.addActionListener(this); add(getDefaultTextArea(message, 40), "wrap 20"); add(okButton, "split 2, tag ok"); add(showButton); } /** * Displays the contents of the log file. * * @param parent The parent of this panel. */ public ErrorPanel(FreeColClient freeColClient, GUI gui) { super(freeColClient, gui); File logFile = new File(FreeCol.getLogFile()); byte[] buffer = new byte[(int) logFile.length()]; BufferedInputStream logFileStream = null; String message = null; try { logFileStream = new BufferedInputStream(new FileInputStream(logFile)); logFileStream.read(buffer); message = new String(buffer); } catch(Exception e) { // ignore } finally { if (logFileStream != null) { try { logFileStream.close(); } catch (IOException e) { // failed } } } setLayout(new MigLayout()); JTextArea textArea = getDefaultTextArea(message, 40); textArea.setFocusable(true); textArea.setEditable(false); JScrollPane scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scrollPane.getViewport().setOpaque(false); add(scrollPane, "height 200:200:, wrap 20"); add(okButton, "tag ok"); } public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if (SHOW.equals(command)) { getGUI().showLogFilePanel(); } else { super.actionPerformed(event); } } }