1 package fr.ifremer.tutti.ui.swing.util.catches;
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.tutti.type.WeightUnit;
28 import fr.ifremer.tutti.ui.swing.TuttiUIContext;
29 import fr.ifremer.tutti.ui.swing.util.TuttiUI;
30 import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
31 import java.awt.BorderLayout;
32 import java.awt.Container;
33 import java.awt.Dialog;
34 import java.awt.Dialog.ModalityType;
35 import java.awt.Dimension;
36 import java.awt.Frame;
37 import java.awt.GraphicsConfiguration;
38 import java.awt.GridBagConstraints;
39 import java.awt.GridLayout;
40 import java.awt.Insets;
41 import java.awt.Window;
42 import java.util.ArrayList;
43 import java.util.HashMap;
44 import java.util.List;
45 import java.util.Map;
46 import java.util.TreeMap;
47 import javax.swing.JButton;
48 import javax.swing.JDialog;
49 import javax.swing.JPanel;
50 import jaxx.runtime.JAXXBinding;
51 import jaxx.runtime.JAXXContext;
52 import jaxx.runtime.JAXXObject;
53 import jaxx.runtime.JAXXObjectDescriptor;
54 import jaxx.runtime.JAXXUtil;
55 import jaxx.runtime.SwingUtil;
56 import jaxx.runtime.binding.DefaultJAXXBinding;
57 import jaxx.runtime.binding.SimpleJAXXObjectBinding;
58 import jaxx.runtime.context.DefaultJAXXContext;
59 import jaxx.runtime.swing.Table;
60 import org.apache.commons.logging.Log;
61 import org.apache.commons.logging.LogFactory;
62 import org.nuiton.jaxx.widgets.number.NumberEditor;
63 import static org.nuiton.i18n.I18n.t;
64
65 public class EnterWeightUI extends JDialog implements TuttiUI<TuttiUIContext, EnterWeightUIHandler>, JAXXObject {
66
67
68
69
70
71 public static final String PROPERTY_ORIGINAL_WEIGHT = "originalWeight";
72 public static final String PROPERTY_WEIGHT_LABEL = "weightLabel";
73 public static final String PROPERTY_WEIGHT_UNIT = "weightUnit";
74
75
76
77
78
79 public static final String BINDING_DIALOG_TITLE = "dialog.title";
80 public static final String BINDING_EDITOR_NUMBER_PATTERN = "editor.numberPattern";
81 public static final String BINDING_EDITOR_NUMBER_VALUE = "editor.numberValue";
82 public static final String BINDING_VALIDATE_BUTTON_ENABLED = "validateButton.enabled";
83
84
85
86
87
88 private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAKVWz28bRRSemNip7bQpjVqCWsBtQSQE1uFHJKQUaAiNSJWkUZM0FTmU8e7Enmp2dth9Wzs1QfwJ/RPgzgWJGyfEgTMHLoh/ASEOXBFvZta7/pXaKjlsvDPvfe97b977Zr/7k+SjkFx9SFstJ4wlcJ85t1fv379Te8hc+IRFbsgVBCGxfxM5kjskZS9dj4BcP9zU7tXEvboW+CqQTHZ5r2ySUgTHgkUNxgDIS70ebhRVd9PtlZaKww5qSmoY6jd//5V74n39bY6QlkJ2JUylMsory2Ryk+S4B+QCRnpEq4LKOtIIuawj37N6bU3QKNqmPvuCfEWmNklB0RDBgFwbP2WDYfxbCkjB41QEdSDvHYUOPwqZz0IHYgDuxNyJmhjciYELx6XgNljk3JLAwgPG6w3Y31DKIBWA5P3AYwLI/Okwe/p1f2MtQIQWZK7lpkHbpDUNcF7n6ejcHZt7ZnguCHmdSypseCAzme26CGgXZsli7kuOZpUBTnCsmHOQmnSlAbQmGJC5nlNL+OstbVdMzQvM41hbIItBWHdkjC/SMa5N7tUZRLjm1zDstvl3y1hr37kU4syrt3eoZGIJz12n00qi2dXecNMulS4TH2MOWEQy22NvV7Xly1nFHlHBPQos27yeWITkck+O2PNO1vNZU04cknwY4zIW5XBwTO7ilh2Qub4B0YBm999Ls7/9+McP652pmMbYF4eadg01dqsKA8VC4Dr0jB0J3YnVLapWDkkxYgIVwUz8lSHEdpNtJIfxnjedYhr5Uxo1ECI/9ftPP1/6/NfnSG6dlLB7vHWq7TdIERohViEQXkt9dNMwmm6ewed5zQ2L+oB63kFXf73QNs3v4IFny/MLJy2sypUhVUmp1Yq//DO7+/3NTmUmkOmLp5pn1cl/RgpcCi6ZUYxEDIYqRFlFLPaCbOiHyQBRCqXgrNATeMChofmbvUXzrA6rQqGRDGFueakVa7N3TQb617IFLNdM15lGHgWXBw568JbbDSo9gSOD1dzTa/NpWY1CzC+8WekrtK50P4FU2VQy3KfFngJSpDEEO4GKkXP+iIoIeZTs4O6hUGBl2kZeHFfX7ATf7eYOBdRCHMQ32n2MNPnukU8ssSeATMUR2+V1mcWawWZrmvidye7slG2ge1TE+HZRh7nTo4EGsaj977JI32STEMZsaDmsVI0qRx5Vhr/9vtySzA8kd4EsWcns6D/L9N/BgeEoeFaVHD91KdmNDVfnUrDbmhrKPpDXx8TD7CEIxB5Xe8ZvcVwewHUzP4i4rwRbNVtAtttj3m8Wq+eeWzO4q0kQ0wPDKtyjzqPqXBio8zsj8+uI+amVpq7LFKSVXhgbsb/Wb43PxVR7ikl9OeK3y+W27TM9AVtaFecXKlc/qMhYiJPBU9n5H6dyL2Ew8lz6LsFRJ6O1TdDjAI3JuRvoRys1Lj2k9OEA+oR+lsZALPtccj/2d/ljo8xfPjtUES8n/th+ply4Ya+BCupLyFFu2TNz1Mvtp1B7ZQxqk9y1HxmnYFwbi8WTpyC8hgj/AbfXi08kDAAA";
89 private static final Log log = LogFactory.getLog(EnterWeightUI.class);
90 private static final long serialVersionUID = 1L;
91
92
93
94
95
96 protected List<Object> $activeBindings = new ArrayList<Object>();
97 protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
98 protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
99 protected Map<String, Object> $objectMap = new HashMap<String, Object>();
100 protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
101 private boolean allComponentsCreated;
102 protected final JAXXContext delegateContext = new DefaultJAXXContext();
103
104
105
106
107
108 protected JButton cancelButton;
109 protected EnterWeightUI dialog = this;
110 protected NumberEditor editor;
111 protected final EnterWeightUIHandler handler = createHandler();
112 protected TuttiUIContext model;
113 protected Float originalWeight;
114 protected Table table;
115 protected JButton validateButton;
116 protected String weightLabel;
117 protected WeightUnit weightUnit;
118
119
120
121
122
123 private JPanel $JPanel0;
124
125
126
127
128
129
130 public Float openAndGetWeightValue(String weightLabel, Float originalWeight, WeightUnit weightUnit) {
131 return handler.openAndGetWeightValue(weightLabel, originalWeight, weightUnit);
132 }
133
134
135
136
137
138 public EnterWeightUI(TuttiUIContext context) {
139 super(context.getMainUI(), true);
140 TuttiUIUtil.setApplicationContext(this, context);
141 $initialize();
142 }
143
144 public EnterWeightUI(Frame param0, String param1, boolean param2, GraphicsConfiguration param3) {
145 super(param0 ,param1 ,param2 ,param3);
146 $initialize();
147 }
148
149 public EnterWeightUI(JAXXContext parentContext, Frame param1, String param2, boolean param3, GraphicsConfiguration param4) {
150 super(param1 ,param2 ,param3 ,param4);
151 JAXXUtil.initContext(this, parentContext);
152 $initialize();
153 }
154
155 public EnterWeightUI(Dialog param0) {
156 super(param0);
157 $initialize();
158 }
159
160 public EnterWeightUI(JAXXContext parentContext, Dialog param1) {
161 super(param1);
162 JAXXUtil.initContext(this, parentContext);
163 $initialize();
164 }
165
166 public EnterWeightUI(Frame param0, String param1, boolean param2) {
167 super(param0 ,param1 ,param2);
168 $initialize();
169 }
170
171 public EnterWeightUI(JAXXContext parentContext, Frame param1, String param2, boolean param3) {
172 super(param1 ,param2 ,param3);
173 JAXXUtil.initContext(this, parentContext);
174 $initialize();
175 }
176
177 public EnterWeightUI() {
178 $initialize();
179 }
180
181 public EnterWeightUI(JAXXContext parentContext) {
182 JAXXUtil.initContext(this, parentContext);
183 $initialize();
184 }
185
186 public EnterWeightUI(Frame param0) {
187 super(param0);
188 $initialize();
189 }
190
191 public EnterWeightUI(JAXXContext parentContext, Frame param1) {
192 super(param1);
193 JAXXUtil.initContext(this, parentContext);
194 $initialize();
195 }
196
197 public EnterWeightUI(Frame param0, boolean param1) {
198 super(param0 ,param1);
199 $initialize();
200 }
201
202 public EnterWeightUI(JAXXContext parentContext, Frame param1, boolean param2) {
203 super(param1 ,param2);
204 JAXXUtil.initContext(this, parentContext);
205 $initialize();
206 }
207
208 public EnterWeightUI(Frame param0, String param1) {
209 super(param0 ,param1);
210 $initialize();
211 }
212
213 public EnterWeightUI(JAXXContext parentContext, Frame param1, String param2) {
214 super(param1 ,param2);
215 JAXXUtil.initContext(this, parentContext);
216 $initialize();
217 }
218
219 public EnterWeightUI(Window param0) {
220 super(param0);
221 $initialize();
222 }
223
224 public EnterWeightUI(JAXXContext parentContext, Window param1) {
225 super(param1);
226 JAXXUtil.initContext(this, parentContext);
227 $initialize();
228 }
229
230 public EnterWeightUI(Window param0, ModalityType param1) {
231 super(param0 ,param1);
232 $initialize();
233 }
234
235 public EnterWeightUI(JAXXContext parentContext, Window param1, ModalityType param2) {
236 super(param1 ,param2);
237 JAXXUtil.initContext(this, parentContext);
238 $initialize();
239 }
240
241 public EnterWeightUI(Window param0, String param1) {
242 super(param0 ,param1);
243 $initialize();
244 }
245
246 public EnterWeightUI(JAXXContext parentContext, Window param1, String param2) {
247 super(param1 ,param2);
248 JAXXUtil.initContext(this, parentContext);
249 $initialize();
250 }
251
252 public EnterWeightUI(Window param0, String param1, ModalityType param2) {
253 super(param0 ,param1 ,param2);
254 $initialize();
255 }
256
257 public EnterWeightUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3) {
258 super(param1 ,param2 ,param3);
259 JAXXUtil.initContext(this, parentContext);
260 $initialize();
261 }
262
263 public EnterWeightUI(Window param0, String param1, ModalityType param2, GraphicsConfiguration param3) {
264 super(param0 ,param1 ,param2 ,param3);
265 $initialize();
266 }
267
268 public EnterWeightUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3, GraphicsConfiguration param4) {
269 super(param1 ,param2 ,param3 ,param4);
270 JAXXUtil.initContext(this, parentContext);
271 $initialize();
272 }
273
274 public EnterWeightUI(Dialog param0, boolean param1) {
275 super(param0 ,param1);
276 $initialize();
277 }
278
279 public EnterWeightUI(JAXXContext parentContext, Dialog param1, boolean param2) {
280 super(param1 ,param2);
281 JAXXUtil.initContext(this, parentContext);
282 $initialize();
283 }
284
285 public EnterWeightUI(Dialog param0, String param1) {
286 super(param0 ,param1);
287 $initialize();
288 }
289
290 public EnterWeightUI(JAXXContext parentContext, Dialog param1, String param2) {
291 super(param1 ,param2);
292 JAXXUtil.initContext(this, parentContext);
293 $initialize();
294 }
295
296 public EnterWeightUI(Dialog param0, String param1, boolean param2) {
297 super(param0 ,param1 ,param2);
298 $initialize();
299 }
300
301 public EnterWeightUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3) {
302 super(param1 ,param2 ,param3);
303 JAXXUtil.initContext(this, parentContext);
304 $initialize();
305 }
306
307 public EnterWeightUI(Dialog param0, String param1, boolean param2, GraphicsConfiguration param3) {
308 super(param0 ,param1 ,param2 ,param3);
309 $initialize();
310 }
311
312 public EnterWeightUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3, GraphicsConfiguration param4) {
313 super(param1 ,param2 ,param3 ,param4);
314 JAXXUtil.initContext(this, parentContext);
315 $initialize();
316 }
317
318
319
320
321
322 public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
323 return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
324 }
325
326
327
328
329
330 @Override
331 public void applyDataBinding(String $binding) {
332 if (allComponentsCreated && $bindings.containsKey($binding)) {
333 getDataBinding($binding).applyDataBinding();
334 }
335 processDataBinding($binding);
336 }
337
338 @Override
339 public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
340 super.firePropertyChange(propertyName, oldValue, newValue);
341 }
342
343 @Override
344 public Map<String, Object> get$objectMap() {
345 return $objectMap;
346 }
347
348 @Override
349 public JAXXBinding getDataBinding(String bindingId) {
350 return $bindings.get(bindingId);
351 }
352
353 @Override
354 public JAXXBinding[] getDataBindings() {
355 return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
356 }
357
358 @Override
359 public Object getObjectById(String id) {
360 return $objectMap.get(id);
361 }
362
363 @Override
364 public void processDataBinding(String $binding, boolean $force) {
365 if (!$force && $activeBindings.contains($binding)) {
366 return;
367 }
368 $activeBindings.add($binding);
369 try {
370 if (allComponentsCreated && $bindings.containsKey($binding)) {
371 getDataBinding($binding).processDataBinding();
372 }
373 } finally {
374 $activeBindings.remove($binding);
375 }
376 }
377
378 @Override
379 public void processDataBinding(String $binding) {
380 processDataBinding($binding, false);
381 }
382
383 @Override
384 public void registerDataBinding(JAXXBinding binding) {
385 $bindings.put(binding.getId(), binding);
386 }
387
388 @Override
389 public void removeDataBinding(String $binding) {
390 if (allComponentsCreated && $bindings.containsKey($binding)) {
391 getDataBinding($binding).removeDataBinding();
392 }
393 }
394
395
396
397
398
399 @Override
400 public <T> T getContextValue(Class<T> clazz) {
401 return delegateContext.getContextValue(clazz, null);
402 }
403
404 @Override
405 public <T> T getContextValue(Class<T> clazz, String name) {
406 return delegateContext.getContextValue(clazz, name);
407 }
408
409 @Override
410 public JAXXContext getDelegateContext() {
411 return delegateContext;
412 }
413
414 @Override
415 public <O extends Container> O getParentContainer(Class<O> clazz) {
416 return SwingUtil.getParentContainer(this, clazz);
417 }
418
419 @Override
420 public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
421 return SwingUtil.getParentContainer(source, clazz);
422 }
423
424 @Override
425 public <T> void removeContextValue(Class<T> clazz) {
426 delegateContext.removeContextValue(clazz, null);
427 }
428
429 @Override
430 public <T> void removeContextValue(Class<T> clazz, String name) {
431 delegateContext.removeContextValue(clazz, name);
432 }
433
434 @Override
435 public <T> void setContextValue(T o) {
436 delegateContext.setContextValue(o, null);
437 }
438
439 @Override
440 public <T> void setContextValue(T o, String name) {
441 delegateContext.setContextValue(o, name);
442 }
443
444
445
446
447
448 public JButton getCancelButton() {
449 return cancelButton;
450 }
451
452 public NumberEditor getEditor() {
453 return editor;
454 }
455
456 public EnterWeightUIHandler getHandler() {
457 return handler;
458 }
459
460 public TuttiUIContext getModel() {
461 return model;
462 }
463
464 public Float getOriginalWeight() {
465 return originalWeight;
466 }
467
468 public Table getTable() {
469 return table;
470 }
471
472 public JButton getValidateButton() {
473 return validateButton;
474 }
475
476 public String getWeightLabel() {
477 return weightLabel;
478 }
479
480 public WeightUnit getWeightUnit() {
481 return weightUnit;
482 }
483
484
485
486
487
488 public void setOriginalWeight(Float originalWeight) {
489 Float oldValue = this.originalWeight;
490 this.originalWeight = originalWeight;
491 firePropertyChange(PROPERTY_ORIGINAL_WEIGHT, oldValue, originalWeight);
492 }
493
494 public void setWeightLabel(String weightLabel) {
495 String oldValue = this.weightLabel;
496 this.weightLabel = weightLabel;
497 firePropertyChange(PROPERTY_WEIGHT_LABEL, oldValue, weightLabel);
498 }
499
500 public void setWeightUnit(WeightUnit weightUnit) {
501 WeightUnit oldValue = this.weightUnit;
502 this.weightUnit = weightUnit;
503 firePropertyChange(PROPERTY_WEIGHT_UNIT, oldValue, weightUnit);
504 }
505
506
507
508
509
510 protected JPanel get$JPanel0() {
511 return $JPanel0;
512 }
513
514
515
516
517
518 protected void addChildrenToDialog() {
519 if (!allComponentsCreated) {
520 return;
521 }
522 add(table, BorderLayout.CENTER);
523 add($JPanel0, BorderLayout.SOUTH);
524 }
525
526 protected void addChildrenToTable() {
527 if (!allComponentsCreated) {
528 return;
529 }
530 table.add(editor, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
531 }
532
533 protected void createCancelButton() {
534 $objectMap.put("cancelButton", cancelButton = new JButton());
535
536 cancelButton.setName("cancelButton");
537 cancelButton.setText(t("tutti.catches.enterWeight.action.cancel"));
538 cancelButton.setToolTipText(t("tutti.catches.enterWeight.action.cancel.tip"));
539 cancelButton.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.util.catches.actions.EnterWeightCancelAction.class);
540 }
541
542 protected void createEditor() {
543 $objectMap.put("editor", editor = new NumberEditor());
544
545 editor.setName("editor");
546 editor.setAutoPopup(false);
547 editor.setUseSign(false);
548 editor.setShowPopupButton(false);
549 editor.setShowReset(true);
550 }
551
552 protected EnterWeightUIHandler createHandler() {
553 return new EnterWeightUIHandler();
554 }
555
556 protected void createModel() {
557 $objectMap.put("model", model = getContextValue(TuttiUIContext.class));
558 }
559
560 protected void createOriginalWeight() {
561 $objectMap.put("originalWeight", originalWeight = null);
562 }
563
564 protected void createTable() {
565 $objectMap.put("table", table = new Table());
566
567 table.setName("table");
568 }
569
570 protected void createValidateButton() {
571 $objectMap.put("validateButton", validateButton = new JButton());
572
573 validateButton.setName("validateButton");
574 validateButton.setText(t("tutti.catches.enterWeight.action.validate"));
575 validateButton.setToolTipText(t("tutti.catches.enterWeight.action.validate.tip"));
576 validateButton.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.util.catches.actions.EnterWeightValidateAction.class);
577 }
578
579 protected void createWeightLabel() {
580 $objectMap.put("weightLabel", weightLabel = null);
581 }
582
583 protected void createWeightUnit() {
584 $objectMap.put("weightUnit", weightUnit = WeightUnit.KG);
585 }
586
587
588
589
590
591 private void $completeSetup() {
592 allComponentsCreated = true;
593 if (log.isDebugEnabled()) {
594 log.debug(this);
595 }
596 addChildrenToDialog();
597 addChildrenToTable();
598
599 $JPanel0.add(cancelButton);
600 $JPanel0.add(validateButton);
601
602
603 JAXXUtil.applyDataBinding(this, $bindings.keySet());
604
605
606 setMinimumSize(new Dimension(350,100));
607 editor.setNumberType(Float.class);
608 cancelButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.catches.enterWeight.action.cancel.mnemonic"),'Z'));
609 cancelButton.setIcon(SwingUtil.createActionIcon("cancel"));
610 validateButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.catches.enterWeight.action.validate.mnemonic"),'Z'));
611 validateButton.setIcon(SwingUtil.createActionIcon("accept"));
612
613 dialog.pack();
614 }
615
616 private void $initialize() {
617 if (allComponentsCreated) {
618 return;
619 }
620 if (log.isDebugEnabled()) {
621 log.debug(this);
622 }
623 handler.beforeInit(this);
624 $objectMap.put("dialog", dialog);
625 createModel();
626 createWeightLabel();
627 createOriginalWeight();
628 createWeightUnit();
629 createTable();
630 createEditor();
631
632 $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
633
634 $JPanel0.setName("$JPanel0");
635 $JPanel0.setLayout(new GridLayout(1,0));
636 createCancelButton();
637 createValidateButton();
638
639 setName("dialog");
640 dialog.getContentPane().setLayout(new BorderLayout());
641 setResizable(false);
642
643
644 $registerDefaultBindings();
645 $completeSetup();
646 handler.afterInit(this);
647 }
648
649 private void $registerDefaultBindings() {
650
651 registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_DIALOG_TITLE, true ,"weightLabel" ,"weightUnit") {
652
653 @Override
654 public void processDataBinding() {
655 setTitle(t(handler.getTitle(getWeightLabel(), getWeightUnit())));
656 }
657 });
658 registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_EDITOR_NUMBER_PATTERN, true ,"weightUnit") {
659
660 @Override
661 public void processDataBinding() {
662 if (getWeightUnit() != null) {
663 editor.setNumberPattern(getWeightUnit().getNumberEditorPattern());
664 }
665 }
666 });
667 registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_EDITOR_NUMBER_VALUE, true ,"originalWeight") {
668
669 @Override
670 public void processDataBinding() {
671 editor.setNumberValue(getOriginalWeight());
672 }
673 });
674 registerDataBinding(new DefaultJAXXBinding(this, BINDING_VALIDATE_BUTTON_ENABLED, true) {
675
676 @Override
677 public void applyDataBinding() {
678 if (editor != null) {
679 editor.addPropertyChangeListener("model", this);
680 }
681 }
682
683 @Override
684 public void processDataBinding() {
685 if (editor != null) {
686 validateButton.setEnabled(editor.getModel() != null);
687 }
688 }
689
690 @Override
691 public void removeDataBinding() {
692 if (editor != null) {
693 editor.removePropertyChangeListener("model", this);
694 }
695 }
696 });
697 }
698
699 }