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