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.form.field.component;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.ui.imageprovider.ImageProvider;
38 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
39 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
40
41 import java.util.List;
42
43 import javax.jcr.Node;
44 import javax.jcr.RepositoryException;
45
46 import org.apache.commons.lang3.StringUtils;
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 import com.vaadin.server.ExternalResource;
51 import com.vaadin.ui.Component;
52 import com.vaadin.ui.FormLayout;
53 import com.vaadin.ui.Image;
54 import com.vaadin.v7.data.Item;
55 import com.vaadin.v7.ui.HorizontalLayout;
56
57
58
59
60 public abstract class AbstractBaseItemContentPreviewComponent extends AbstractContentPreviewComponent<Item> {
61
62 private static final Logger log = LoggerFactory.getLogger(AbstractBaseItemContentPreviewComponent.class);
63 protected ImageProvider imageProvider;
64
65 public AbstractBaseItemContentPreviewComponent(String workspace) {
66 super(workspace);
67
68 this.rootLayout = new HorizontalLayout();
69 setCompositionRoot(rootLayout);
70 }
71
72 public abstract void setImageProvider();
73
74
75
76
77
78
79
80
81 public abstract List<Component> createFieldDetail(Item fileItem) throws RepositoryException;
82
83 @Override
84 public Component refreshContentDetail(Item item) {
85 FormLayout fileInfo = new FormLayout();
86 fileInfo.setSizeUndefined();
87 fileInfo.addStyleName("file-details");
88 try {
89 List<Component> res = createFieldDetail(item);
90 fileInfo.addComponents(res.toArray(new Component[res.size()]));
91 } catch (RepositoryException e) {
92 log.warn("Could not get the related File node", e);
93 }
94 return fileInfo;
95 }
96
97 @Override
98 public Component refreshContentPreview(Item item) {
99 Image thumbnail = new Image();
100 String path = imageProvider.getPortraitPath(((JcrItemAdapter)item).getItemId());
101 if (StringUtils.isNotBlank(path)) {
102 thumbnail = new Image("", new ExternalResource(path));
103 thumbnail.addStyleName("file-preview-area");
104 }
105 return thumbnail;
106 }
107
108
109
110
111
112 @Override
113 protected Item refreshItem(String itemPath) {
114 Item currentItem = null;
115 try {
116 Node fileNode = MgnlContext.getJCRSession(workspace).getNode(itemPath);
117 if (fileNode != null) {
118 currentItem = new JcrNodeAdapter(fileNode);
119 }
120 } catch (RepositoryException e) {
121 log.warn("Not able to refresh the Preview Component view for the following path: {}", itemPath, e);
122 }
123 return currentItem;
124 }
125
126 }