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.dam.external.app.contentview.list;
35
36 import info.magnolia.dam.api.AssetProvider;
37 import info.magnolia.dam.external.app.contentconnector.AssetContentConnector;
38 import info.magnolia.dam.external.app.contentview.AbstractAssetContainer;
39 import info.magnolia.dam.external.app.contentview.AssetProviderAwarePresenter;
40 import info.magnolia.dam.external.app.contentview.FlatAssetContainer;
41 import info.magnolia.objectfactory.ComponentProvider;
42 import info.magnolia.ui.workbench.column.definition.ColumnDefinition;
43 import info.magnolia.ui.workbench.definition.ContentPresenterDefinition;
44 import info.magnolia.ui.workbench.list.ListPresenter;
45 import info.magnolia.ui.workbench.list.ListView;
46
47 import javax.inject.Inject;
48
49 import com.vaadin.data.Container;
50
51
52
53
54 public class AssetListPresenter extends ListPresenter implements AssetProviderAwarePresenter {
55
56 @Inject
57 public AssetListPresenter(ListView view, ComponentProvider componentProvider) {
58 super(view, componentProvider);
59 }
60
61 @Override
62 public Container initializeContainer() {
63 AssetContentConnector contentConnector = (AssetContentConnector) this.contentConnector;
64 container = getComponentProvider().newInstance(getContainerClass(), contentConnector);
65 configureContainer(getPresenterDefinition(), container);
66 return container;
67 }
68
69 protected void configureContainer(ContentPresenterDefinition presenterDefinition, Container container) {
70 for (ColumnDefinition column : presenterDefinition.getColumns()) {
71 String propertyId = column.getPropertyName() != null ? column.getPropertyName() : column.getName();
72 container.addContainerProperty(propertyId, column.getType(), null);
73 }
74 }
75
76 @Override
77 public void setAssetProvider(AssetProvider assetProvider) {
78 ((AbstractAssetContainer) container).setAssetProvider(assetProvider);
79 }
80
81 protected Class<? extends AbstractAssetContainer> getContainerClass() {
82 return FlatAssetContainer.class;
83 }
84 }