001/* 002 * Copyright (c) 2005 Einar Pehrson 003 * 004 * This file is part of 005 * CleanSheets Extension for Style 006 * 007 * CleanSheets Extension for Style is free software; you can 008 * redistribute it and/or modify it under the terms of the GNU General Public 009 * License as published by the Free Software Foundation; either version 2 of 010 * the License, or (at your option) any later version. 011 * 012 * CleanSheets Extension for Style is distributed in the hope that 013 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied 014 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 015 * See the 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 Extension for Style; if not, write to the 019 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, 020 * Boston, MA 02111-1307 USA 021 */ 022package csheets.ext.style; 023 024import java.util.HashMap; 025import java.util.Map; 026 027import csheets.core.Address; 028import csheets.core.Spreadsheet; 029import csheets.ext.SpreadsheetExtension; 030 031/** 032 * An extension of a spreadsheet, with support for style, i.e. row and column 033 * dimensions and cell spanning. 034 * @author Einar Pehrson 035 */ 036public class StylableSpreadsheet extends SpreadsheetExtension { 037 038 /** The unique version identifier used for serialization */ 039 private static final long serialVersionUID = -302349897603798290L; 040 041 /** The width of the columns in the spreadsheet */ 042 private Map<Integer, Integer> columnWidths = new HashMap<Integer, Integer>(); 043 044 /** The heights of the rows in the spreadsheet */ 045 private Map<Integer, Integer> rowHeights = new HashMap<Integer, Integer>(); 046 047 /** The spans of cells in the spreadsheet */ 048 @SuppressWarnings("unused") 049 private Map<Address, Address> cellSpans = new HashMap<Address, Address>(); 050 051 /* 052 * Possible additions: 053 * - Cell spanning 054 * - Grid visiblity (horizontal and vertical) 055 * - Grid color 056 * - Cell margin 057 */ 058 059 /** 060 * Creates a stylable cell spreadsheet for the given spreadsheet. 061 * @param spreadsheet the spreadsheet to extend 062 */ 063 protected StylableSpreadsheet(Spreadsheet spreadsheet) { 064 super(spreadsheet, StyleExtension.NAME); 065 } 066 067 /** 068 * Returns the height of the given row. 069 * @param row the index of the row 070 * @return the height of the given row, or -1 if the default height applies 071 */ 072 public int getRowHeight(int row) { 073 Integer height = rowHeights.get(row); 074 if (height != null) 075 return height; 076 else 077 return -1; 078 } 079 080 /** 081 * Sets the height of the given row. 082 * @param row the index of the row 083 * @param height the height of the row 084 */ 085 public void setRowHeight(int row, int height) { 086 rowHeights.put(row, height); 087 } 088 089 /** 090 * Returns the width of the given column. 091 * @param column the index of the column 092 * @return the width of the given column, or -1 if the default width applies 093 */ 094 public int getColumnWidth(int column) { 095 Integer width = columnWidths.get(column); 096 if (width != null) 097 return width; 098 else 099 return -1; 100 } 101 102 /** 103 * Sets the width of the given column. 104 * @param column the index of the column 105 * @param width the width of the column 106 */ 107 public void setColumnWidth(int column, int width) { 108 columnWidths.put(column, width); 109 } 110}