Regalamiunsorriso/rus/WEB-INF/lib/jxl_src/jxl/biff/BaseCellFeatures.java
2026-03-14 20:04:39 +01:00

273 lines
8.6 KiB
Java

package jxl.biff;
import java.util.Collection;
import jxl.Range;
import jxl.biff.drawing.ComboBox;
import jxl.biff.drawing.Comment;
import jxl.common.Assert;
import jxl.common.Logger;
import jxl.write.biff.CellValue;
public class BaseCellFeatures {
public static Logger logger = Logger.getLogger(BaseCellFeatures.class);
private String comment;
private double commentWidth;
private double commentHeight;
private Comment commentDrawing;
private ComboBox comboBox;
private DataValiditySettingsRecord validationSettings;
private DVParser dvParser;
private boolean dropDown;
private boolean dataValidation;
private CellValue writableCell;
private static final double defaultCommentWidth = 3.0D;
private static final double defaultCommentHeight = 4.0D;
protected static class ValidationCondition {
private DVParser.Condition condition;
private static ValidationCondition[] types = new ValidationCondition[0];
ValidationCondition(DVParser.Condition c) {
this.condition = c;
ValidationCondition[] oldtypes = types;
types = new ValidationCondition[oldtypes.length + 1];
System.arraycopy(oldtypes, 0, types, 0, oldtypes.length);
types[oldtypes.length] = this;
}
public DVParser.Condition getCondition() {
return this.condition;
}
}
public static final ValidationCondition BETWEEN = new ValidationCondition(DVParser.BETWEEN);
public static final ValidationCondition NOT_BETWEEN = new ValidationCondition(DVParser.NOT_BETWEEN);
public static final ValidationCondition EQUAL = new ValidationCondition(DVParser.EQUAL);
public static final ValidationCondition NOT_EQUAL = new ValidationCondition(DVParser.NOT_EQUAL);
public static final ValidationCondition GREATER_THAN = new ValidationCondition(DVParser.GREATER_THAN);
public static final ValidationCondition LESS_THAN = new ValidationCondition(DVParser.LESS_THAN);
public static final ValidationCondition GREATER_EQUAL = new ValidationCondition(DVParser.GREATER_EQUAL);
public static final ValidationCondition LESS_EQUAL = new ValidationCondition(DVParser.LESS_EQUAL);
protected BaseCellFeatures() {}
public BaseCellFeatures(BaseCellFeatures cf) {
this.comment = cf.comment;
this.commentWidth = cf.commentWidth;
this.commentHeight = cf.commentHeight;
this.dropDown = cf.dropDown;
this.dataValidation = cf.dataValidation;
this.validationSettings = cf.validationSettings;
if (cf.dvParser != null)
this.dvParser = new DVParser(cf.dvParser);
}
protected String getComment() {
return this.comment;
}
public double getCommentWidth() {
return this.commentWidth;
}
public double getCommentHeight() {
return this.commentHeight;
}
public final void setWritableCell(CellValue wc) {
this.writableCell = wc;
}
public void setReadComment(String s, double w, double h) {
this.comment = s;
this.commentWidth = w;
this.commentHeight = h;
}
public void setValidationSettings(DataValiditySettingsRecord dvsr) {
Assert.verify((dvsr != null));
this.validationSettings = dvsr;
this.dataValidation = true;
}
public void setComment(String s) {
setComment(s, 3.0D, 4.0D);
}
public void setComment(String s, double width, double height) {
this.comment = s;
this.commentWidth = width;
this.commentHeight = height;
if (this.commentDrawing != null) {
this.commentDrawing.setCommentText(s);
this.commentDrawing.setWidth(width);
this.commentDrawing.setWidth(height);
}
}
public void removeComment() {
this.comment = null;
if (this.commentDrawing != null) {
this.writableCell.removeComment(this.commentDrawing);
this.commentDrawing = null;
}
}
public void removeDataValidation() {
if (!this.dataValidation)
return;
DVParser dvp = getDVParser();
if (dvp.extendedCellsValidation()) {
logger.warn("Cannot remove data validation from " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of the shared reference " + jxl.CellReferenceHelper.getCellReference(dvp.getFirstColumn(), dvp.getFirstRow()) + "-" + jxl.CellReferenceHelper.getCellReference(dvp.getLastColumn(), dvp.getLastRow()));
return;
}
this.writableCell.removeDataValidation();
clearValidationSettings();
}
public void removeSharedDataValidation() {
if (!this.dataValidation)
return;
this.writableCell.removeDataValidation();
clearValidationSettings();
}
public final void setCommentDrawing(Comment c) {
this.commentDrawing = c;
}
public final Comment getCommentDrawing() {
return this.commentDrawing;
}
public String getDataValidationList() {
if (this.validationSettings == null)
return null;
return this.validationSettings.getValidationFormula();
}
public void setDataValidationList(Collection c) {
if (this.dataValidation && getDVParser().extendedCellsValidation()) {
logger.warn("Cannot set data validation on " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of a shared data validation");
return;
}
clearValidationSettings();
this.dvParser = new DVParser(c);
this.dropDown = true;
this.dataValidation = true;
}
public void setDataValidationRange(int col1, int r1, int col2, int r2) {
if (this.dataValidation && getDVParser().extendedCellsValidation()) {
logger.warn("Cannot set data validation on " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of a shared data validation");
return;
}
clearValidationSettings();
this.dvParser = new DVParser(col1, r1, col2, r2);
this.dropDown = true;
this.dataValidation = true;
}
public void setDataValidationRange(String namedRange) {
if (this.dataValidation && getDVParser().extendedCellsValidation()) {
logger.warn("Cannot set data validation on " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of a shared data validation");
return;
}
clearValidationSettings();
this.dvParser = new DVParser(namedRange);
this.dropDown = true;
this.dataValidation = true;
}
public void setNumberValidation(double val, ValidationCondition c) {
if (this.dataValidation && getDVParser().extendedCellsValidation()) {
logger.warn("Cannot set data validation on " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of a shared data validation");
return;
}
clearValidationSettings();
this.dvParser = new DVParser(val, Double.NaN, c.getCondition());
this.dropDown = false;
this.dataValidation = true;
}
public void setNumberValidation(double val1, double val2, ValidationCondition c) {
if (this.dataValidation && getDVParser().extendedCellsValidation()) {
logger.warn("Cannot set data validation on " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " as it is part of a shared data validation");
return;
}
clearValidationSettings();
this.dvParser = new DVParser(val1, val2, c.getCondition());
this.dropDown = false;
this.dataValidation = true;
}
public boolean hasDataValidation() {
return this.dataValidation;
}
private void clearValidationSettings() {
this.validationSettings = null;
this.dvParser = null;
this.dropDown = false;
this.comboBox = null;
this.dataValidation = false;
}
public boolean hasDropDown() {
return this.dropDown;
}
public void setComboBox(ComboBox cb) {
this.comboBox = cb;
}
public DVParser getDVParser() {
if (this.dvParser != null)
return this.dvParser;
if (this.validationSettings != null) {
this.dvParser = new DVParser(this.validationSettings.getDVParser());
return this.dvParser;
}
return null;
}
public void shareDataValidation(BaseCellFeatures source) {
if (this.dataValidation) {
logger.warn("Attempting to share a data validation on cell " + jxl.CellReferenceHelper.getCellReference(this.writableCell) + " which already has a data validation");
return;
}
clearValidationSettings();
this.dvParser = source.getDVParser();
this.validationSettings = null;
this.dataValidation = true;
this.dropDown = source.dropDown;
this.comboBox = source.comboBox;
}
public Range getSharedDataValidationRange() {
if (!this.dataValidation)
return null;
DVParser dvp = getDVParser();
return new SheetRangeImpl(this.writableCell.getSheet(), dvp.getFirstColumn(), dvp.getFirstRow(), dvp.getLastColumn(), dvp.getLastRow());
}
}