Skip to content

Instantly share code, notes, and snippets.

@johannest
Created February 6, 2024 07:40
Show Gist options
  • Save johannest/95f068336193e83063bc56ee0314b521 to your computer and use it in GitHub Desktop.
Save johannest/95f068336193e83063bc56ee0314b521 to your computer and use it in GitHub Desktop.
package org.vaadin.example;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.spreadsheet.Spreadsheet;
import com.vaadin.flow.component.spreadsheet.SpreadsheetComponentFactory;
import com.vaadin.flow.router.Route;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
@Route("sheet")
public class SpreadSheetTest extends Div {
private ComboBox<String> cb1;
private ComboBox<String> cb2;
public SpreadSheetTest() {
Spreadsheet spreadsheet = new Spreadsheet();
spreadsheet.setColumnWidth(1, 120);
spreadsheet.createCell(1, 1, "Button");
spreadsheet.setColumnWidth(2, 120);
spreadsheet.createCell(1, 2, "Text Field");
spreadsheet.setSpreadsheetComponentFactory(
new SpreadsheetComponentFactory() {
@Override
public Component getCustomComponentForCell(Cell cell,
int rowIndex, int columnIndex,
Spreadsheet spreadsheet, Sheet sheet) {
if (spreadsheet.getActiveSheetIndex() == 0
&& rowIndex == 2 && columnIndex == 1) {
if (cb1 == null) {
initCombobox1();
}
return cb1;
}
return null;
}
@Override
public Component getCustomEditorForCell(Cell cell,
int rowIndex, int columnIndex,
Spreadsheet spreadsheet, Sheet sheet) {
if (spreadsheet.getActiveSheetIndex() == 0
&& rowIndex == 2 && columnIndex == 2) {
if (cb2 == null) {
initCombobox2();
}
return cb2;
}
return null;
}
@Override
public void onCustomEditorDisplayed(Cell cell, int rowIndex,
int columnIndex, Spreadsheet spreadsheet,
Sheet sheet, Component editor) {
if (cell == null) {
return;
}
((ComboBox<String>) editor)
.setValue(cell.getStringCellValue());
}
});
spreadsheet.setHeight("400px");
add(spreadsheet);
}
private void initCombobox1() {
cb1 = new ComboBox<>();
cb1.setItems("value1", "value2");
cb1.addValueChangeListener(e -> {
if ("value1".equals(e.getValue())) {
cb2.setItems("value1_1", "value1_2");
} else {
cb2.setItems("value2_1", "value2_2");
}
});
}
private void initCombobox2() {
cb2 = new ComboBox<>();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment