1 package fr.ifremer.reefdb.ui.swing.content.manage.referential.taxon.local;
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 import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
28 import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
29 import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
30 import fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker;
31 import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
32 import fr.ifremer.reefdb.ui.swing.content.manage.referential.taxon.menu.TaxonMenuUI;
33 import fr.ifremer.reefdb.ui.swing.util.ReefDbUI;
34 import java.awt.BorderLayout;
35 import java.awt.Component;
36 import java.awt.Container;
37 import java.awt.FlowLayout;
38 import java.awt.LayoutManager;
39 import java.awt.event.ActionEvent;
40 import java.awt.event.ActionListener;
41 import java.util.ArrayList;
42 import java.util.HashMap;
43 import java.util.List;
44 import java.util.Map;
45 import java.util.TreeMap;
46 import javax.swing.Box;
47 import javax.swing.BoxLayout;
48 import javax.swing.JButton;
49 import javax.swing.JPanel;
50 import javax.swing.JScrollPane;
51 import jaxx.runtime.JAXXBinding;
52 import jaxx.runtime.JAXXContext;
53 import jaxx.runtime.JAXXObject;
54 import jaxx.runtime.JAXXObjectDescriptor;
55 import jaxx.runtime.JAXXUtil;
56 import jaxx.runtime.SwingUtil;
57 import jaxx.runtime.binding.DefaultJAXXBinding;
58 import jaxx.runtime.context.DefaultJAXXContext;
59 import org.apache.commons.logging.Log;
60 import org.apache.commons.logging.LogFactory;
61 import static org.nuiton.i18n.I18n.t;
62
63 public class TaxonsLocalUI extends JPanel implements ReefDbUI<TaxonsLocalUIModel, TaxonsLocalUIHandler>, JAXXObject {
64
65
66
67
68
69 public static final String BINDING_GERER_TAXONS_LOCAL_TABLE_REMPLACER_BOUTON_ENABLED = "gererTaxonsLocalTableRemplacerBouton.enabled";
70 public static final String BINDING_GERER_TAXONS_LOCAL_TABLE_SUPPRIMER_BOUTON_ENABLED = "gererTaxonsLocalTableSupprimerBouton.enabled";
71
72
73
74
75
76 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1VQW8bRRR+dmKncVJoCElTUUoSXJSoaN2KCyIU2jRETeQ0yHalqFah492JM+3sznR2ttkQFfET+Alw54LEjRPiwJkDF8RfQIhDr4g3u/ZuNrETg2vJo/G897733jfzPn/3JxR8BQuPSRhaKvA0c6m1eXtnZ7v1mNp6jfq2YlILBfEnl4d8Eyac5NzX8HazasIrnfDKHeFK4VHvSPRKFUq+PuDU36NUa3gzG2H7fqWemFdCGagualJUL9Rv/v4r/7Xz1bd5gFBidRPYyvxZUWkno1XIM0fDa5jpGalw4rWxDMW8NtZ73pzd4cT37xGXPoUvYawKRUkUgmlYHLzlCCOKD6WGc+XNT4lH+XUN27vKYruKulRZitJdp2UFzPL3Mb9lC08jnOUSj7QpmnepScwItzQJhWdxYeO+YfZ+1ezvb0gZpSlqKLjCoVxD4yVn2DKwaZpiS4knVGm4dkqeGv5ea93FuNXIOw2f0in2FvWC+xsaqsNU7CJIXHAMZ/KMJ+m6zN/ACzd3G3Zg49Os7/nyZt1WgnNjw6u6mAlITcZ9Jom6cKShBmlxqsE60s/TgDiKtel7aUvaeFl1s48CDNBcgjfZCrRGwKTAi9l8i20kQDWOJb0ngmeUBKsiwFgN05nSVyNEE38lgSn3hKkHUip82yoGMr6Lg8TVqCs5sXvFKXgjM5w49lY69ulc5ppQUAEea5hrnlSKGppijZg7phEGMLL+Mzv9249//LDeFYZJzD3T0/WIruHASiUkPmhmUr8aq0KgGa9sEbnShHGfchTFSPQu9yis3jFjcZhvyoRbJty6S/w9hCiM/f7Tz7OPfh2B/DqUuCDOOjH+GzCu9xSyILgTyo9vRRVN7p/D9QJ+RzSU0I8Jb8OMAIwQB0VrVNMQhWiqMyW2cF0cAY/ua5jQQvAGk40+HiFSd7kHdUn9rfFfXkzXv7/VpS+H7Vzq655SWHgAReZx5tFIWTui2VNJJ6RPA0ek4thLLmGgNy47kvJutF4/wV8BB/5zIiVnNjEs3o641HDlcFtSr0aj5xpliC2WbUp4foz1MRU7JszPZHlNzFn2+3mNUc80ghd59TBSa6tNdcwodWpi319atnz2BV1anr95c/7G8zAwzb0fXYbZfQADDuD/ZefS4RpWo88mpuhEfgkvr2c77lqztPRxSlkpHy70o4X5n7hSHywt/wdSjqnZWaTksC1ODtBXwysfOkST+RbzHJTQj07kzJm1dCaiOX5ols96I8wOjfDWAF2VCGdtD/8o9c4pSAsD1fLkFITy0AjvDNDNKLPjf5ih+giH7uM0BNPHv7cfN0FmCwAA";
77 private static final Log log = LogFactory.getLog(TaxonsLocalUI.class);
78 private static final long serialVersionUID = 1L;
79
80
81
82
83
84 protected List<Object> $activeBindings = new ArrayList<Object>();
85 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
86 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
87 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
88 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
89 private boolean allComponentsCreated;
90 protected final JAXXContext delegateContext = new DefaultJAXXContext();
91
92
93
94
95
96 protected ReefDbHelpBroker broker;
97 protected JPanel buttonsPanel;
98 protected JButton gererTaxonsLocalTableNouveauBouton;
99 protected JButton gererTaxonsLocalTableRemplacerBouton;
100 protected JButton gererTaxonsLocalTableSupprimerBouton;
101 protected final TaxonsLocalUIHandler handler = createHandler();
102 protected TaxonsLocalUIModel model;
103 protected TaxonMenuUI taxonsLocalMenuUI;
104 protected SwingTable taxonsLocalTable;
105
106
107
108
109
110 private TaxonsLocalUI $JPanel0 = this;
111 private JPanel $JPanel1;
112 private JScrollPane $JScrollPane0;
113
114
115
116
117
118 public TaxonsLocalUI(ApplicationUI parentUI) {
119 ApplicationUIUtil.setParentUI(this, parentUI);
120 $initialize();
121 }
122
123 public TaxonsLocalUI(LayoutManager param0, boolean param1) {
124 super(param0 ,param1);
125 $initialize();
126 }
127
128 public TaxonsLocalUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
129 super(param1 ,param2);
130 JAXXUtil.initContext(this, parentContext);
131 $initialize();
132 }
133
134 public TaxonsLocalUI(boolean param0) {
135 super(param0);
136 $initialize();
137 }
138
139 public TaxonsLocalUI(JAXXContext parentContext, boolean param1) {
140 super(param1);
141 JAXXUtil.initContext(this, parentContext);
142 $initialize();
143 }
144
145 public TaxonsLocalUI() {
146 $initialize();
147 }
148
149 public TaxonsLocalUI(JAXXContext parentContext) {
150 JAXXUtil.initContext(this, parentContext);
151 $initialize();
152 }
153
154 public TaxonsLocalUI(LayoutManager param0) {
155 super(param0);
156 $initialize();
157 }
158
159 public TaxonsLocalUI(JAXXContext parentContext, LayoutManager param1) {
160 super(param1);
161 JAXXUtil.initContext(this, parentContext);
162 $initialize();
163 }
164
165
166
167
168
169 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
170 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
171 }
172
173
174
175
176
177 @Override
178 public void applyDataBinding(String $binding) {
179 if (allComponentsCreated && $bindings.containsKey($binding)) {
180 getDataBinding($binding).applyDataBinding();
181 }
182 processDataBinding($binding);
183 }
184
185 @Override
186 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
187 super.firePropertyChange(propertyName, oldValue, newValue);
188 }
189
190 @Override
191 public Map<String, Object> get$objectMap() {
192 return $objectMap;
193 }
194
195 @Override
196 public JAXXBinding getDataBinding(String bindingId) {
197 return $bindings.get(bindingId);
198 }
199
200 @Override
201 public JAXXBinding[] getDataBindings() {
202 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
203 }
204
205 @Override
206 public Object getObjectById(String id) {
207 return $objectMap.get(id);
208 }
209
210 @Override
211 public void processDataBinding(String $binding, boolean $force) {
212 if (!$force && $activeBindings.contains($binding)) {
213 return;
214 }
215 $activeBindings.add($binding);
216 try {
217 if (allComponentsCreated && $bindings.containsKey($binding)) {
218 getDataBinding($binding).processDataBinding();
219 }
220 } finally {
221 $activeBindings.remove($binding);
222 }
223 }
224
225 @Override
226 public void processDataBinding(String $binding) {
227 processDataBinding($binding, false);
228 }
229
230 @Override
231 public void registerDataBinding(JAXXBinding binding) {
232 $bindings.put(binding.getId(), binding);
233 }
234
235 @Override
236 public void removeDataBinding(String $binding) {
237 if (allComponentsCreated && $bindings.containsKey($binding)) {
238 getDataBinding($binding).removeDataBinding();
239 }
240 }
241
242
243
244
245
246 @Override
247 public <T> T getContextValue(Class<T> clazz) {
248 return delegateContext.getContextValue(clazz, null);
249 }
250
251 @Override
252 public <T> T getContextValue(Class<T> clazz, String name) {
253 return delegateContext.getContextValue(clazz, name);
254 }
255
256 @Override
257 public JAXXContext getDelegateContext() {
258 return delegateContext;
259 }
260
261 @Override
262 public <O extends Container> O getParentContainer(Class<O> clazz) {
263 return SwingUtil.getParentContainer(this, clazz);
264 }
265
266 @Override
267 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
268 return SwingUtil.getParentContainer(source, clazz);
269 }
270
271 @Override
272 public <T> void removeContextValue(Class<T> clazz) {
273 delegateContext.removeContextValue(clazz, null);
274 }
275
276 @Override
277 public <T> void removeContextValue(Class<T> clazz, String name) {
278 delegateContext.removeContextValue(clazz, name);
279 }
280
281 @Override
282 public <T> void setContextValue(T o) {
283 delegateContext.setContextValue(o, null);
284 }
285
286 @Override
287 public <T> void setContextValue(T o, String name) {
288 delegateContext.setContextValue(o, name);
289 }
290
291
292
293
294
295 public void doActionPerformed__on__gererTaxonsLocalTableNouveauBouton(ActionEvent event) {
296 if (log.isDebugEnabled()) {
297 log.debug(event);
298 }
299 model.addNewRow();
300 }
301
302
303
304
305
306 public ReefDbHelpBroker getBroker() {
307 return broker;
308 }
309
310 public JPanel getButtonsPanel() {
311 return buttonsPanel;
312 }
313
314 public JButton getGererTaxonsLocalTableNouveauBouton() {
315 return gererTaxonsLocalTableNouveauBouton;
316 }
317
318 public JButton getGererTaxonsLocalTableRemplacerBouton() {
319 return gererTaxonsLocalTableRemplacerBouton;
320 }
321
322 public JButton getGererTaxonsLocalTableSupprimerBouton() {
323 return gererTaxonsLocalTableSupprimerBouton;
324 }
325
326 public TaxonsLocalUIHandler getHandler() {
327 return handler;
328 }
329
330 public TaxonsLocalUIModel getModel() {
331 return model;
332 }
333
334 public TaxonMenuUI getTaxonsLocalMenuUI() {
335 return taxonsLocalMenuUI;
336 }
337
338 public SwingTable getTaxonsLocalTable() {
339 return taxonsLocalTable;
340 }
341
342
343
344
345
346 protected JPanel get$JPanel1() {
347 return $JPanel1;
348 }
349
350 protected JScrollPane get$JScrollPane0() {
351 return $JScrollPane0;
352 }
353
354
355
356
357
358 protected void addChildrenToButtonsPanel() {
359 if (!allComponentsCreated) {
360 return;
361 }
362 buttonsPanel.add(gererTaxonsLocalTableNouveauBouton);
363 buttonsPanel.add(gererTaxonsLocalTableSupprimerBouton);
364 buttonsPanel.add(gererTaxonsLocalTableRemplacerBouton);
365 }
366
367 protected void createBroker() {
368 $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
369 }
370
371 protected void createButtonsPanel() {
372 $objectMap.put("buttonsPanel", buttonsPanel = new JPanel());
373
374 buttonsPanel.setName("buttonsPanel");
375 buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.LINE_AXIS));
376 }
377
378 protected void createGererTaxonsLocalTableNouveauBouton() {
379 $objectMap.put("gererTaxonsLocalTableNouveauBouton", gererTaxonsLocalTableNouveauBouton = new JButton());
380
381 gererTaxonsLocalTableNouveauBouton.setName("gererTaxonsLocalTableNouveauBouton");
382 gererTaxonsLocalTableNouveauBouton.setText(t("reefdb.common.new"));
383 gererTaxonsLocalTableNouveauBouton.setToolTipText(t("reefdb.common.new"));
384 gererTaxonsLocalTableNouveauBouton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__gererTaxonsLocalTableNouveauBouton"));
385 }
386
387 protected void createGererTaxonsLocalTableRemplacerBouton() {
388 $objectMap.put("gererTaxonsLocalTableRemplacerBouton", gererTaxonsLocalTableRemplacerBouton = new JButton());
389
390 gererTaxonsLocalTableRemplacerBouton.setName("gererTaxonsLocalTableRemplacerBouton");
391 gererTaxonsLocalTableRemplacerBouton.setText(t("reefdb.common.replace"));
392 gererTaxonsLocalTableRemplacerBouton.setToolTipText(t("reefdb.common.replace"));
393 gererTaxonsLocalTableRemplacerBouton.putClientProperty("applicationAction", OpenReplaceTaxonAction.class);
394 }
395
396 protected void createGererTaxonsLocalTableSupprimerBouton() {
397 $objectMap.put("gererTaxonsLocalTableSupprimerBouton", gererTaxonsLocalTableSupprimerBouton = new JButton());
398
399 gererTaxonsLocalTableSupprimerBouton.setName("gererTaxonsLocalTableSupprimerBouton");
400 gererTaxonsLocalTableSupprimerBouton.setText(t("reefdb.common.delete"));
401 gererTaxonsLocalTableSupprimerBouton.setToolTipText(t("reefdb.common.delete"));
402 gererTaxonsLocalTableSupprimerBouton.putClientProperty("applicationAction", DeleteTaxonAction.class);
403 }
404
405 protected TaxonsLocalUIHandler createHandler() {
406 return new TaxonsLocalUIHandler();
407 }
408
409 protected void createModel() {
410 $objectMap.put("model", model = getContextValue(TaxonsLocalUIModel.class));
411 }
412
413 protected void createTaxonsLocalMenuUI() {
414 $objectMap.put("taxonsLocalMenuUI", taxonsLocalMenuUI = new TaxonMenuUI(this));
415
416 taxonsLocalMenuUI.setName("taxonsLocalMenuUI");
417 }
418
419 protected void createTaxonsLocalTable() {
420 $objectMap.put("taxonsLocalTable", taxonsLocalTable = new SwingTable());
421
422 taxonsLocalTable.setName("taxonsLocalTable");
423 }
424
425
426
427
428
429 private void $completeSetup() {
430 allComponentsCreated = true;
431 if (log.isDebugEnabled()) {
432 log.debug(this);
433 }
434
435 add(taxonsLocalMenuUI, BorderLayout.LINE_START);
436 add($JPanel1, BorderLayout.CENTER);
437
438 $JPanel1.add($JScrollPane0);
439 $JPanel1.add(buttonsPanel, BorderLayout.PAGE_END);
440
441 $JScrollPane0.getViewport().add(taxonsLocalTable);
442 addChildrenToButtonsPanel();
443
444
445 JAXXUtil.applyDataBinding(this, $bindings.keySet());
446
447
448 gererTaxonsLocalTableNouveauBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
449 gererTaxonsLocalTableSupprimerBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
450 gererTaxonsLocalTableRemplacerBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
451 gererTaxonsLocalTableNouveauBouton.setIcon(SwingUtil.createActionIcon("add"));
452 gererTaxonsLocalTableSupprimerBouton.setIcon(SwingUtil.createActionIcon("delete"));
453 gererTaxonsLocalTableRemplacerBouton.setIcon(SwingUtil.createActionIcon("replace"));
454 }
455
456 private void $initialize() {
457 if (allComponentsCreated) {
458 return;
459 }
460 if (log.isDebugEnabled()) {
461 log.debug(this);
462 }
463 handler.beforeInit(this);
464 $objectMap.put("$JPanel0", $JPanel0);
465 createModel();
466 createBroker();
467 createTaxonsLocalMenuUI();
468
469 $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
470
471 $JPanel1.setName("$JPanel1");
472 $JPanel1.setLayout(new BorderLayout());
473
474 $objectMap.put("$JScrollPane0", $JScrollPane0 = new JScrollPane());
475
476 $JScrollPane0.setName("$JScrollPane0");
477 createTaxonsLocalTable();
478 createButtonsPanel();
479 createGererTaxonsLocalTableNouveauBouton();
480 createGererTaxonsLocalTableSupprimerBouton();
481 createGererTaxonsLocalTableRemplacerBouton();
482
483 setName("$JPanel0");
484 setLayout(new BorderLayout());
485
486
487 $registerDefaultBindings();
488 $completeSetup();
489 handler.afterInit(this);
490 }
491
492 private void $registerDefaultBindings() {
493
494 registerDataBinding(new DefaultJAXXBinding(this, BINDING_GERER_TAXONS_LOCAL_TABLE_SUPPRIMER_BOUTON_ENABLED, true) {
495
496 @Override
497 public void applyDataBinding() {
498 if (model != null) {
499 model.addPropertyChangeListener("selectedRows", this);
500 }
501 }
502
503 @Override
504 public void processDataBinding() {
505 if (model != null && model.getSelectedRows() != null) {
506 gererTaxonsLocalTableSupprimerBouton.setEnabled(!model.getSelectedRows().isEmpty());
507 }
508 }
509
510 @Override
511 public void removeDataBinding() {
512 if (model != null) {
513 model.removePropertyChangeListener("selectedRows", this);
514 }
515 }
516 });
517 registerDataBinding(new DefaultJAXXBinding(this, BINDING_GERER_TAXONS_LOCAL_TABLE_REMPLACER_BOUTON_ENABLED, true) {
518
519 @Override
520 public void applyDataBinding() {
521 if (model != null) {
522 model.addPropertyChangeListener("selectedRows", this);
523 }
524 }
525
526 @Override
527 public void processDataBinding() {
528 if (model != null && model.getSelectedRows() != null) {
529 gererTaxonsLocalTableRemplacerBouton.setEnabled(model.getSelectedRows().size() == 1);
530 }
531 }
532
533 @Override
534 public void removeDataBinding() {
535 if (model != null) {
536 model.removePropertyChangeListener("selectedRows", this);
537 }
538 }
539 });
540 }
541
542 }