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.thumbnail;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.event.EventBus;
38 import info.magnolia.objectfactory.ComponentProvider;
39 import info.magnolia.ui.imageprovider.ImageProvider;
40 import info.magnolia.ui.vaadin.integration.jcr.JcrItemAdapter;
41 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
42 import info.magnolia.ui.workbench.AbstractContentPresenter;
43 import info.magnolia.ui.workbench.ContentView;
44 import info.magnolia.ui.workbench.definition.WorkbenchDefinition;
45 import info.magnolia.ui.workbench.thumbnail.ThumbnailContainer.ThumbnailItem;
46
47 import java.util.List;
48 import java.util.Set;
49
50 import javax.inject.Inject;
51 import javax.jcr.Node;
52 import javax.jcr.RepositoryException;
53 import javax.jcr.Session;
54
55 import org.slf4j.Logger;
56 import org.slf4j.LoggerFactory;
57
58 import com.vaadin.data.Container;
59 import com.vaadin.data.Item;
60
61
62
63
64 public class ThumbnailPresenter extends AbstractContentPresenter implements ThumbnailView.Listener {
65
66 private static final Logger log = LoggerFactory.getLogger(ThumbnailPresenter.class);
67
68 private final ThumbnailView view;
69
70 private final ImageProvider imageProvider;
71
72 private ThumbnailContainer container;
73
74 @Inject
75 public ThumbnailPresenter(final ThumbnailView view, final ImageProvider imageProvider, ComponentProvider componentProvider) {
76 super(componentProvider);
77 this.view = view;
78 this.imageProvider = imageProvider;
79 }
80
81 @Override
82 public ContentView start(WorkbenchDefinition workbench, EventBus eventBus, String viewTypeName) {
83 super.start(workbench, eventBus, viewTypeName);
84
85 container = new ThumbnailContainer(workbench, imageProvider);
86 container.setWorkspaceName(workbench.getWorkspace());
87 container.setThumbnailHeight(73);
88 container.setThumbnailWidth(73);
89
90 view.setListener(this);
91 view.setContainer(container);
92 view.setThumbnailSize(73, 73);
93
94 return view;
95 }
96
97 @Override
98 public void setSelectedItemIds(List<String> itemIds) {
99 super.setSelectedItemIds(itemIds);
100 }
101
102 @Override
103 public void refresh() {
104 container.refresh();
105 view.refresh();
106 }
107
108 @Override
109 public Container getContainer() {
110 return container;
111 }
112
113 @Override
114 public void onItemSelection(Set<String> items) {
115 super.onItemSelection(items);
116 }
117
118 @Override
119 public void onDoubleClick(Item item) {
120 JcrItemAdapter jcrItem = getJcrItemByThumbnailItem(item);
121 super.onDoubleClick(jcrItem);
122 }
123
124 @Override
125 public void onRightClick(Item item, int clickX, int clickY) {
126 JcrItemAdapter jcrItem = getJcrItemByThumbnailItem(item);
127 super.onRightClick(jcrItem, clickX, clickY);
128 }
129
130 @Override
131 public void select(List<String> itemIds) {
132 view.select(itemIds);
133 }
134
135
136
137
138 private JcrItemAdapter getJcrItemByThumbnailItem(final Item item) {
139 if (item instanceof ThumbnailItem) {
140 String itemId = ((ThumbnailItem) item).getItemId();
141 try {
142 Session session = MgnlContext.getJCRSession(workbenchDefinition.getWorkspace());
143 final Node imageNode = session.getNodeByIdentifier(itemId);
144 return new JcrNodeAdapter(imageNode);
145 } catch (RepositoryException e) {
146 log.error(e.getMessage());
147 }
148 }
149 return null;
150 }
151
152 }