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.core;
022
023 import java.io.Serializable;
024 import java.util.SortedSet;
025
026 import csheets.ext.Extensible;
027
028 /**
029 * A spreadsheet which provides cell data and dependencies.
030 * @author Einar Pehrson
031 */
032 public interface Spreadsheet extends Iterable<Cell>, Extensible<Spreadsheet>,
033 Serializable {
034
035 /*
036 * LOCATION
037 */
038
039 /**
040 * Returns the workbook to which the spreadsheet belongs.
041 * @return the workbook to which the spreadsheet belongs
042 */
043 public Workbook getWorkbook();
044
045 /**
046 * Returns the title of the spreadsheet.
047 * @return the title of the spreadsheet.
048 */
049 public String getTitle();
050
051 /**
052 * Sets the title of the spreadsheet.
053 * @param title the title of the spreadsheet.
054 */
055 public void setTitle(String title);
056
057 /*
058 * DIMENSIONS
059 */
060
061 /**
062 * Returns the number of columns in the spreadsheet.
063 * @return the number of columns in the spreadsheet.
064 */
065 public int getColumnCount();
066
067 /**
068 * Returns the number of rows in the spreadsheet.
069 * @return the number of rows in the spreadsheet.
070 */
071 public int getRowCount();
072
073 /*
074 * CELLS
075 */
076
077 /**
078 * Returns the cell at the given address.
079 * @param address the address of the cell
080 * @return the cell at the given address
081 */
082 public Cell getCell(Address address);
083
084 /**
085 * Returns the cell at the given column and row in the spreadsheet.
086 * @param column the column index of the cell's location
087 * @param row the row index of the cell's location
088 * @return the cell at the given column and row in the spreadsheet
089 */
090 public Cell getCell(int column, int row);
091
092 /**
093 * Returns the cells in the range between the given addresses.
094 * @param address1 the address of the cell in one end of the range
095 * @param address2 the address of the cell in the other end of the range
096 * @return a sorted set of the cells in the range
097 */
098 public SortedSet<Cell> getCells(Address address1, Address address2);
099
100 /**
101 * Returns the cells in the given column.
102 * @param index the index of the column
103 * @return an array of the cells in the column
104 */
105 public Cell[] getColumn(int index);
106
107 /**
108 * Returns the cells in the given row.
109 * @param index the index of the row
110 * @return an array of the cells in the row
111 */
112 public Cell[] getRow(int index);
113
114 /*
115 * EVENT HANDLING
116 */
117
118 /**
119 * Registers the given listener to receive events from all cells in the
120 * spreadsheet.
121 * @param listener the listener to be added
122 */
123 public void addCellListener(CellListener listener);
124
125 /**
126 * Deregisters the given listener from receiving events from all cells in
127 * the spreadsheet.
128 * @param listener the listener to be removed
129 */
130 public void removeCellListener(CellListener listener);
131
132 /**
133 * Returns the cell listeners that have been registered on the spreadsheet.
134 * @return the cell listeners that have been registered on the spreadsheet
135 */
136 public CellListener[] getCellListeners();
137 }