001package com.hfg.xml.msoffice2003.spreadsheetml; 002 003import com.hfg.xml.XMLTag; 004 005//------------------------------------------------------------------------------ 006/** 007 Excel worksheet options. 008 009 @author J. Alex Taylor, hairyfatguy.com 010 */ 011//------------------------------------------------------------------------------ 012// com.hfg Library 013// 014// This library is free software; you can redistribute it and/or 015// modify it under the terms of the GNU Lesser General Public 016// License as published by the Free Software Foundation; either 017// version 2.1 of the License, or (at your option) any later version. 018// 019// This library is distributed in the hope that it will be useful, 020// but WITHOUT ANY WARRANTY; without even the implied warranty of 021// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 022// Lesser General Public License for more details. 023// 024// You should have received a copy of the GNU Lesser General Public 025// License along with this library; if not, write to the Free Software 026// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 027// 028// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com 029// jataylor@hairyfatguy.com 030//------------------------------------------------------------------------------ 031 032public class ExcelWorksheetOptions extends XMLTag 033{ 034 035 //--------------------------------------------------------------------------- 036 public ExcelWorksheetOptions() 037 { 038 super(SpreadsheetML.WORKSHEET_OPTIONS); 039 } 040 041 //########################################################################### 042 // PUBLIC METHODS 043 //########################################################################### 044 045 //--------------------------------------------------------------------------- 046 public ExcelWorksheetOptions setSelected(boolean inValue) 047 { 048 removeSubtagsByName(SpreadsheetML.SELECTED); 049 if (inValue) 050 { 051 addSubtag(new XMLTag(SpreadsheetML.SELECTED)); 052 } 053 054 return this; 055 } 056 057 //--------------------------------------------------------------------------- 058 public ExcelWorksheetOptions freezePaneAboveRow(int inRowIndex) 059 { 060 clearFreezeSettings(); 061 062 addSubtag(new XMLTag(SpreadsheetML.FREEZE_PANES)); 063 064 addSubtag(new XMLTag(SpreadsheetML.FROZEN_NO_SPLIT)); 065 066 addSubtag(new XMLTag(SpreadsheetML.SPLIT_HORIZONTAL).setContent((inRowIndex - 1) + "")); 067 068 addSubtag(new XMLTag(SpreadsheetML.TOP_ROW_BOTTOM_PANE).setContent((inRowIndex - 1) + "")); 069 070 addSubtag(new XMLTag(SpreadsheetML.ACTIVE_PANE).setContent(ExcelWorksheet.Pane.LOWER_LEFT.value())); 071 072 /* 073 <Panes> 074 <Pane> 075 <Number>3</Number> 076 </Pane> 077 <Pane> 078 <Number>2</Number> 079 <ActiveRow>6</ActiveRow> 080 <ActiveCol>1</ActiveCol> 081 </Pane> 082 </Panes> 083 */ 084 XMLTag panesTag = new XMLTag(SpreadsheetML.PANES); 085 addSubtag(panesTag); 086 087 XMLTag paneTag = new XMLTag(SpreadsheetML.PANE); 088 panesTag.addSubtag(paneTag); 089 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.UPPER_LEFT.value())); 090 091 paneTag = new XMLTag(SpreadsheetML.PANE); 092 panesTag.addSubtag(paneTag); 093 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.LOWER_LEFT.value())); 094 095 096 return this; 097 } 098 099 //--------------------------------------------------------------------------- 100 public ExcelWorksheetOptions freezePaneLeftOfColumn(int inColumnIndex) 101 { 102 clearFreezeSettings(); 103 104 addSubtag(new XMLTag(SpreadsheetML.FREEZE_PANES)); 105 106 addSubtag(new XMLTag(SpreadsheetML.FROZEN_NO_SPLIT)); 107 108 addSubtag(new XMLTag(SpreadsheetML.SPLIT_VERTICAL).setContent((inColumnIndex - 1) + "")); 109 110 addSubtag(new XMLTag(SpreadsheetML.LEFT_COLUMN_RIGHT_PANE).setContent((inColumnIndex - 1) + "")); 111 112 addSubtag(new XMLTag(SpreadsheetML.ACTIVE_PANE).setContent(ExcelWorksheet.Pane.UPPER_RIGHT.value())); 113 114 115 XMLTag panesTag = new XMLTag(SpreadsheetML.PANES); 116 addSubtag(panesTag); 117 118 XMLTag paneTag = new XMLTag(SpreadsheetML.PANE); 119 panesTag.addSubtag(paneTag); 120 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.UPPER_LEFT.value())); 121 122 paneTag = new XMLTag(SpreadsheetML.PANE); 123 panesTag.addSubtag(paneTag); 124 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.UPPER_RIGHT.value())); 125 126 127 return this; 128 } 129 130 //--------------------------------------------------------------------------- 131 /** 132 Freezes the region above and to the left of the selected cell. 133 */ 134 public ExcelWorksheetOptions freezePane(int inRowIndex, int inColumnIndex) 135 { 136 if (inRowIndex <= 1) 137 { 138 if (inColumnIndex > 1) 139 { 140 freezePaneLeftOfColumn(inColumnIndex); 141 } 142 } 143 else if (inColumnIndex <= 1) 144 { 145 freezePaneAboveRow(inRowIndex); 146 } 147 else 148 { 149 clearFreezeSettings(); 150 151 addSubtag(new XMLTag(SpreadsheetML.FREEZE_PANES)); 152 153 addSubtag(new XMLTag(SpreadsheetML.FROZEN_NO_SPLIT)); 154 155 addSubtag(new XMLTag(SpreadsheetML.SPLIT_VERTICAL).setContent((inColumnIndex - 1) + "")); 156 addSubtag(new XMLTag(SpreadsheetML.SPLIT_HORIZONTAL).setContent((inRowIndex - 1) + "")); 157 158 addSubtag(new XMLTag(SpreadsheetML.LEFT_COLUMN_RIGHT_PANE).setContent((inColumnIndex - 1) + "")); 159 addSubtag(new XMLTag(SpreadsheetML.TOP_ROW_BOTTOM_PANE).setContent((inRowIndex - 1) + "")); 160 161 addSubtag(new XMLTag(SpreadsheetML.ACTIVE_PANE).setContent(ExcelWorksheet.Pane.LOWER_RIGHT.value())); 162 163 164 XMLTag panesTag = new XMLTag(SpreadsheetML.PANES); 165 addSubtag(panesTag); 166 167 XMLTag paneTag = new XMLTag(SpreadsheetML.PANE); 168 panesTag.addSubtag(paneTag); 169 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.UPPER_LEFT.value())); 170 171 paneTag = new XMLTag(SpreadsheetML.PANE); 172 panesTag.addSubtag(paneTag); 173 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.LOWER_LEFT.value())); 174 175 paneTag = new XMLTag(SpreadsheetML.PANE); 176 panesTag.addSubtag(paneTag); 177 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.UPPER_RIGHT.value())); 178 179 paneTag = new XMLTag(SpreadsheetML.PANE); 180 panesTag.addSubtag(paneTag); 181 paneTag.addSubtag(new XMLTag(SpreadsheetML.NUMBER).setContent(ExcelWorksheet.Pane.LOWER_RIGHT.value())); 182 } 183 184 return this; 185 } 186 187 //--------------------------------------------------------------------------- 188 private void clearFreezeSettings() 189 { 190 removeSubtagsByName(SpreadsheetML.FREEZE_PANES); 191 removeSubtagsByName(SpreadsheetML.FROZEN_NO_SPLIT); 192 removeSubtagsByName(SpreadsheetML.SPLIT_HORIZONTAL); 193 removeSubtagsByName(SpreadsheetML.SPLIT_VERTICAL); 194 removeSubtagsByName(SpreadsheetML.TOP_ROW_BOTTOM_PANE); 195 removeSubtagsByName(SpreadsheetML.LEFT_COLUMN_RIGHT_PANE); 196 removeSubtagsByName(SpreadsheetML.ACTIVE_PANE); 197 removeSubtagsByName(SpreadsheetML.PANES); 198 } 199}