1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.importer.wizard.template;
19
20 import java.io.File;
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.UUID;
24
25 import org.apache.log4j.Logger;
26 import org.eclipse.osgi.util.NLS;
27 import org.eclipse.swt.SWT;
28
29 import pl.edu.agh.cast.data.model.Activator;
30 import pl.edu.agh.cast.importer.base.template.IImportTemplate;
31 import pl.edu.agh.cast.importer.base.template.ImportTemplateGroup;
32 import pl.edu.agh.cast.importer.base.template.ImportTemplateManager;
33 import pl.edu.agh.cast.importer.base.template.exception.TemplateException;
34 import pl.edu.agh.cast.importer.wizard.util.Messages;
35 import pl.edu.agh.cast.ui.util.IMsgBoxHelper;
36
37
38
39
40
41
42 public class TemplateManagementPresenter implements ITemplateSelectionListener {
43
44 private static Logger log = Activator.getLogger();
45
46 private Collection<ImportTemplateGroup> model;
47
48 private Collection<TemplateGroupTreeEntry> input;
49
50 private ITemplateManagementView view;
51
52 private ImportTemplateManager manager;
53
54 private IImportTemplate selectedTemplate;
55
56
57
58
59
60
61
62 public TemplateManagementPresenter(ITemplateManagementView view) {
63 this.view = view;
64 initialize();
65 }
66
67 public Collection<ImportTemplateGroup> getModel() {
68 return model;
69 }
70
71 public ITemplateManagementView getView() {
72 return view;
73 }
74
75 public IImportTemplate getSelectedTemplate() {
76 return selectedTemplate;
77 }
78
79
80
81
82 public void handleRemoveTemplate() {
83 try {
84 if (selectedTemplate != null) {
85 if (view.showRemoveTemplateConfirmationQuestion(selectedTemplate) == SWT.YES) {
86 manager.removeTemplate(selectedTemplate.getId());
87 refreshModel();
88 }
89 } else {
90 view.showNoTemplateSelectedInfo();
91
92 }
93 } catch (TemplateException e) {
94 view.showCannotRemoveTemplateError(selectedTemplate, e);
95 }
96 }
97
98
99
100
101
102
103
104
105
106
107
108
109
110 public IImportTemplate handleImportTemplate(File file, IMsgBoxHelper msgBoxHelper) throws TemplateException {
111 IImportTemplate template = manager.importTemplateFromFile(file, msgBoxHelper);
112 if (template != null) {
113 refreshModel();
114 }
115 return template;
116 }
117
118
119
120
121
122
123
124
125
126 public void handleExportTemplate(File file, IMsgBoxHelper msgBoxHelper) {
127 if (file == null || msgBoxHelper == null) {
128 throw new IllegalArgumentException();
129 }
130 IImportTemplate template = getSelectedTemplate();
131 if (template == null) {
132 msgBoxHelper.showWarningBox(Messages.TemplateManagementPresenter_0, Messages.TemplateManagementPresenter_1);
133 }
134 try {
135 manager.exportTemplateToFile(template.getId(), file);
136 msgBoxHelper.showInfoBox(Messages.TemplateManagementPresenter_2, NLS.bind(
137 Messages.TemplateManagementPresenter_3, template.getName(), file.getAbsolutePath()));
138 } catch (TemplateException e) {
139 log.error(String.format("Error during exporting template %s to file: %s", template.getName(), file
140 .getAbsolutePath()), e);
141 msgBoxHelper.showErrorBox(Messages.TemplateManagementPresenter_4, Messages.TemplateManagementPresenter_5);
142 }
143 }
144
145
146
147
148
149
150
151 @Override
152 public void selectionChanged(IImportTemplate selected) {
153 selectedTemplate = selected;
154 }
155
156
157
158
159 public void dispose() {
160 view.removeTemplateSelectionListener(this);
161 }
162
163 private void initialize() {
164 view.initialize(this);
165 view.addTemplateSelecionListener(this);
166 manager = pl.edu.agh.cast.importer.base.Activator.getDefault().getTemplateManager();
167 if (manager == null) {
168 return;
169
170 }
171
172 refreshModel();
173
174 }
175
176 private void refreshModel() {
177 model = manager.getAllTemplateGroups();
178
179
180 input = new ArrayList<TemplateGroupTreeEntry>(model.size());
181 for (ImportTemplateGroup group : model) {
182 TemplateGroupTreeEntry groupEntry = new TemplateGroupTreeEntry(group, input);
183 for (UUID templateId : group.getTemplates()) {
184 IImportTemplate template = manager.getTemplate(templateId);
185 if (template == null) {
186
187 continue;
188 }
189 groupEntry.addChild(new TemplateTreeEntry(template, groupEntry));
190 }
191 input.add(groupEntry);
192 }
193 view.setInput(input);
194 }
195
196 }