3
3
import org .openherbarium .webapp .model .Metadata ;
4
4
import org .openherbarium .webapp .model .MetadataFilter ;
5
5
import com .vaadin .flow .component .Composite ;
6
+ import com .vaadin .flow .component .button .Button ;
6
7
import com .vaadin .flow .component .grid .Grid ;
7
8
import com .vaadin .flow .data .provider .ConfigurableFilterDataProvider ;
9
+ import com .vaadin .flow .data .renderer .ComponentRenderer ;
8
10
import com .vaadin .flow .data .renderer .LocalDateRenderer ;
9
11
10
12
public class SearchGrid extends Composite <Grid <Metadata >> {
@@ -15,6 +17,7 @@ public class SearchGrid extends Composite<Grid<Metadata>> {
15
17
public static final String COLUMN_TAXON = "taxon" ;
16
18
private Grid <Metadata > grid = new Grid <>(Metadata .class , false );
17
19
private ConfigurableFilterDataProvider <Metadata , Void , MetadataFilter > filterDataProvider ;
20
+ private AddMetatadaToSelectionEventListener addMetadataListener ;
18
21
19
22
@ Override
20
23
protected Grid <Metadata > initContent () {
@@ -25,15 +28,31 @@ protected Grid<Metadata> initContent() {
25
28
.setHeader ("Finder" );
26
29
grid .addColumn (new LocalDateRenderer <>(Metadata ::getDate , "dd.MM.yyyy" ))
27
30
.setSortProperty (COLUMN_DATE ).setHeader ("Datum" );
31
+ grid .addColumn (new ComponentRenderer <>(
32
+ metadata -> new Button ("Zum vergleich" , event -> addToCompare (metadata ))));
28
33
grid .setHeight ("100%" );
29
34
return grid ;
30
35
}
31
36
37
+ private void addToCompare (Metadata metadata ) {
38
+ if (addMetadataListener != null ) {
39
+ addMetadataListener .addMetadataToSelection (metadata );
40
+ }
41
+ }
42
+
32
43
public void setDataProvider (MetadataDataProvider dataProvider ) {
33
44
filterDataProvider = dataProvider .withConfigurableFilter ();
34
45
grid .setDataProvider (filterDataProvider );
35
46
}
36
47
48
+ public AddMetatadaToSelectionEventListener getAddMetadataListener () {
49
+ return addMetadataListener ;
50
+ }
51
+
52
+ public void setAddMetadataListener (AddMetatadaToSelectionEventListener addMetadataListener ) {
53
+ this .addMetadataListener = addMetadataListener ;
54
+ }
55
+
37
56
public void setFilter (MetadataFilter filter ) {
38
57
if (filterDataProvider != null ) {
39
58
filterDataProvider .setFilter (filter );
0 commit comments