Skip to content

Commit

Permalink
WIP GridPro Based Batch implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
Steffengreiner committed Jul 14, 2023
1 parent 33dea35 commit 0556a54
Showing 1 changed file with 63 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
import com.vaadin.flow.component.grid.editor.Editor;
import com.vaadin.flow.component.gridpro.GridPro;
import com.vaadin.flow.component.gridpro.ItemUpdater;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.html.Span;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.data.binder.Binder;
import com.vaadin.flow.spring.annotation.SpringComponent;
import com.vaadin.flow.spring.annotation.UIScope;
import com.vaadin.flow.theme.lumo.LumoUtility.IconSize;
Expand All @@ -17,6 +18,7 @@
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import life.qbic.datamanager.views.general.PageArea;
import life.qbic.datamanager.views.projects.project.ProjectViewPage;
import life.qbic.datamanager.views.projects.project.samples.registration.batch.BatchDeletionEvent;
Expand All @@ -41,7 +43,7 @@ public class BatchDetailsComponent extends PageArea implements Serializable {
@Serial
private static final long serialVersionUID = 4047815658668024042L;
private final Div content = new Div();
Grid<BatchPreview> batchGrid = new Grid<>();
GridPro<BatchPreview> batchGrid = new GridPro<>();

public BatchDetailsComponent() {
this.addClassName("batch-details-component");
Expand All @@ -60,23 +62,37 @@ private void layoutComponent() {

private void createBatchGrid() {
Editor<BatchPreview> editor = batchGrid.getEditor();
batchGrid.addColumn(BatchPreview::name).setHeader("Name");
batchGrid.addColumn(batchPreview -> batchPreview.experiment.getName()).setHeader("Experiment");
batchGrid.addColumn(BatchPreview::date).setHeader("Date");
Binder<BatchPreview> batchPreviewBinder = new Binder<>(BatchPreview.class);
editor.setBinder(batchPreviewBinder);
batchGrid.addEditColumn(BatchPreview::getName).text(BatchPreview::setName)
.setHeader("Name").setResizable(true);
batchGrid.addEditColumn(batchPreview -> batchPreview.experiment.getName())
.select(styleExperimentValue, createExperimentList()).setHeader("Experiment")
.setResizable(true);
batchGrid.addEditColumn(BatchPreview::getDate).text(BatchPreview::setDate).setHeader("Date")
.setResizable(true);
batchGrid.addComponentColumn(batchPreview -> {
Icon editIcon = VaadinIcon.EDIT.create();
Button editButton = new Button(editIcon);
editButton.addThemeVariants(ButtonVariant.LUMO_ICON);
editButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY_INLINE);
editIcon.addClassName(IconSize.SMALL);
editButton.addClickListener(e -> {
if (editor.isOpen()) {
editor.cancel();
}
batchGrid.getEditor().editItem(batchPreview);
});
return editIcon;
});
batchGrid.addThemeVariants(GridVariant.LUMO_COMPACT);
return editButton;
}).setWidth("3em").setFlexGrow(0);
batchGrid.setEditOnClick(true);

}

private static final ItemUpdater<BatchPreview, String> styleExperimentValue = (batchPreview, string) -> string = batchPreview.experiment.getName();

private List<String> createExperimentList() {
return List.of("Experiment 1", "Experiment 2",
"Experiment 3", "Experiment 4");
}

private Collection<BatchPreview> createDummyBatchPreviews() {
Expand All @@ -90,8 +106,44 @@ private void setGridItems() {
batchGrid.setItems(createDummyBatchPreviews());
}

private record BatchPreview(String name, String date, Experiment experiment) {
private class BatchPreview {

private String name;
private String date;
private Experiment experiment;

public BatchPreview(String name, String date, Experiment experiment) {
Objects.requireNonNull(name);
Objects.requireNonNull(date);
Objects.requireNonNull(experiment);
this.name = name;
this.date = date;
this.experiment = experiment;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDate() {
return date;
}

public void setDate(String date) {
this.date = date;
}

public Experiment getExperiment() {
return experiment;
}

public void setExperiment(Experiment experiment) {
this.experiment = experiment;
}
}

@FunctionalInterface
Expand Down

0 comments on commit 0556a54

Please sign in to comment.