1 package fr.ifremer.dali.ui.swing.content.manage.campaign.table;
2
3 import fr.ifremer.dali.ui.swing.DaliHelpBroker;
4 import fr.ifremer.dali.ui.swing.DaliUIContext;
5 import fr.ifremer.dali.ui.swing.util.DaliUI;
6 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
7 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
8 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
9 import java.awt.BorderLayout;
10 import java.awt.Component;
11 import java.awt.Container;
12 import java.awt.LayoutManager;
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15 import java.util.ArrayList;
16 import java.util.HashMap;
17 import java.util.List;
18 import java.util.Map;
19 import java.util.TreeMap;
20 import javax.swing.BorderFactory;
21 import javax.swing.Box;
22 import javax.swing.BoxLayout;
23 import javax.swing.JButton;
24 import javax.swing.JPanel;
25 import javax.swing.JScrollPane;
26 import jaxx.runtime.JAXXBinding;
27 import jaxx.runtime.JAXXContext;
28 import jaxx.runtime.JAXXObject;
29 import jaxx.runtime.JAXXObjectDescriptor;
30 import jaxx.runtime.JAXXUtil;
31 import jaxx.runtime.SwingUtil;
32 import jaxx.runtime.binding.DefaultJAXXBinding;
33 import jaxx.runtime.context.DefaultJAXXContext;
34 import jaxx.runtime.swing.help.JAXXHelpUI;
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37 import static org.nuiton.i18n.I18n.t;
38
39 public class CampaignsTableUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<CampaignsTableUIModel, CampaignsTableUIHandler>, JAXXObject {
40
41
42
43
44
45 public static final String BINDING_DELETE_CAMPAIGN_BUTTON_ENABLED = "deleteCampaignButton.enabled";
46 public static final String BINDING_NEW_CAMPAIGN_BUTTON_ENABLED = "newCampaignButton.enabled";
47
48
49
50
51
52 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1VTW8cRRAtb7zreJ0PYpPEIYHYJkrWQuoN4ugAie2YONoA8jqSxSJB70xn3WGmu9PTG49lBfET+Alw54LEjRPiwJkDF8RfQIgDV0R193pmx55kVyI+tKa7ql69eq6q/e5PqCYaFh/TNCW6LwyPGbl/Z2fno+5jFph1lgSaKyM1+L+JClQ6MBNm74mBNzstG94chDfXZKykYGIoeqUF9cTsRyzZZcwYeL0YESRJs52ZV1LV14eoGaky1G/+/qvydfjVtxWAVCG7aSxlYVRUXslkCyo8NDCLmZ7SZkRFD2loLnrI97R9W4toknxIY/YEvoSpFtQU1QhmYGn8kh2Gi0+Vgbqh3Yh9TAWLDHzwSBP+SLOYaRLSiJM+J8ke5ieBFAbhSEwF7TES0FhR3hPERZO1wTXZtteHm0q5BDUD1ViGFrn1kpAfWLgcvtbV8gumDdx4Lv463u5hzKrzzENPX7vfDrSMIlv7TQMXrb7pIGjIZN2ns6gzQYGQATKU+Emfhpr32Dt5dl9F2367AAszm6Gd6vaNkSIZyD9boOAei9lPXvOvN+39NXvMZ7Zzgu0dqrXqYA3MFQD9q3W/nEW9inIyw4qB1nZ14KfhcqGBcTRIPhp57050oKr7+GxgvnN8mrbQ5Odo/sgcWUBn/ffC3G8//vHDxvDwnC91HZp9bGqlpcIW4Db1WT85fcOj5gOqVjqIggUGfjFcKSHWHpiRHOY7Z8OJDSf3aLKLENWp33/6+cLnv56AygbUI0nDDWr9N2Ha7GpUQUZhqt6/7Rid2juJ5yuWm+1NqUPbm7cOVt2XD9wngWbUsG1uIhZ6S8M0llzX5t1vrUvLy89SlOxKiWQZ7+70L//Mtb+/fSjbBJZx6bnuuXTVT6DGRcQFc1tnsFBKt8yMSlg/lPniKFslUNglajBoN9z51jF9JtEb5eBSbNoFACdoiItv0rAUl9lZr4WMYykItrWBGSNltM3VtrOfL2qFHqgX7rIpJiwBBLp44PYO4UmbPmV3/XPDqmnpNJ1M9uttKBucUeSrOKqfUaUiHlBbwh1XCPbXwXphmvw7CaxKz44UXPODl9U8O1zzoa1Y9nyxbO90tPJ3DxZ96T1m/D+dhVtyL2ksoxh3Y2X2G8sL168vjK9P6YoYJZHt/4juS3SGM7dCauhCl4sQ99B7x3JM2LM+EtE+b9mjXY5waQxOdVSwJ2L8vdl5AdIbY3H59AUIi2NwmeSBX7X/iwUbweI/RUhuElEJAAA=";
53 private static final Log log = LogFactory.getLog(CampaignsTableUI.class);
54 private static final long serialVersionUID = 1L;
55
56
57
58
59
60 protected List<Object> $activeBindings = new ArrayList<Object>();
61 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
62 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
63 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
64 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
65 private boolean allComponentsCreated;
66 protected final JAXXContext delegateContext = new DefaultJAXXContext();
67
68
69
70
71
72 protected DaliHelpBroker broker;
73 protected JPanel buttonsPanel;
74 protected SwingTable campaignsTable;
75 protected JButton deleteCampaignButton;
76 protected final CampaignsTableUIHandler handler = createHandler();
77 protected CampaignsTableUIModel model;
78 protected JButton newCampaignButton;
79 protected CampaignsTableUI tablePanel = this;
80
81
82
83
84
85 private JPanel $JPanel0;
86 private JScrollPane $JScrollPane0;
87
88
89
90
91
92 public CampaignsTableUI(ApplicationUI parentUI) {
93 ApplicationUIUtil.setParentUI(this, parentUI);
94 $initialize();
95 }
96
97 public CampaignsTableUI() {
98 $initialize();
99 }
100
101 public CampaignsTableUI(JAXXContext parentContext) {
102 JAXXUtil.initContext(this, parentContext);
103 $initialize();
104 }
105
106 public CampaignsTableUI(boolean param0) {
107 super(param0);
108 $initialize();
109 }
110
111 public CampaignsTableUI(JAXXContext parentContext, boolean param1) {
112 super(param1);
113 JAXXUtil.initContext(this, parentContext);
114 $initialize();
115 }
116
117 public CampaignsTableUI(LayoutManager param0) {
118 super(param0);
119 $initialize();
120 }
121
122 public CampaignsTableUI(JAXXContext parentContext, LayoutManager param1) {
123 super(param1);
124 JAXXUtil.initContext(this, parentContext);
125 $initialize();
126 }
127
128 public CampaignsTableUI(LayoutManager param0, boolean param1) {
129 super(param0 ,param1);
130 $initialize();
131 }
132
133 public CampaignsTableUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
134 super(param1 ,param2);
135 JAXXUtil.initContext(this, parentContext);
136 $initialize();
137 }
138
139
140
141
142
143 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
144 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
145 }
146
147
148
149
150
151 @Override
152 public void applyDataBinding(String $binding) {
153 if (allComponentsCreated && $bindings.containsKey($binding)) {
154 getDataBinding($binding).applyDataBinding();
155 }
156 processDataBinding($binding);
157 }
158
159 @Override
160 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
161 super.firePropertyChange(propertyName, oldValue, newValue);
162 }
163
164 @Override
165 public Map<String, Object> get$objectMap() {
166 return $objectMap;
167 }
168
169 @Override
170 public JAXXBinding getDataBinding(String bindingId) {
171 return $bindings.get(bindingId);
172 }
173
174 @Override
175 public JAXXBinding[] getDataBindings() {
176 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
177 }
178
179 @Override
180 public Object getObjectById(String id) {
181 return $objectMap.get(id);
182 }
183
184 @Override
185 public void processDataBinding(String $binding, boolean $force) {
186 if (!$force && $activeBindings.contains($binding)) {
187 return;
188 }
189 $activeBindings.add($binding);
190 try {
191 if (allComponentsCreated && $bindings.containsKey($binding)) {
192 getDataBinding($binding).processDataBinding();
193 }
194 } finally {
195 $activeBindings.remove($binding);
196 }
197 }
198
199 @Override
200 public void processDataBinding(String $binding) {
201 processDataBinding($binding, false);
202 }
203
204 @Override
205 public void registerDataBinding(JAXXBinding binding) {
206 $bindings.put(binding.getId(), binding);
207 }
208
209 @Override
210 public void removeDataBinding(String $binding) {
211 if (allComponentsCreated && $bindings.containsKey($binding)) {
212 getDataBinding($binding).removeDataBinding();
213 }
214 }
215
216
217
218
219
220 @Override
221 public <T> T getContextValue(Class<T> clazz) {
222 return delegateContext.getContextValue(clazz, null);
223 }
224
225 @Override
226 public <T> T getContextValue(Class<T> clazz, String name) {
227 return delegateContext.getContextValue(clazz, name);
228 }
229
230 @Override
231 public JAXXContext getDelegateContext() {
232 return delegateContext;
233 }
234
235 @Override
236 public <O extends Container> O getParentContainer(Class<O> clazz) {
237 return SwingUtil.getParentContainer(this, clazz);
238 }
239
240 @Override
241 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
242 return SwingUtil.getParentContainer(source, clazz);
243 }
244
245 @Override
246 public <T> void removeContextValue(Class<T> clazz) {
247 delegateContext.removeContextValue(clazz, null);
248 }
249
250 @Override
251 public <T> void removeContextValue(Class<T> clazz, String name) {
252 delegateContext.removeContextValue(clazz, name);
253 }
254
255 @Override
256 public <T> void setContextValue(T o) {
257 delegateContext.setContextValue(o, null);
258 }
259
260 @Override
261 public <T> void setContextValue(T o, String name) {
262 delegateContext.setContextValue(o, name);
263 }
264
265
266
267
268
269 public void doActionPerformed__on__newCampaignButton(ActionEvent event) {
270 if (log.isDebugEnabled()) {
271 log.debug(event);
272 }
273 model.addNewRow();
274 }
275
276
277
278
279
280 public DaliHelpBroker getBroker() {
281 return broker;
282 }
283
284 public JPanel getButtonsPanel() {
285 return buttonsPanel;
286 }
287
288 public SwingTable getCampaignsTable() {
289 return campaignsTable;
290 }
291
292 public JButton getDeleteCampaignButton() {
293 return deleteCampaignButton;
294 }
295
296 public CampaignsTableUIHandler getHandler() {
297 return handler;
298 }
299
300 public CampaignsTableUIModel getModel() {
301 return model;
302 }
303
304 public JButton getNewCampaignButton() {
305 return newCampaignButton;
306 }
307
308
309
310
311
312 @Override
313 public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
314 broker.installUI(component, helpId);
315 }
316
317 @Override
318 public void showHelp(String helpId) {
319 getBroker().showHelp(this, helpId);
320 }
321
322
323
324
325
326 protected JPanel get$JPanel0() {
327 return $JPanel0;
328 }
329
330 protected JScrollPane get$JScrollPane0() {
331 return $JScrollPane0;
332 }
333
334
335
336
337
338 protected void addChildrenToButtonsPanel() {
339 if (!allComponentsCreated) {
340 return;
341 }
342 buttonsPanel.add($JPanel0, BorderLayout.LINE_START);
343 }
344
345 protected void addChildrenToTablePanel() {
346 if (!allComponentsCreated) {
347 return;
348 }
349 add($JScrollPane0);
350 add(buttonsPanel, BorderLayout.PAGE_END);
351 }
352
353 protected void createBroker() {
354 $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
355 }
356
357 protected void createButtonsPanel() {
358 $objectMap.put("buttonsPanel", buttonsPanel = new JPanel());
359
360 buttonsPanel.setName("buttonsPanel");
361 buttonsPanel.setLayout(new BorderLayout());
362 }
363
364 protected void createCampaignsTable() {
365 $objectMap.put("campaignsTable", campaignsTable = new SwingTable());
366
367 campaignsTable.setName("campaignsTable");
368 }
369
370 protected void createDeleteCampaignButton() {
371 $objectMap.put("deleteCampaignButton", deleteCampaignButton = new JButton());
372
373 deleteCampaignButton.setName("deleteCampaignButton");
374 deleteCampaignButton.setText(t("dali.common.delete"));
375 deleteCampaignButton.setToolTipText(t("dali.campaign.delete.tip"));
376 deleteCampaignButton.putClientProperty("applicationAction", DeleteCampaignAction.class);
377 }
378
379 protected CampaignsTableUIHandler createHandler() {
380 return new CampaignsTableUIHandler();
381 }
382
383 protected void createModel() {
384 $objectMap.put("model", model = getContextValue(CampaignsTableUIModel.class));
385 }
386
387 protected void createNewCampaignButton() {
388 $objectMap.put("newCampaignButton", newCampaignButton = new JButton());
389
390 newCampaignButton.setName("newCampaignButton");
391 newCampaignButton.setText(t("dali.common.new"));
392 newCampaignButton.setToolTipText(t("dali.campaign.new.tip"));
393 newCampaignButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__newCampaignButton"));
394 }
395
396
397
398
399
400 private void $completeSetup() {
401 allComponentsCreated = true;
402 if (log.isDebugEnabled()) {
403 log.debug(this);
404 }
405 addChildrenToTablePanel();
406
407 $JScrollPane0.getViewport().add(campaignsTable);
408 addChildrenToButtonsPanel();
409
410 $JPanel0.add(newCampaignButton);
411 $JPanel0.add(deleteCampaignButton);
412
413
414 JAXXUtil.applyDataBinding(this, $bindings.keySet());
415
416
417 newCampaignButton.setAlignmentX(Component.CENTER_ALIGNMENT);
418 deleteCampaignButton.setAlignmentX(Component.CENTER_ALIGNMENT);
419 setBorder(BorderFactory.createTitledBorder(t("dali.campaign.title")));
420 newCampaignButton.setIcon(SwingUtil.createActionIcon("add"));
421 deleteCampaignButton.setIcon(SwingUtil.createActionIcon("delete"));
422 }
423
424 private void $initialize() {
425 if (allComponentsCreated) {
426 return;
427 }
428 if (log.isDebugEnabled()) {
429 log.debug(this);
430 }
431 handler.beforeInit(this);
432 $objectMap.put("tablePanel", tablePanel);
433 createModel();
434 createBroker();
435
436 $objectMap.put("$JScrollPane0", $JScrollPane0 = new JScrollPane());
437
438 $JScrollPane0.setName("$JScrollPane0");
439 createCampaignsTable();
440 createButtonsPanel();
441
442 $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
443
444 $JPanel0.setName("$JPanel0");
445 createNewCampaignButton();
446 createDeleteCampaignButton();
447
448 setName("tablePanel");
449 setLayout(new BorderLayout());
450
451
452 $registerDefaultBindings();
453 $completeSetup();
454 handler.afterInit(this);
455 }
456
457 private void $registerDefaultBindings() {
458
459 registerDataBinding(new DefaultJAXXBinding(this, BINDING_NEW_CAMPAIGN_BUTTON_ENABLED, true) {
460
461 @Override
462 public void applyDataBinding() {
463 if (model != null) {
464 model.addPropertyChangeListener("saveEnabled", this);
465 }
466 }
467
468 @Override
469 public void processDataBinding() {
470 if (model != null) {
471 newCampaignButton.setEnabled(model.isSaveEnabled());
472 }
473 }
474
475 @Override
476 public void removeDataBinding() {
477 if (model != null) {
478 model.removePropertyChangeListener("saveEnabled", this);
479 }
480 }
481 });
482 registerDataBinding(new DefaultJAXXBinding(this, BINDING_DELETE_CAMPAIGN_BUTTON_ENABLED, true, true) {
483
484 @Override
485 public void applyDataBinding() {
486 if (model != null) {
487 model.addPropertyChangeListener("selectedRows", this);
488 }
489 if (model != null) {
490 model.addPropertyChangeListener("saveEnabled", this);
491 }
492 }
493
494 @Override
495 public void processDataBinding() {
496 if (model != null && model.getSelectedRows() != null) {
497 deleteCampaignButton.setEnabled(!model.getSelectedRows().isEmpty() && model.isSaveEnabled());
498 }
499 }
500
501 @Override
502 public void removeDataBinding() {
503 if (model != null) {
504 model.removePropertyChangeListener("selectedRows", this);
505 }
506 if (model != null) {
507 model.removePropertyChangeListener("saveEnabled", this);
508 }
509 }
510 });
511 }
512
513 }