1 /
55
56 package org.apache.poi.hssf.record;
57
58 import org.apache.poi.util.BitField;
59 import org.apache.poi.util.LittleEndian;
60
61
68
69 public class WindowTwoRecord
70 extends Record
71 {
72 public final static short sid = 0x23e;
73 private short field_1_options;
74
75
76 private BitField displayFormulas = new BitField(0x01);
77 private BitField displayGridlines = new BitField(0x02);
78 private BitField displayRowColHeadings = new BitField(0x04);
79 private BitField freezePanes = new BitField(0x08);
80 private BitField displayZeros = new BitField(0x10);
81 private BitField defaultHeader =
82 new BitField(0x20);
83
84
85
86 private BitField arabic =
87 new BitField(0x40);
88 private BitField displayGuts = new BitField(0x80);
89 private BitField freezePanesNoSplit = new BitField(0x100);
90 private BitField selected = new BitField(0x200);
91 private BitField paged = new BitField(0x400);
92 private BitField savedInPageBreakPreview = new BitField(0x800);
93
94
95
96 private short field_2_top_row;
97 private short field_3_left_col;
98 private int field_4_header_color;
99 private short field_5_page_break_zoom;
100 private short field_6_normal_zoom;
101 private int field_7_reserved;
102
103 public WindowTwoRecord()
104 {
105 }
106
107
114
115 public WindowTwoRecord(short id, short size, byte [] data)
116 {
117 super(id, size, data);
118 }
119
120
128
129 public WindowTwoRecord(short id, short size, byte [] data, int offset)
130 {
131 super(id, size, data, offset);
132 }
133
134 protected void validateSid(short id)
135 {
136 if (id != sid)
137 {
138 throw new RecordFormatException("NOT A valid WindowTwo RECORD");
139 }
140 }
141
142 protected void fillFields(byte [] data, short size, int offset)
143 {
144 field_1_options = LittleEndian.getShort(data, 0 + offset);
145 field_2_top_row = LittleEndian.getShort(data, 2 + offset);
146 field_3_left_col = LittleEndian.getShort(data, 4 + offset);
147 field_4_header_color = LittleEndian.getInt(data, 6 + offset);
148 if (size > 10)
149 {
150 field_5_page_break_zoom = LittleEndian.getShort(data,
151 10 + offset);
152 field_6_normal_zoom = LittleEndian.getShort(data,
153 12 + offset);
154 }
155 if (size > 14)
156 {
157 field_7_reserved = LittleEndian.getInt(data, 14 + offset);
158 }
159 }
160
161
165
166 public void setOptions(short options)
167 {
168 field_1_options = options;
169 }
170
171
172
173
177
178 public void setDisplayFormulas(boolean formulas)
179 {
180 field_1_options = displayFormulas.setShortBoolean(field_1_options, formulas);
181 }
182
183
187
188 public void setDisplayGridlines(boolean gridlines)
189 {
190 field_1_options = displayGridlines.setShortBoolean(field_1_options, gridlines);
191 }
192
193
197
198 public void setDisplayRowColHeadings(boolean headings)
199 {
200 field_1_options = displayRowColHeadings.setShortBoolean(field_1_options, headings);
201 }
202
203
207
208 public void setFreezePanes(boolean freezepanes)
209 {
210 field_1_options = freezePanes.setShortBoolean(field_1_options, freezepanes);
211 }
212
213
217
218 public void setDisplayZeros(boolean zeros)
219 {
220 field_1_options = displayZeros.setShortBoolean(field_1_options, zeros);
221 }
222
223
227
228 public void setDefaultHeader(boolean header)
229 {
230 field_1_options = defaultHeader.setShortBoolean(field_1_options, header);
231 }
232
233
237
238 public void setArabic(boolean isarabic)
239 {
240 field_1_options = arabic.setShortBoolean(field_1_options, isarabic);
241 }
242
243
247
248 public void setDisplayGuts(boolean guts)
249 {
250 field_1_options = displayGuts.setShortBoolean(field_1_options, guts);
251 }
252
253
257
258 public void setFreezePanesNoSplit(boolean freeze)
259 {
260 field_1_options = freezePanesNoSplit.setShortBoolean(field_1_options, freeze);
261 }
262
263
267
268 public void setSelected(boolean sel)
269 {
270 field_1_options = selected.setShortBoolean(field_1_options, sel);
271 }
272
273
277
278 public void setPaged(boolean p)
279 {
280 field_1_options = paged.setShortBoolean(field_1_options, p);
281 }
282
283
287
288 public void setSavedInPageBreakPreview(boolean p)
289 {
290 field_1_options = savedInPageBreakPreview.setShortBoolean(field_1_options, p);
291 }
292
293
294
295
299
300 public void setTopRow(short topRow)
301 {
302 field_2_top_row = topRow;
303 }
304
305
309
310 public void setLeftCol(short leftCol)
311 {
312 field_3_left_col = leftCol;
313 }
314
315
319
320 public void setHeaderColor(int color)
321 {
322 field_4_header_color = color;
323 }
324
325
329
330 public void setPageBreakZoom(short zoom)
331 {
332 field_5_page_break_zoom = zoom;
333 }
334
335
339
340 public void setNormalZoom(short zoom)
341 {
342 field_6_normal_zoom = zoom;
343 }
344
345
348
349 public void setReserved(int reserved)
350 {
351 field_7_reserved = reserved;
352 }
353
354
358
359 public short getOptions()
360 {
361 return field_1_options;
362 }
363
364
365
366
370
371 public boolean getDisplayFormulas()
372 {
373 return displayFormulas.isSet(field_1_options);
374 }
375
376
380
381 public boolean getDisplayGridlines()
382 {
383 return displayGridlines.isSet(field_1_options);
384 }
385
386
390
391 public boolean getDisplayRowColHeadings()
392 {
393 return displayRowColHeadings.isSet(field_1_options);
394 }
395
396
400
401 public boolean getFreezePanes()
402 {
403 return freezePanes.isSet(field_1_options);
404 }
405
406
410
411 public boolean getDisplayZeros()
412 {
413 return displayZeros.isSet(field_1_options);
414 }
415
416
420
421 public boolean getDefaultHeader()
422 {
423 return defaultHeader.isSet(field_1_options);
424 }
425
426
430
431 public boolean getArabic()
432 {
433 return arabic.isSet(field_1_options);
434 }
435
436
440
441 public boolean getDisplayGuts()
442 {
443 return displayGuts.isSet(field_1_options);
444 }
445
446
450
451 public boolean getFreezePanesNoSplit()
452 {
453 return freezePanesNoSplit.isSet(field_1_options);
454 }
455
456
460
461 public boolean getSelected()
462 {
463 return selected.isSet(field_1_options);
464 }
465
466
470
471 public boolean getPaged()
472 {
473 return paged.isSet(field_1_options);
474 }
475
476
480
481 public boolean getSavedInPageBreakPreview()
482 {
483 return savedInPageBreakPreview.isSet(field_1_options);
484 }
485
486
487
488
492
493 public short getTopRow()
494 {
495 return field_2_top_row;
496 }
497
498
502
503 public short getLeftCol()
504 {
505 return field_3_left_col;
506 }
507
508
512
513 public int getHeaderColor()
514 {
515 return field_4_header_color;
516 }
517
518
522
523 public short getPageBreakZoom()
524 {
525 return field_5_page_break_zoom;
526 }
527
528
532
533 public short getNormalZoom()
534 {
535 return field_6_normal_zoom;
536 }
537
538
542
543 public int getReserved()
544 {
545 return field_7_reserved;
546 }
547
548 public String toString()
549 {
550 StringBuffer buffer = new StringBuffer();
551
552 buffer.append("[WINDOW2]\n");
553 buffer.append(" .options = ")
554 .append(Integer.toHexString(getOptions())).append("\n");
555 buffer.append(" .dispformulas= ").append(getDisplayFormulas())
556 .append("\n");
557 buffer.append(" .dispgridlins= ").append(getDisplayGridlines())
558 .append("\n");
559 buffer.append(" .disprcheadin= ")
560 .append(getDisplayRowColHeadings()).append("\n");
561 buffer.append(" .freezepanes = ").append(getFreezePanes())
562 .append("\n");
563 buffer.append(" .displayzeros= ").append(getDisplayZeros())
564 .append("\n");
565 buffer.append(" .defaultheadr= ").append(getDefaultHeader())
566 .append("\n");
567 buffer.append(" .arabic = ").append(getArabic())
568 .append("\n");
569 buffer.append(" .displayguts = ").append(getDisplayGuts())
570 .append("\n");
571 buffer.append(" .frzpnsnosplt= ")
572 .append(getFreezePanesNoSplit()).append("\n");
573 buffer.append(" .selected = ").append(getSelected())
574 .append("\n");
575 buffer.append(" .paged = ").append(getPaged())
576 .append("\n");
577 buffer.append(" .svdinpgbrkpv= ")
578 .append(getSavedInPageBreakPreview()).append("\n");
579 buffer.append(" .toprow = ")
580 .append(Integer.toHexString(getTopRow())).append("\n");
581 buffer.append(" .leftcol = ")
582 .append(Integer.toHexString(getLeftCol())).append("\n");
583 buffer.append(" .headercolor = ")
584 .append(Integer.toHexString(getHeaderColor())).append("\n");
585 buffer.append(" .pagebreakzoom = ")
586 .append(Integer.toHexString(getPageBreakZoom())).append("\n");
587 buffer.append(" .normalzoom = ")
588 .append(Integer.toHexString(getNormalZoom())).append("\n");
589 buffer.append(" .reserved = ")
590 .append(Integer.toHexString(getReserved())).append("\n");
591 buffer.append("[/WINDOW2]\n");
592 return buffer.toString();
593 }
594
595 public int serialize(int offset, byte [] data)
596 {
597 LittleEndian.putShort(data, 0 + offset, sid);
598 LittleEndian.putShort(data, 2 + offset, ( short ) 18);
599 LittleEndian.putShort(data, 4 + offset, getOptions());
600 LittleEndian.putShort(data, 6 + offset, getTopRow());
601 LittleEndian.putShort(data, 8 + offset, getLeftCol());
602 LittleEndian.putInt(data, 10 + offset, getHeaderColor());
603 LittleEndian.putShort(data, 14 + offset, getPageBreakZoom());
604 LittleEndian.putShort(data, 16 + offset, getNormalZoom());
605 LittleEndian.putInt(data, 18 + offset, getReserved());
606 return getRecordSize();
607 }
608
609 public int getRecordSize()
610 {
611 return 22;
612 }
613
614 public short getSid()
615 {
616 return this.sid;
617 }
618 }
619