SpreadsheetCell, its SpreadsheetCellType will
specify which values the cell can accept as user input, and which
SpreadsheetCellEditor it will use to receive user input. SpreadsheetCell easily:
SpreadsheetCellType.StringType#createCell(int, int, int, int, String)
.SpreadsheetCellType.ListType#createCell(int, int, int, int, String) .SpreadsheetCellType.DoubleType#createCell(int, int, int, int, Double)
.SpreadsheetCellType.IntegerType#createCell(int, int, int, int, Integer)
.SpreadsheetCellType.DateType#createCell(int, int, int, int, LocalDate)
.match(Object). It is the first level
that tells whether or not the given value should be accepted or not. Trying
to set a String into a Double will return false for example. This method will
be use by the SpreadsheetView when trying to set values for example.
isError(Object). This is more
subtle and allow you to tell whether the given value is coherent or not
regarding the policy you gave. You can just make a SpreadsheetCell
call this method when its value has changed in order to react accordingly if
the value is in error. (see example below).StringConverter or our
StringConverterWithFormat. This one just add one method (
StringConverterWithFormat#toStringFormat(Object, String) which will
convert your value with a String format (found in
SpreadsheetCell#getFormat()).
createEditor(SpreadsheetView) method and use the
SpreadsheetCellEditor.DoubleEditor . match(Object)
and in isError(Object), which most of the time will use your
converter. StringConverterWithFormat :
StringConverterWithFormat specialConverter = new StringConverterWithFormat<Double>(new DoubleStringConverter()) {
@Override
public String toString(Double item) {
//We just redirect to the other method.
return toStringFormat(item, "");
}
@Override
public String toStringFormat(Double item, String format) {
if (item == null || Double.isNaN(item)) {
return missingLabel; // For example return something else that an empty cell.
} else{
if (!("").equals(format) && !Double.isNaN(item)) {
//We format here the value
return new DecimalFormat(format).format(item);
} else {
//We call the DoubleStringConverter that we gave in argument
return myConverter.toString(item);
}
}
}
@Override
public Double fromString(String str) {
if (str == null || str.isEmpty()) {
return Double.NaN;
} else {
try {
//Just returning the value
Double myDouble = Double.parseDouble(str);
return myDouble;
} catch (NumberFormatException e) {
return myConverter.fromString(str);
}
}
}
}
And then suppose you only want to accept double values between 0 and 100, and
that a value superior to 10 is abnormal.
@Override
public boolean isError(Object value) {
if (value instanceof Double) {
if ((Double) value > 0 && (Double) value < 10) {
return false;
}
return true;
}
return true;
}
@Override
public boolean match(Object value) {
if (value instanceof Double) {
return true;
} else {
try {
Double convertedValue = converter.fromString(value == null ? null : value.toString());
if (convertedValue >= 0 && convertedValue <= 100)
return true;
else
return false;
} catch (Exception e) {
return false;
}
}
}
SpreadsheetView, SpreadsheetCellEditor, SpreadsheetCell
| Modifier and Type | Class and Description |
|---|---|
| public static class | SpreadsheetCellType.
The |
| public static class | SpreadsheetCellType.
The |
| public static class | SpreadsheetCellType.
The |
| public static class | SpreadsheetCellType.
The |
| public static class | SpreadsheetCellType.
The |
| public static class | SpreadsheetCellType.
The |
| Modifier and Type | Field and Description |
|---|---|
| protected StringConverter | converter
An instance of converter from string to cell type. |
| public static final SpreadsheetCellType. | DATE
The |
| public static final SpreadsheetCellType. | DOUBLE
The |
| public static final SpreadsheetCellType. | INTEGER
The |
| public static final SpreadsheetCellType | OBJECT
The |
| public static final SpreadsheetCellType. | STRING
The |
| Access | Constructor and Description |
|---|---|
| public | |
| public | SpreadsheetCellType(StringConverter<T>
The converter to use converter)Constructor with the StringConverter directly provided. |
| Modifier and Type | Method and Description |
|---|---|
| public boolean | acceptDrop()
Returns: true if this SpreadsheetCellType accepts Objects to be dropped on
the |
| public abstract T | Returns: null if not valid or the correct value otherwise.This method will be called when a commit is happening. |
| public abstract SpreadsheetCellEditor | Returns: the editor instancethe spreadsheet that will own this editor view)Creates an editor for this type of cells. |
| public boolean | |
| public static final SpreadsheetCellType. | |
| public boolean | |
| public abstract boolean | Returns: true if it matches.the value to test value, Object... the options given by options)SpreadsheetCell#getOptionsForEditor()Verify that the upcoming value can be set to the current cell.This is the first level of verification to prevent affecting a text to a double or a double to a date. |
| public String | Returns: a string representation of the given item.Return a string representation of the given item for the
|
| public abstract String | Returns: a string representation of the given item.Return a string representation of the given item for the
|