Files
HRMS/hrmsEjb/jxl/write/biff/CellValue.java
2025-07-28 13:56:49 +05:30

241 lines
6.1 KiB
Java

package jxl.write.biff;
import common.Assert;
import common.Logger;
import jxl.Cell;
import jxl.CellFeatures;
import jxl.Sheet;
import jxl.biff.FormattingRecords;
import jxl.biff.IntegerHelper;
import jxl.biff.NumFormatRecordsException;
import jxl.biff.Type;
import jxl.biff.WritableRecordData;
import jxl.biff.XFRecord;
import jxl.biff.drawing.Comment;
import jxl.biff.drawing.DrawingGroupObject;
import jxl.format.CellFormat;
import jxl.write.WritableCell;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableWorkbook;
public abstract class CellValue extends WritableRecordData implements WritableCell {
private static Logger logger = Logger.getLogger(CellValue.class);
private int row;
private int column;
private XFRecord format;
private FormattingRecords formattingRecords;
private boolean referenced;
private WritableSheetImpl sheet;
private WritableCellFeatures features;
private boolean copied;
protected CellValue(Type t, int c, int r) {
this(t, c, r, (CellFormat)WritableWorkbook.NORMAL_STYLE);
this.copied = false;
}
protected CellValue(Type t, Cell c) {
this(t, c.getColumn(), c.getRow());
this.copied = true;
this.format = (XFRecord)c.getCellFormat();
if (c.getCellFeatures() != null) {
this.features = new WritableCellFeatures(c.getCellFeatures());
this.features.setWritableCell(this);
}
}
protected CellValue(Type t, int c, int r, CellFormat st) {
super(t);
this.row = r;
this.column = c;
this.format = (XFRecord)st;
this.referenced = false;
this.copied = false;
}
protected CellValue(Type t, int c, int r, CellValue cv) {
super(t);
this.row = r;
this.column = c;
this.format = cv.format;
this.referenced = false;
this.copied = false;
if (cv.features != null) {
this.features = new WritableCellFeatures((CellFeatures)cv.features);
this.features.setWritableCell(this);
}
}
public void setCellFormat(CellFormat cf) {
this.format = (XFRecord)cf;
if (!this.referenced)
return;
Assert.verify((this.formattingRecords != null));
addCellFormat();
}
public int getRow() {
return this.row;
}
public int getColumn() {
return this.column;
}
public boolean isHidden() {
ColumnInfoRecord cir = this.sheet.getColumnInfo(this.column);
if (cir != null && cir.getWidth() == 0)
return true;
RowRecord rr = this.sheet.getRowInfo(this.row);
if (rr != null && (rr.getRowHeight() == 0 || rr.isCollapsed()))
return true;
return false;
}
public byte[] getData() {
byte[] mydata = new byte[6];
IntegerHelper.getTwoBytes(this.row, mydata, 0);
IntegerHelper.getTwoBytes(this.column, mydata, 2);
IntegerHelper.getTwoBytes(this.format.getXFIndex(), mydata, 4);
return mydata;
}
void setCellDetails(FormattingRecords fr, SharedStrings ss, WritableSheetImpl s) {
this.referenced = true;
this.sheet = s;
this.formattingRecords = fr;
addCellFormat();
addCellFeatures();
}
final boolean isReferenced() {
return this.referenced;
}
final int getXFIndex() {
return this.format.getXFIndex();
}
public CellFormat getCellFormat() {
return (CellFormat)this.format;
}
void incrementRow() {
this.row++;
if (this.features != null) {
Comment c = this.features.getCommentDrawing();
if (c != null) {
c.setX(this.column);
c.setY(this.row);
}
}
}
void decrementRow() {
this.row--;
if (this.features != null) {
Comment c = this.features.getCommentDrawing();
if (c != null) {
c.setX(this.column);
c.setY(this.row);
}
}
}
void incrementColumn() {
this.column++;
if (this.features != null) {
Comment c = this.features.getCommentDrawing();
if (c != null) {
c.setX(this.column);
c.setY(this.row);
}
}
}
void decrementColumn() {
this.column--;
if (this.features != null) {
Comment c = this.features.getCommentDrawing();
if (c != null) {
c.setX(this.column);
c.setY(this.row);
}
}
}
void columnInserted(Sheet s, int sheetIndex, int col) {}
void columnRemoved(Sheet s, int sheetIndex, int col) {}
void rowInserted(Sheet s, int sheetIndex, int row) {}
void rowRemoved(Sheet s, int sheetIndex, int row) {}
protected WritableSheetImpl getSheet() {
return this.sheet;
}
private void addCellFormat() {
Styles styles = this.sheet.getWorkbook().getStyles();
this.format = styles.getFormat(this.format);
try {
if (!this.format.isInitialized())
this.formattingRecords.addStyle(this.format);
} catch (NumFormatRecordsException e) {
logger.warn("Maximum number of format records exceeded. Using default format.");
this.format = (XFRecord)styles.getNormalStyle();
}
}
public CellFeatures getCellFeatures() {
return (CellFeatures)this.features;
}
public WritableCellFeatures getWritableCellFeatures() {
return this.features;
}
public void setCellFeatures(WritableCellFeatures cf) {
if (this.features != null)
logger.warn("current cell features not null - overwriting");
this.features = cf;
cf.setWritableCell(this);
if (this.referenced)
addCellFeatures();
}
public final void addCellFeatures() {
if (this.features == null)
return;
if (this.copied == true) {
this.copied = false;
return;
}
if (this.features.getComment() != null) {
Comment comment = new Comment(this.features.getComment(), this.column, this.row);
comment.setWidth(this.features.getCommentWidth());
comment.setHeight(this.features.getCommentHeight());
this.sheet.addDrawing((DrawingGroupObject)comment);
this.sheet.getWorkbook().addDrawing((DrawingGroupObject)comment);
this.features.setCommentDrawing(comment);
}
}
public final void removeComment(Comment c) {
this.sheet.removeDrawing((DrawingGroupObject)c);
}
final void setCopied(boolean c) {
this.copied = c;
}
}