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 */
021package csheets.ui.ctrl;
022
023import javax.swing.AbstractAction;
024import javax.swing.JOptionPane;
025
026import csheets.ui.BlankIcon;
027
028/**
029 * An base-class for actions.
030 * @author Einar Pehrson
031 */
032public abstract class BaseAction extends AbstractAction {
033
034        /**
035         * Creates a new base action.
036         */
037        public BaseAction() {
038                // Configures action
039                String name = getName();
040                putValue(NAME, name);
041                putValue(SHORT_DESCRIPTION, name);
042                putValue(ACTION_COMMAND_KEY, name);
043                putValue(SMALL_ICON, new BlankIcon(16));
044                defineProperties();
045        }
046
047        /**
048         * Returns the action's name.
049         * @return the action's name, which is used as short description and action command
050         */
051        protected abstract String getName();
052
053        /**
054         * Defines the action's properties.
055         */
056        protected void defineProperties() {}
057
058        /**
059         * Returns whether the action requires the active workbook to be
060         * modified in order to be enabled. By default, the method returns false.
061         * @return whether the action should be enabled
062         */
063        protected boolean requiresModification() {
064                return false;
065        }
066
067        /**
068         * Returns whether the action requires the active workbook to be
069         * stored in a file in order to be enabled. By default, the method
070         * returns false.
071         * @return whether the action should be enabled
072         */
073        protected boolean requiresFile() {
074                return false;
075        }
076
077        /**
078         * Shows the user an error message.
079         */
080        protected void showErrorDialog(Object message) {
081                JOptionPane.showMessageDialog(
082                        null,
083                        message,
084                        "Error",
085                        JOptionPane.ERROR_MESSAGE
086                );
087        }
088}