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 java.util.EventObject;
024
025import csheets.core.Cell;
026import csheets.core.Spreadsheet;
027import csheets.core.Workbook;
028
029/**
030 * A selection application event is used to notify interested parties that
031 * a new active workbook, spreadsheet and/or cell is selected.
032 * @author Einar Pehrson
033 */
034@SuppressWarnings("serial")
035public class SelectionEvent extends EventObject {
036
037        /** The new active workbook */
038        private Workbook workbook;
039
040        /** The new active spreadsheet. */
041        private Spreadsheet spreadsheet;
042
043        /** The new active cell. */
044        private Cell cell;
045
046        /** The previous active workbook (or the same as the new one if it didn't change) */
047        private Workbook prevWorkbook;
048
049        /** The previous active spreadsheet (or the same as the new one if it didn't change) */
050        private Spreadsheet prevSpreadsheet;
051
052        /** The previous active cell */
053        private Cell prevCell;
054
055        /**
056         * Creates a new selection event.
057         * @param source the source of the event
058         * @param workbook the active workbook
059         * @param spreadsheet the active spreadsheet
060         * @param cell the active cell
061         * @param prevWorkbook the previous active workbook (or the same as the new one if it didn't change)
062         * @param prevSpreadsheet the previous active spreadsheet (or the same as the new one if it didn't change)
063         * @param prevCell the previous active cell
064         */
065        public SelectionEvent(Object source,
066                        Workbook workbook, Spreadsheet spreadsheet, Cell cell,
067                        Workbook prevWorkbook, Spreadsheet prevSpreadsheet, Cell prevCell) {
068                super(source);
069
070                // Stores members
071                this.workbook = workbook;
072                this.spreadsheet = spreadsheet;
073                this.cell = cell;
074                this.prevWorkbook = prevWorkbook;
075                this.prevSpreadsheet = prevSpreadsheet;
076                this.prevCell = prevCell;
077        }
078
079        /**
080         * Returns the active workbook.
081         * @return the active workbook
082         */
083        public Workbook getWorkbook() {
084                return workbook;
085        }
086
087        /**
088         * Returns the active spreadsheet.
089         * @return the active spreadsheet
090         */
091        public Spreadsheet getSpreadsheet() {
092                return spreadsheet;
093        }
094
095        /**
096         * Returns the active cell.
097         * @return the active cell
098         */
099        public Cell getCell() {
100                return cell;
101        }
102
103        /**
104         * Returns the previous active workbook.
105         * @return the previous active workbook (or the same as the new one if it didn't change)
106         */
107        public Workbook getPreviousWorkbook() {
108                return prevWorkbook;
109        }
110
111        /**
112         * Returns the previous active spreadsheet.
113         * @return the previous active spreadsheet (or the same as the new one if it didn't change)
114         */
115        public Spreadsheet getPreviousSpreadsheet() {
116                return prevSpreadsheet;
117        }
118
119        /**
120         * Returns the previous active cell.
121         * @return the previous active cell
122         */
123        public Cell getPreviousCell() {
124                return prevCell;
125        }
126
127        /**
128         * Returns whether the event was caused by the active workbook being changed
129         * @return true if the active workbook and the previous active workbook are not the same
130         */
131        public boolean isWorkbookChanged() {
132                return workbook != prevWorkbook;
133        }
134
135        /**
136         * Returns whether the event was caused by the active spreadsheet being changed
137         * @return true if the active spreadsheet and the previous active spreadsheet are not the same
138         */
139        public boolean isSpreadsheetChanged() {
140                return spreadsheet != prevSpreadsheet;
141        }
142
143        /**
144         * Returns whether the event was caused by the active cell being changed
145         * @return true if the active cell and the previous active cell are not the same
146         */
147        public boolean isCellChanged() {
148                return cell != prevCell;
149        }
150}