1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.chooser;
35
36 import info.magnolia.ui.ValueContext;
37 import info.magnolia.ui.api.ioc.UiContextScoped;
38 import info.magnolia.ui.filter.FilterContext;
39 import info.magnolia.ui.chooser.definition.SingleItemWorkbenchChooserDefinition;
40
41 import java.util.Collections;
42 import java.util.Iterator;
43 import java.util.function.Consumer;
44
45 import javax.inject.Inject;
46
47 import com.vaadin.ui.Component;
48
49
50
51
52
53
54
55 @UiContextScoped
56 public class SingleItemWorkbenchChooser<T> implements Chooser<T> {
57
58 private final WorkbenchChooser<T> workbenchChooser;
59
60 @Inject
61 public SingleItemWorkbenchChooser(SingleItemWorkbenchChooserDefinition<T> definition) {
62 bindContext(FilterContext.class);
63 bindContext(ValueContext.class);
64
65 workbenchChooser = create(definition.getWorkbenchChooser());
66 }
67
68 @Override
69 public Component asVaadinComponent() {
70 return workbenchChooser.asVaadinComponent();
71 }
72
73 @Override
74 public void onChange(Consumer<T> callback) {
75 workbenchChooser.onChange(items ->
76 callback.accept(items.iterator().hasNext() ? items.iterator().next() : null));
77 }
78
79 @Override
80 public T getChoice() {
81 final Iterator<T> iterator = workbenchChooser.getChoice().iterator();
82 return iterator.hasNext() ? iterator.next() : null;
83 }
84
85 @Override
86 public void setChoice(T choice) {
87 workbenchChooser.setChoice(choice == null ? Collections.emptySet() : Collections.singleton(choice));
88 }
89 }