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.module.rssaggregator.field;
35
36
37 import javax.jcr.Node;
38
39 import info.magnolia.context.MgnlContext;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.jcr.node2bean.Node2BeanProcessor;
42 import info.magnolia.module.rssaggregator.RSSJob;
43 import info.magnolia.module.rssaggregator.command.LaunchSingleRSSCommand;
44 import info.magnolia.objectfactory.Components;
45 import info.magnolia.ui.vaadin.integration.jcr.JcrNodeAdapter;
46
47 import com.vaadin.data.Item;
48 import com.vaadin.ui.Alignment;
49 import com.vaadin.ui.Button;
50 import com.vaadin.ui.Component;
51 import com.vaadin.ui.CustomField;
52 import com.vaadin.ui.VerticalLayout;
53 import com.vaadin.ui.Button.ClickEvent;
54
55
56
57
58 public class RunRSSImportButtonField extends CustomField<String> {
59
60 private final VerticalLayout rootLayout = new VerticalLayout();
61 private final Button runButton = new Button();
62
63 private Item item;
64 private SimpleTranslator simpleTranslator;
65
66 public RunRSSImportButtonField(Item item, SimpleTranslator simpleTranslator) {
67 this.item = item;
68 this.simpleTranslator = simpleTranslator;
69 }
70
71 @Override
72 protected Component initContent() {
73 setImmediate(true);
74 rootLayout.setSizeFull();
75 rootLayout.setSpacing(true);
76
77 runButton.addStyleName("commit");
78 runButton.setCaption(simpleTranslator.translate("rssAggregator.manual.rss.import.run"));
79 runButton.addClickListener(createButtonClickListener());
80
81 rootLayout.addComponent(runButton);
82 rootLayout.setExpandRatio(runButton, 0);
83 rootLayout.setComponentAlignment(runButton, Alignment.MIDDLE_CENTER);
84
85 return rootLayout;
86 }
87
88 @Override
89 public Class<String> getType() {
90 return String.class;
91 }
92
93 private Button.ClickListener createButtonClickListener() {
94 return new Button.ClickListener() {
95 @Override
96 public void buttonClick(ClickEvent event) {
97 runImport();
98 }
99 };
100 }
101
102 private void runImport() {
103 try {
104 Node node = ((JcrNodeAdapter) item).applyChanges();
105 Node2BeanProcessor n2b = Components.getComponent(Node2BeanProcessor.class);
106 RSSJob job = (RSSJob) n2b.toBean(node, RSSJob.class);
107 LaunchSingleRSSCommand command = new LaunchSingleRSSCommand(job);
108 command.execute(MgnlContext.getInstance());
109 } catch (Exception e) {
110
111 }
112 };
113
114 }