001 /*
002 * Copyright (c) 2005 Einar Pehrson <einar@pehrson.nu>.
003 *
004 * This file is part of
005 * CleanSheets - a spreadsheet application for the Java platform.
006 *
007 * CleanSheets is free software; you can redistribute it and/or modify
008 * it under the terms of the GNU General Public License as published by
009 * the Free Software Foundation; either version 2 of the License, or
010 * (at your option) any later version.
011 *
012 * CleanSheets is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015 * GNU General Public License for more details.
016 *
017 * You should have received a copy of the GNU General Public License
018 * along with CleanSheets; if not, write to the Free Software
019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020 */
021 package csheets.ui.ctrl;
022
023 import java.awt.event.ActionEvent;
024 import java.awt.event.KeyEvent;
025 import java.io.BufferedReader;
026 import java.io.IOException;
027 import java.io.InputStream;
028 import java.io.InputStreamReader;
029
030 import javax.swing.ImageIcon;
031 import javax.swing.JOptionPane;
032
033 import csheets.CleanSheets;
034
035 /**
036 * An action for displaying the about window.
037 * @author Einar Pehrson
038 */
039 @SuppressWarnings("serial")
040 public class AboutAction extends BaseAction {
041
042 /** The text to display in the about dialog */
043 private String text;
044
045 /**
046 * Creates a new about action.
047 */
048 public AboutAction() {
049 InputStream stream = CleanSheets.class.getResourceAsStream(
050 "res/doc/about.txt");
051 if (stream != null) {
052 // Loads text from file
053 try {
054 BufferedReader br = new BufferedReader(new InputStreamReader(stream));
055 int availableBytes = stream.available();
056 char[] chars = new char[availableBytes];
057 br.read(chars, 0, availableBytes);
058 text = new String(chars);
059 } catch (Exception ex) {
060 text = "An error occurred when loading the text.";
061 } finally {
062 try {
063 stream.close();
064 } catch (IOException e) {}
065 }
066 } else
067 setEnabled(false);
068 }
069
070 protected String getName() {
071 return "About...";
072 }
073
074 protected void defineProperties() {
075 putValue(MNEMONIC_KEY, KeyEvent.VK_A);
076 putValue(SMALL_ICON, new ImageIcon(CleanSheets.class.getResource("res/img/about.gif")));
077 }
078
079 public void actionPerformed(ActionEvent e) {
080 JOptionPane.showMessageDialog(null,
081 text,
082 "About CleanSheets",
083 JOptionPane.INFORMATION_MESSAGE,
084 new ImageIcon(CleanSheets.class.getResource("res/img/sheet.gif")));
085 }
086 }