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.workbench.list;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.objectfactory.ComponentProvider;
38 import info.magnolia.ui.workbench.AbstractContentPresenter;
39 import info.magnolia.ui.workbench.column.definition.ColumnDefinition;
40 import info.magnolia.ui.workbench.container.AbstractJcrContainer;
41 import info.magnolia.ui.workbench.definition.WorkbenchDefinition;
42
43 import java.util.Iterator;
44 import java.util.List;
45
46 import javax.inject.Inject;
47
48
49
50
51 public class ListPresenter extends AbstractContentPresenter implements ListView.Listener {
52
53 protected final ListView view;
54
55 protected AbstractJcrContainer container;
56
57 @Inject
58 public ListPresenter(final ListView view, final ComponentProvider componentProvider) {
59 super(componentProvider);
60 this.view = view;
61 }
62
63 @Override
64 public ListView start(WorkbenchDefinition workbench, EventBus eventBus, String viewTypeName) {
65 super.start(workbench, eventBus, viewTypeName);
66
67 this.container = createContainer(workbench);
68 view.setListener(this);
69 view.setContainer(container);
70
71
72 Iterator<ColumnDefinition> it = getColumnsIterator();
73
74 while (it.hasNext()) {
75 ColumnDefinition column = it.next();
76
77 String propertyId = column.getPropertyName() != null ? column.getPropertyName() : column.getName();
78 String title = column.getLabel();
79 container.addContainerProperty(propertyId, column.getType(), null);
80
81 if (column.getWidth() > 0) {
82 view.addColumn(propertyId, title, column.getWidth());
83 } else if (column.getExpandRatio() > 0) {
84 view.addColumn(propertyId, title, column.getExpandRatio());
85 } else {
86 view.addColumn(propertyId, column.getLabel());
87 }
88
89 if (column.getFormatterClass() != null) {
90 view.setColumnFormatter(propertyId, getComponentProvider().newInstance(column.getFormatterClass(), column));
91 }
92
93 if (column.isSortable()) {
94 container.addSortableProperty(propertyId);
95 }
96 }
97
98 return view;
99 }
100
101 @Override
102 public void setSelectedItemIds(List<String> itemIds) {
103 super.setSelectedItemIds(itemIds);
104 }
105
106 @Override
107 public void select(List<String> itemIds) {
108 view.select(itemIds);
109 }
110
111 @Override
112 public void refresh() {
113
114 container.refresh();
115 container.fireItemSetChange();
116 }
117
118 protected AbstractJcrContainer createContainer(WorkbenchDefinition workbench) {
119 return new FlatJcrContainer(workbench);
120 }
121
122 @Override
123 public AbstractJcrContainer getContainer() {
124 return container;
125 }
126
127
128 }