@Override public void updateSort(Optional<SortModel> sortModel) { TableModel model = this.tableModel.get(); tableModel.updateIfNotSame(ImmutableTableModel .builder() .from(model) .sorting(sortModel.isPresent() ? Collections.singleton(sortModel.get()) : Collections.EMPTY_LIST) .build()); }
@Override public void updateColumnWidth(String columnId, int newWidth) { TableModel model = this.tableModel.get(); List<TableColumn> updatedColumns = new ArrayList<>(); for (TableColumn column : model.getColumns()) { if(column.getId().equals(columnId)) { updatedColumns.add(ImmutableTableColumn.builder().from(column).width(newWidth).build()); } else { updatedColumns.add(column); } } tableModel.updateIfNotSame(ImmutableTableModel.builder() .from(model) .columns(updatedColumns) .build()); }
private TableModel buildUpdatedModel() { List<TableColumn> columns = new ArrayList<>(); for (TableColumnModel model : selectedStore.getAll()) { columns.add(model.updatedModel()); } return ImmutableTableModel.builder() .from(this.tableModel.getModel()) .columns(columns) .build(); }
@Test public void test() { TableModel tableModel = ImmutableTableModel.builder() .formId(setup.getSurveyForm().getFormId()) .build(); TableViewModel viewModel = new TableViewModel(setup.getFormStore(), tableModel); Connection<EffectiveTableModel> view = setup.connect(viewModel.getEffectiveTable()); EffectiveTableModel effectiveTableModel = view.assertLoaded(); EffectiveTableColumn nameColumn = effectiveTableModel.getColumns().get(0); assertThat(nameColumn.getLabel(), equalTo("Respondent Name")); // Now verify that we can update the column label view.resetChangeCounter(); TableColumn updatedColumn = ImmutableTableColumn.builder() .from(nameColumn.getModel()) .label("MY column") .build(); viewModel.update(ImmutableTableModel.builder() .from(tableModel) .columns(Arrays.asList(updatedColumn)) .build()); setup.runScheduled(); // Should receive a change event... view.assertChanged(); EffectiveTableModel updatedModel = view.assertLoaded(); assertThat(updatedModel.getColumns().get(0).getLabel(), equalTo("MY column")); }
@Override public void updateFilter(Optional<FormulaNode> filterNode) { Optional<String> filter = filterNode.transform(n -> n.asExpression()); tableModel.updateIfNotEqual( ImmutableTableModel.builder() .from(tableModel.get()) .filter(filter) .build()); }