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;
022
023import java.io.File;
024import java.util.EventObject;
025
026import csheets.core.Workbook;
027
028/**
029 * A spreadsheet application event is used to notify interested parties that
030 * a workbook has been created, loaded or stored. The event provides
031 * information about the workbook in which the event occurred, and about
032 * the file in which it is stored, if any.
033 * @author Einar Pehrson
034 */
035public class SpreadsheetAppEvent extends EventObject {
036
037        /** The serialVersionUID of the SpreadsheetAppEvent.java */
038        private static final long serialVersionUID = -8589956625032669055L;
039
040        /** The types of events that are fired from a spreadsheet application */
041        public enum Type {
042
043                /** Denotes that a workbook was created */
044                CREATED,
045
046                /** Denotes that a workbook was loaded */
047                LOADED,
048
049                /** Denotes that a workbook was unloaded */
050                UNLOADED,
051
052                /** Denotes that a workbook was saved */
053                SAVED,
054        }
055
056        /** The workbook that was affected. */
057        private Workbook workbook;
058
059        /** The file in which the project is stored. */
060        private File file;
061
062        /** The type of the event */
063        private Type type;
064
065        /**
066         * Creates a new spreadsheet application event,
067         * belonging to a workbook stored in a file.
068         * @param source the source of the event
069         * @param workbook the workbook that was affected
070         * @param file the file in which the workbook is stored
071         * @param type the type of the event
072         */
073        public SpreadsheetAppEvent(Object source, Workbook workbook,
074                        File file, Type type) {
075                super(source);
076
077                // Stores members
078                this.workbook = workbook;
079                this.file = file;
080                this.type = type;
081        }
082
083        /**
084         * Returns the workbook that was affected by the event.
085         * @return the affected workbook
086         */
087        public Workbook getWorkbook() {
088                return workbook;
089        }
090
091        /**
092         * Returns the file in which the workbook is stored.
093         * @return the file in which the workbook is stored
094         */
095        public File getFile() {
096                return file;
097        }
098
099        /**
100         * Returns the type of the event.
101         * @return the type of the event
102         */
103        public Type getType() {
104                return type;
105        }
106}