View Javadoc
1   package fr.ifremer.tutti.ui.swing.content;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2017 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  import fr.ifremer.tutti.ui.swing.TuttiHelpBroker;
28  import fr.ifremer.tutti.ui.swing.TuttiScreen;
29  import fr.ifremer.tutti.ui.swing.TuttiUIContext;
30  import fr.ifremer.tutti.ui.swing.util.TuttiUI;
31  import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
32  import java.awt.BorderLayout;
33  import java.awt.Component;
34  import java.awt.Container;
35  import java.awt.GraphicsConfiguration;
36  import java.awt.event.WindowEvent;
37  import java.awt.event.WindowListener;
38  import java.util.ArrayList;
39  import java.util.HashMap;
40  import java.util.List;
41  import java.util.Map;
42  import java.util.TreeMap;
43  import javax.swing.JButton;
44  import javax.swing.JFrame;
45  import javax.swing.JLabel;
46  import javax.swing.JMenu;
47  import javax.swing.JMenuBar;
48  import javax.swing.JMenuItem;
49  import javax.swing.JSeparator;
50  import javax.swing.JToolBar;
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 jaxx.runtime.swing.BlockingLayerUI;
60  import jaxx.runtime.swing.StatusMessagePanel;
61  import jaxx.runtime.swing.help.JAXXHelpUI;
62  import jaxx.runtime.validator.swing.SwingValidatorMessageWidget;
63  import org.apache.commons.logging.Log;
64  import org.apache.commons.logging.LogFactory;
65  import org.jdesktop.swingx.JXTitledPanel;
66  import static org.nuiton.i18n.I18n.t;
67  
68  public class MainUI extends JFrame implements JAXXHelpUI<TuttiHelpBroker>, TuttiUI<TuttiUIContext, MainUIHandler>, JAXXObject {
69  
70      /*-----------------------------------------------------------------------*/
71      /*------------------ Constants for all public bindings ------------------*/
72      /*-----------------------------------------------------------------------*/
73  
74      public static final String BINDING_BUSY_BLOCK_LAYER_UI_BLOCK = "busyBlockLayerUI.block";
75      public static final String BINDING_BUSY_BLOCK_LAYER_UI_BLOCKING_COLOR = "busyBlockLayerUI.blockingColor";
76      public static final String BINDING_CALIPER_STATUS_ENABLED = "caliperStatus.enabled";
77      public static final String BINDING_CALIPER_STATUS_TEXT = "caliperStatus.text";
78      public static final String BINDING_CALIPER_STATUS_TOOL_TIP_TEXT = "caliperStatus.toolTipText";
79      public static final String BINDING_ICHTYOMETER_STATUS_ENABLED = "ichtyometerStatus.enabled";
80      public static final String BINDING_ICHTYOMETER_STATUS_TOOL_TIP_TEXT = "ichtyometerStatus.toolTipText";
81      public static final String BINDING_MENU_ACTIONS_ENABLED = "menuActions.enabled";
82      public static final String BINDING_MENU_ACTION_EDIT_CATCHES_ENABLED = "menuActionEditCatches.enabled";
83      public static final String BINDING_MENU_ACTION_EDIT_CRUISE_ENABLED = "menuActionEditCruise.enabled";
84      public static final String BINDING_MENU_ACTION_EDIT_PROGRAM_ENABLED = "menuActionEditProgram.enabled";
85      public static final String BINDING_MENU_ACTION_EDIT_PROTOCOL_ENABLED = "menuActionEditProtocol.enabled";
86      public static final String BINDING_MENU_ACTION_GENERATE_CRUISE_REPORT_ENABLED = "menuActionGenerateCruiseReport.enabled";
87      public static final String BINDING_MENU_ACTION_GENERIC_FORMAT_EXPORT_ENABLED = "menuActionGenericFormatExport.enabled";
88      public static final String BINDING_MENU_ACTION_GENERIC_FORMAT_IMPORT_ENABLED = "menuActionGenericFormatImport.enabled";
89      public static final String BINDING_MENU_ACTION_SELECT_CRUISE_ENABLED = "menuActionSelectCruise.enabled";
90      public static final String BINDING_MENU_ACTION_VALIDATE_CATCHES_ENABLED = "menuActionValidateCatches.enabled";
91      public static final String BINDING_MENU_ADMINISTRATION_ENABLED = "menuAdministration.enabled";
92      public static final String BINDING_MENU_CHANGE_LOCALE_FR_ENABLED = "menuChangeLocaleFR.enabled";
93      public static final String BINDING_MENU_CHANGE_LOCALE_UK_ENABLED = "menuChangeLocaleUK.enabled";
94      public static final String BINDING_MENU_EDIT_SAMPLE_CATEGORY_MODEL_ENABLED = "menuEditSampleCategoryModel.enabled";
95      public static final String BINDING_MENU_FILE_CONFIGURATION_ENABLED = "menuFileConfiguration.enabled";
96      public static final String BINDING_MENU_FILE_CONNECT_CALIPER_VISIBLE = "menuFileConnectCaliper.visible";
97      public static final String BINDING_MENU_FILE_CONNECT_ICHTYOMETER_VISIBLE = "menuFileConnectIchtyometer.visible";
98      public static final String BINDING_MENU_FILE_DISCONNECT_CALIPER_VISIBLE = "menuFileDisconnectCaliper.visible";
99      public static final String BINDING_MENU_FILE_DISCONNECT_ICHTYOMETER_VISIBLE = "menuFileDisconnectIchtyometer.visible";
100     public static final String BINDING_MENU_FILE_MANAGE_DB_ENABLED = "menuFileManageDb.enabled";
101     public static final String BINDING_MENU_IMPORT_TEMPORARY_REFERENTIAL_ENABLED = "menuImportTemporaryReferential.enabled";
102     public static final String BINDING_STATUS_SHOW_MEMORY_STATUS = "status.showMemoryStatus";
103 
104     /*-----------------------------------------------------------------------*/
105     /*--------------- Constants for all none public bindings  ---------------*/
106     /*-----------------------------------------------------------------------*/
107 
108     private static final String BINDING_$JSEPARATOR3_ENABLED = "$JSeparator3.enabled";
109 
110     /*-----------------------------------------------------------------------*/
111     /*------------------------- Other static fields -------------------------*/
112     /*-----------------------------------------------------------------------*/
113 
114     private static final String $jaxxObjectDescriptor = "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";
115     private static final Log log = LogFactory.getLog(MainUI.class);
116     private static final long serialVersionUID = 1L;
117 
118     /*-----------------------------------------------------------------------*/
119     /*--------------------------- Internal states ---------------------------*/
120     /*-----------------------------------------------------------------------*/
121 
122     protected List<Object> $activeBindings = new ArrayList<Object>();
123     protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
124     protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
125     protected Map<String, Object> $objectMap = new HashMap<String, Object>();
126     protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
127     private boolean allComponentsCreated;
128     protected final JAXXContext delegateContext = new DefaultJAXXContext();
129 
130     /*-----------------------------------------------------------------------*/
131     /*------------------------ Protected components  ------------------------*/
132     /*-----------------------------------------------------------------------*/
133 
134     protected JXTitledPanel body;
135     protected JToolBar bottomBar;
136     protected TuttiHelpBroker broker;
137     protected BlockingLayerUI busyBlockLayerUI;
138     protected JLabel caliperStatus;
139     protected final MainUIHandler handler = createHandler();
140     protected JLabel ichtyometerStatus;
141     protected MainUI mainFrame = this;
142     protected JMenuBar menu;
143     protected JMenuItem menuActionEditCatches;
144     protected JMenuItem menuActionEditCruise;
145     protected JMenuItem menuActionEditProgram;
146     protected JMenuItem menuActionEditProtocol;
147     protected JMenuItem menuActionGenerateCruiseReport;
148     protected JMenuItem menuActionGenericFormatExport;
149     protected JMenuItem menuActionGenericFormatImport;
150     protected JMenuItem menuActionSelectCruise;
151     protected JMenuItem menuActionValidateCatches;
152     protected JMenu menuActions;
153     protected JMenu menuAdministration;
154     protected JMenu menuChangeLocale;
155     protected JMenuItem menuChangeLocaleFR;
156     protected JMenuItem menuChangeLocaleUK;
157     protected JMenuItem menuEditSampleCategoryModel;
158     protected JMenu menuFile;
159     protected JMenuItem menuFileConfiguration;
160     protected JMenuItem menuFileConnectCaliper;
161     protected JMenuItem menuFileConnectIchtyometer;
162     protected JMenuItem menuFileDisconnectCaliper;
163     protected JMenuItem menuFileDisconnectIchtyometer;
164     protected JMenuItem menuFileExit;
165     protected JMenuItem menuFileManageDb;
166     protected JMenuItem menuFileUpdateApplication;
167     protected JMenuItem menuFileUpdateReport;
168     protected JMenu menuHelp;
169     protected JMenuItem menuHelpAbout;
170     protected JMenuItem menuHelpSite;
171     protected JMenuItem menuImportTemporaryReferential;
172     protected JMenuItem menuShowHelp;
173     protected TuttiUIContext model;
174     protected JButton showHelp;
175     protected StatusMessagePanel status;
176     protected SwingValidatorMessageWidget validatorMessageWidget;
177 
178     /*-----------------------------------------------------------------------*/
179     /*------------------------- Private components  -------------------------*/
180     /*-----------------------------------------------------------------------*/
181 
182     private JSeparator $JSeparator0;
183     private JSeparator $JSeparator1;
184     private JSeparator $JSeparator2;
185     private JSeparator $JSeparator3;
186 
187     /*-----------------------------------------------------------------------*/
188     /*---------------------------- Constructors  ----------------------------*/
189     /*-----------------------------------------------------------------------*/
190 
191     public MainUI(TuttiUIContext context) {
192         TuttiUIUtil.setApplicationContext(this, context);
193             $initialize();
194     }
195 
196     public MainUI() {
197         $initialize();
198     }
199 
200     public MainUI(JAXXContext parentContext) {
201         JAXXUtil.initContext(this, parentContext);
202         $initialize();
203     }
204 
205     public MainUI(GraphicsConfiguration param0) {
206         super(param0);
207         $initialize();
208     }
209 
210     public MainUI(JAXXContext parentContext, GraphicsConfiguration param1) {
211         super(param1);
212         JAXXUtil.initContext(this, parentContext);
213         $initialize();
214     }
215 
216     public MainUI(String param0, GraphicsConfiguration param1) {
217         super(param0 ,param1);
218         $initialize();
219     }
220 
221     public MainUI(JAXXContext parentContext, String param1, GraphicsConfiguration param2) {
222         super(param1 ,param2);
223         JAXXUtil.initContext(this, parentContext);
224         $initialize();
225     }
226 
227     public MainUI(String param0) {
228         super(param0);
229         $initialize();
230     }
231 
232     public MainUI(JAXXContext parentContext, String param1) {
233         super(param1);
234         JAXXUtil.initContext(this, parentContext);
235         $initialize();
236     }
237 
238     /*-----------------------------------------------------------------------*/
239     /*--------------------------- Statics methods ---------------------------*/
240     /*-----------------------------------------------------------------------*/
241 
242     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
243         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
244     }
245 
246     /*-----------------------------------------------------------------------*/
247     /*---------------------- JAXXObject implementation ----------------------*/
248     /*-----------------------------------------------------------------------*/
249 
250     @Override
251     public void applyDataBinding(String $binding) {
252         if (allComponentsCreated && $bindings.containsKey($binding)) {
253             getDataBinding($binding).applyDataBinding();
254         }
255         processDataBinding($binding);
256     }
257 
258     @Override
259     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
260         super.firePropertyChange(propertyName, oldValue, newValue);
261     }
262 
263     @Override
264     public Map<String, Object> get$objectMap() {
265         return $objectMap;
266     }
267 
268     @Override
269     public JAXXBinding getDataBinding(String bindingId) {
270         return $bindings.get(bindingId);
271     }
272 
273     @Override
274     public JAXXBinding[] getDataBindings() {
275         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
276     }
277 
278     @Override
279     public Object getObjectById(String id) {
280         return $objectMap.get(id);
281     }
282 
283     @Override
284     public void processDataBinding(String $binding, boolean $force) {
285         if (!$force && $activeBindings.contains($binding)) { 
286             return;
287         }
288         $activeBindings.add($binding);
289         try {
290             if (allComponentsCreated && $bindings.containsKey($binding)) {
291                 getDataBinding($binding).processDataBinding();
292             }
293         } finally {
294             $activeBindings.remove($binding);
295         }
296     }
297 
298     @Override
299     public void processDataBinding(String $binding) {
300         processDataBinding($binding, false);
301     }
302 
303     @Override
304     public void registerDataBinding(JAXXBinding binding) {
305         $bindings.put(binding.getId(), binding);
306     }
307 
308     @Override
309     public void removeDataBinding(String $binding) {
310         if (allComponentsCreated && $bindings.containsKey($binding)) {
311             getDataBinding($binding).removeDataBinding();
312         }
313     }
314 
315     /*-----------------------------------------------------------------------*/
316     /*--------------------- JAXXContext implementation  ---------------------*/
317     /*-----------------------------------------------------------------------*/
318 
319     @Override
320     public <T> T getContextValue(Class<T> clazz) {
321         return delegateContext.getContextValue(clazz, null);
322     }
323 
324     @Override
325     public <T> T getContextValue(Class<T> clazz, String name) {
326         return delegateContext.getContextValue(clazz, name);
327     }
328 
329     @Override
330     public JAXXContext getDelegateContext() {
331         return delegateContext;
332     }
333 
334     @Override
335     public <O extends Container> O getParentContainer(Class<O> clazz) {
336         return SwingUtil.getParentContainer(this, clazz);
337     }
338 
339     @Override
340     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
341         return SwingUtil.getParentContainer(source, clazz);
342     }
343 
344     @Override
345     public <T> void removeContextValue(Class<T> clazz) {
346         delegateContext.removeContextValue(clazz, null);
347     }
348 
349     @Override
350     public <T> void removeContextValue(Class<T> clazz, String name) {
351         delegateContext.removeContextValue(clazz, name);
352     }
353 
354     @Override
355     public <T> void setContextValue(T o) {
356         delegateContext.setContextValue(o, null);
357     }
358 
359     @Override
360     public <T> void setContextValue(T o, String name) {
361         delegateContext.setContextValue(o, name);
362     }
363 
364     /*-----------------------------------------------------------------------*/
365     /*---------------------------- Event methods ----------------------------*/
366     /*-----------------------------------------------------------------------*/
367 
368     public void doWindowClosing__on__mainFrame(WindowEvent event) {
369         if (log.isDebugEnabled()) {
370             log.debug(event);
371         }
372         menuFileExit.getAction().actionPerformed(null);
373     }
374 
375     /*-----------------------------------------------------------------------*/
376     /*----------------------- Public acessor methods  -----------------------*/
377     /*-----------------------------------------------------------------------*/
378 
379     public JXTitledPanel getBody() {
380         return body;
381     }
382 
383     public JToolBar getBottomBar() {
384         return bottomBar;
385     }
386 
387     public TuttiHelpBroker getBroker() {
388         return broker;
389     }
390 
391     public BlockingLayerUI getBusyBlockLayerUI() {
392         return busyBlockLayerUI;
393     }
394 
395     public JLabel getCaliperStatus() {
396         return caliperStatus;
397     }
398 
399     public MainUIHandler getHandler() {
400         return handler;
401     }
402 
403     public JLabel getIchtyometerStatus() {
404         return ichtyometerStatus;
405     }
406 
407     public JMenuBar getMenu() {
408         return menu;
409     }
410 
411     public JMenuItem getMenuActionEditCatches() {
412         return menuActionEditCatches;
413     }
414 
415     public JMenuItem getMenuActionEditCruise() {
416         return menuActionEditCruise;
417     }
418 
419     public JMenuItem getMenuActionEditProgram() {
420         return menuActionEditProgram;
421     }
422 
423     public JMenuItem getMenuActionEditProtocol() {
424         return menuActionEditProtocol;
425     }
426 
427     public JMenuItem getMenuActionGenerateCruiseReport() {
428         return menuActionGenerateCruiseReport;
429     }
430 
431     public JMenuItem getMenuActionGenericFormatExport() {
432         return menuActionGenericFormatExport;
433     }
434 
435     public JMenuItem getMenuActionGenericFormatImport() {
436         return menuActionGenericFormatImport;
437     }
438 
439     public JMenuItem getMenuActionSelectCruise() {
440         return menuActionSelectCruise;
441     }
442 
443     public JMenuItem getMenuActionValidateCatches() {
444         return menuActionValidateCatches;
445     }
446 
447     public JMenu getMenuActions() {
448         return menuActions;
449     }
450 
451     public JMenu getMenuAdministration() {
452         return menuAdministration;
453     }
454 
455     public JMenu getMenuChangeLocale() {
456         return menuChangeLocale;
457     }
458 
459     public JMenuItem getMenuChangeLocaleFR() {
460         return menuChangeLocaleFR;
461     }
462 
463     public JMenuItem getMenuChangeLocaleUK() {
464         return menuChangeLocaleUK;
465     }
466 
467     public JMenuItem getMenuEditSampleCategoryModel() {
468         return menuEditSampleCategoryModel;
469     }
470 
471     public JMenu getMenuFile() {
472         return menuFile;
473     }
474 
475     public JMenuItem getMenuFileConfiguration() {
476         return menuFileConfiguration;
477     }
478 
479     public JMenuItem getMenuFileConnectCaliper() {
480         return menuFileConnectCaliper;
481     }
482 
483     public JMenuItem getMenuFileConnectIchtyometer() {
484         return menuFileConnectIchtyometer;
485     }
486 
487     public JMenuItem getMenuFileDisconnectCaliper() {
488         return menuFileDisconnectCaliper;
489     }
490 
491     public JMenuItem getMenuFileDisconnectIchtyometer() {
492         return menuFileDisconnectIchtyometer;
493     }
494 
495     public JMenuItem getMenuFileExit() {
496         return menuFileExit;
497     }
498 
499     public JMenuItem getMenuFileManageDb() {
500         return menuFileManageDb;
501     }
502 
503     public JMenuItem getMenuFileUpdateApplication() {
504         return menuFileUpdateApplication;
505     }
506 
507     public JMenuItem getMenuFileUpdateReport() {
508         return menuFileUpdateReport;
509     }
510 
511     public JMenu getMenuHelp() {
512         return menuHelp;
513     }
514 
515     public JMenuItem getMenuHelpAbout() {
516         return menuHelpAbout;
517     }
518 
519     public JMenuItem getMenuHelpSite() {
520         return menuHelpSite;
521     }
522 
523     public JMenuItem getMenuImportTemporaryReferential() {
524         return menuImportTemporaryReferential;
525     }
526 
527     public JMenuItem getMenuShowHelp() {
528         return menuShowHelp;
529     }
530 
531     public TuttiUIContext getModel() {
532         return model;
533     }
534 
535     public JButton getShowHelp() {
536         return showHelp;
537     }
538 
539     public StatusMessagePanel getStatus() {
540         return status;
541     }
542 
543     public SwingValidatorMessageWidget getValidatorMessageWidget() {
544         return validatorMessageWidget;
545     }
546 
547     /*-----------------------------------------------------------------------*/
548     /*---------------------------- Other methods ----------------------------*/
549     /*-----------------------------------------------------------------------*/
550 
551     @Override
552     public void registerHelpId(TuttiHelpBroker broker, Component component, String helpId) {
553         broker.installUI(component, helpId);
554     }
555 
556     @Override
557     public void showHelp(String helpId) {
558         getBroker().showHelp(this, helpId);
559     }
560 
561     /*-----------------------------------------------------------------------*/
562     /*--------------------- Protected acessors methods  ---------------------*/
563     /*-----------------------------------------------------------------------*/
564 
565     protected JSeparator get$JSeparator0() {
566         return $JSeparator0;
567     }
568 
569     protected JSeparator get$JSeparator1() {
570         return $JSeparator1;
571     }
572 
573     protected JSeparator get$JSeparator2() {
574         return $JSeparator2;
575     }
576 
577     protected JSeparator get$JSeparator3() {
578         return $JSeparator3;
579     }
580 
581     /*-----------------------------------------------------------------------*/
582     /*--------------------- Components creation methods ---------------------*/
583     /*-----------------------------------------------------------------------*/
584 
585     protected void addChildrenToBottomBar() {
586         if (!allComponentsCreated) {
587             return;
588         }
589         bottomBar.add(ichtyometerStatus);
590         bottomBar.add(caliperStatus);
591         bottomBar.add(validatorMessageWidget);
592     }
593 
594     protected void addChildrenToMainFrame() {
595         if (!allComponentsCreated) {
596             return;
597         }
598         add(bottomBar);
599         add(showHelp);
600         add(SwingUtil.boxComponentWithJxLayer(body), BorderLayout.CENTER);
601         add(status, BorderLayout.SOUTH);
602         mainFrame.setJMenuBar(menu);
603     }
604 
605     protected void addChildrenToMenu() {
606         if (!allComponentsCreated) {
607             return;
608         }
609         menu.add(menuFile);
610         menu.add(menuActions);
611         menu.add(menuAdministration);
612         menu.add(menuHelp);
613     }
614 
615     protected void addChildrenToMenuActions() {
616         if (!allComponentsCreated) {
617             return;
618         }
619         menuActions.add(menuActionSelectCruise);
620         menuActions.add(menuActionEditProgram);
621         menuActions.add(menuActionEditCruise);
622         menuActions.add(menuActionEditProtocol);
623         menuActions.add(menuActionEditCatches);
624         menuActions.add(menuActionValidateCatches);
625         menuActions.add(menuActionGenerateCruiseReport);
626         menuActions.add($JSeparator3);
627         menuActions.add(menuActionGenericFormatExport);
628         menuActions.add(menuActionGenericFormatImport);
629     }
630 
631     protected void addChildrenToMenuAdministration() {
632         if (!allComponentsCreated) {
633             return;
634         }
635         menuAdministration.add(menuImportTemporaryReferential);
636         menuAdministration.add(menuEditSampleCategoryModel);
637     }
638 
639     protected void addChildrenToMenuChangeLocale() {
640         if (!allComponentsCreated) {
641             return;
642         }
643         menuChangeLocale.add(menuChangeLocaleUK);
644         menuChangeLocale.add(menuChangeLocaleFR);
645     }
646 
647     protected void addChildrenToMenuFile() {
648         if (!allComponentsCreated) {
649             return;
650         }
651         menuFile.add(menuFileConfiguration);
652         menuFile.add(menuFileUpdateApplication);
653         menuFile.add(menuFileUpdateReport);
654         menuFile.add($JSeparator0);
655         menuFile.add(menuFileConnectIchtyometer);
656         menuFile.add(menuFileDisconnectIchtyometer);
657         menuFile.add(menuFileConnectCaliper);
658         menuFile.add(menuFileDisconnectCaliper);
659         menuFile.add($JSeparator1);
660         menuFile.add(menuFileManageDb);
661         menuFile.add($JSeparator2);
662         menuFile.add(menuFileExit);
663     }
664 
665     protected void addChildrenToMenuHelp() {
666         if (!allComponentsCreated) {
667             return;
668         }
669         menuHelp.add(menuShowHelp);
670         menuHelp.add(menuHelpSite);
671         menuHelp.add(menuHelpAbout);
672         menuHelp.add(menuChangeLocale);
673     }
674 
675     protected void createBody() {
676         $objectMap.put("body", body = new JXTitledPanel());
677         
678         body.setName("body");
679         body.putClientProperty("help", "tutti.main.help");
680     }
681 
682     protected void createBottomBar() {
683         $objectMap.put("bottomBar", bottomBar = new JToolBar());
684         
685         bottomBar.setName("bottomBar");
686         bottomBar.setBorderPainted(false);
687         bottomBar.setFloatable(false);
688     }
689 
690     protected void createBroker() {
691         $objectMap.put("broker", broker = new TuttiHelpBroker("tutti.main.help"));
692     }
693 
694     protected void createBusyBlockLayerUI() {
695         $objectMap.put("busyBlockLayerUI", busyBlockLayerUI = new BlockingLayerUI());
696         
697         busyBlockLayerUI.setUseIcon(false);
698     }
699 
700     protected void createCaliperStatus() {
701         $objectMap.put("caliperStatus", caliperStatus = new JLabel());
702         
703         caliperStatus.setName("caliperStatus");
704         caliperStatus.putClientProperty("help", "tutti.main.status.caliper.help");
705     }
706 
707     protected MainUIHandler createHandler() {
708         return new MainUIHandler();
709     }
710 
711     protected void createIchtyometerStatus() {
712         $objectMap.put("ichtyometerStatus", ichtyometerStatus = new JLabel());
713         
714         ichtyometerStatus.setName("ichtyometerStatus");
715         ichtyometerStatus.putClientProperty("help", "tutti.main.status.ichtyometer.help");
716     }
717 
718     protected void createMenu() {
719         $objectMap.put("menu", menu = new JMenuBar());
720         
721         menu.setName("menu");
722     }
723 
724     protected void createMenuActionEditCatches() {
725         $objectMap.put("menuActionEditCatches", menuActionEditCatches = new JMenuItem());
726         
727         menuActionEditCatches.setName("menuActionEditCatches");
728         menuActionEditCatches.setText(t("tutti.main.action.editCatches"));
729         menuActionEditCatches.setToolTipText(t("tutti.main.action.editCatches.tip"));
730         menuActionEditCatches.putClientProperty("help", "tutti.main.menu.action.editCatches.help");
731         menuActionEditCatches.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.EditCatchesForSelectedCruiseAction.class);
732     }
733 
734     protected void createMenuActionEditCruise() {
735         $objectMap.put("menuActionEditCruise", menuActionEditCruise = new JMenuItem());
736         
737         menuActionEditCruise.setName("menuActionEditCruise");
738         menuActionEditCruise.setText(t("tutti.main.action.editSelectedCruise"));
739         menuActionEditCruise.setToolTipText(t("tutti.main.action.editSelectedCruise.tip"));
740         menuActionEditCruise.putClientProperty("help", "tutti.main.menu.action.editCruise.help");
741         menuActionEditCruise.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.EditSelectedCruiseAction.class);
742     }
743 
744     protected void createMenuActionEditProgram() {
745         $objectMap.put("menuActionEditProgram", menuActionEditProgram = new JMenuItem());
746         
747         menuActionEditProgram.setName("menuActionEditProgram");
748         menuActionEditProgram.setText(t("tutti.main.action.editSelectedProgram"));
749         menuActionEditProgram.setToolTipText(t("tutti.main.action.editProgram.tip"));
750         menuActionEditProgram.putClientProperty("help", "tutti.main.menu.action.editProgram.help");
751         menuActionEditProgram.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.EditSelectedProgramAction.class);
752     }
753 
754     protected void createMenuActionEditProtocol() {
755         $objectMap.put("menuActionEditProtocol", menuActionEditProtocol = new JMenuItem());
756         
757         menuActionEditProtocol.setName("menuActionEditProtocol");
758         menuActionEditProtocol.setText(t("tutti.main.action.editSelectedProtocol"));
759         menuActionEditProtocol.setToolTipText(t("tutti.main.action.editSelectedProtocol.tip"));
760         menuActionEditProtocol.putClientProperty("help", "tutti.main.menu.action.editProtocol.help");
761         menuActionEditProtocol.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.EditSelectedProtocolAction.class);
762     }
763 
764     protected void createMenuActionGenerateCruiseReport() {
765         $objectMap.put("menuActionGenerateCruiseReport", menuActionGenerateCruiseReport = new JMenuItem());
766         
767         menuActionGenerateCruiseReport.setName("menuActionGenerateCruiseReport");
768         menuActionGenerateCruiseReport.setText(t("tutti.main.action.generateSelectedCruiseReport"));
769         menuActionGenerateCruiseReport.setToolTipText(t("tutti.main.action.generateSelectedCruiseReport.tip"));
770         menuActionGenerateCruiseReport.putClientProperty("help", "tutti.main.menu.action.generateSelectedCruiseReport.help");
771         menuActionGenerateCruiseReport.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenReportScreenAction.class);
772     }
773 
774     protected void createMenuActionGenericFormatExport() {
775         $objectMap.put("menuActionGenericFormatExport", menuActionGenericFormatExport = new JMenuItem());
776         
777         menuActionGenericFormatExport.setName("menuActionGenericFormatExport");
778         menuActionGenericFormatExport.setText(t("tutti.main.action.genericFormatExport"));
779         menuActionGenericFormatExport.setToolTipText(t("tutti.main.action.genericFormatExport.tip"));
780         menuActionGenericFormatExport.putClientProperty("help", "tutti.main.menu.action.genericFormatExport.help");
781         menuActionGenericFormatExport.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenGenericFormatExportScreen.class);
782     }
783 
784     protected void createMenuActionGenericFormatImport() {
785         $objectMap.put("menuActionGenericFormatImport", menuActionGenericFormatImport = new JMenuItem());
786         
787         menuActionGenericFormatImport.setName("menuActionGenericFormatImport");
788         menuActionGenericFormatImport.setText(t("tutti.main.action.genericFormatImport"));
789         menuActionGenericFormatImport.setToolTipText(t("tutti.main.action.genericFormatImport.tip"));
790         menuActionGenericFormatImport.putClientProperty("help", "tutti.main.menu.action.genericFormatImport.help");
791         menuActionGenericFormatImport.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenGenericFormatImportScreen.class);
792     }
793 
794     protected void createMenuActionSelectCruise() {
795         $objectMap.put("menuActionSelectCruise", menuActionSelectCruise = new JMenuItem());
796         
797         menuActionSelectCruise.setName("menuActionSelectCruise");
798         menuActionSelectCruise.setText(t("tutti.main.action.selectCruise"));
799         menuActionSelectCruise.setToolTipText(t("tutti.main.action.selectCruise.tip"));
800         menuActionSelectCruise.putClientProperty("help", "tutti.main.menu.action.selectCruise.help");
801         menuActionSelectCruise.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenHomeScreenAction.class);
802     }
803 
804     protected void createMenuActionValidateCatches() {
805         $objectMap.put("menuActionValidateCatches", menuActionValidateCatches = new JMenuItem());
806         
807         menuActionValidateCatches.setName("menuActionValidateCatches");
808         menuActionValidateCatches.setText(t("tutti.main.action.validateCatches"));
809         menuActionValidateCatches.setToolTipText(t("tutti.main.action.validateCatches.tip"));
810         menuActionValidateCatches.putClientProperty("help", "tutti.main.menu.action.validateCatches.help");
811         menuActionValidateCatches.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ValidateSelectedCruiseAction.class);
812     }
813 
814     protected void createMenuActions() {
815         $objectMap.put("menuActions", menuActions = new JMenu());
816         
817         menuActions.setName("menuActions");
818         menuActions.setText(t("tutti.main.menu.actions"));
819         menuActions.setToolTipText(t("tutti.main.menu.actions.tip"));
820         menuActions.putClientProperty("skipAction", true);
821     }
822 
823     protected void createMenuAdministration() {
824         $objectMap.put("menuAdministration", menuAdministration = new JMenu());
825         
826         menuAdministration.setName("menuAdministration");
827         menuAdministration.setText(t("tutti.main.menu.administration"));
828         menuAdministration.setToolTipText(t("tutti.main.menu.administration.tip"));
829         menuAdministration.putClientProperty("skipAction", true);
830     }
831 
832     protected void createMenuChangeLocale() {
833         $objectMap.put("menuChangeLocale", menuChangeLocale = new JMenu());
834         
835         menuChangeLocale.setName("menuChangeLocale");
836         menuChangeLocale.setText(t("tutti.main.menu.changeLocale"));
837         menuChangeLocale.setToolTipText(t("tutti.main.action.changeLocale.tip"));
838         menuChangeLocale.putClientProperty("help", "tutti.main.menu.action.changeLocale.help");
839         menuChangeLocale.putClientProperty("skipAction", true);
840     }
841 
842     protected void createMenuChangeLocaleFR() {
843         $objectMap.put("menuChangeLocaleFR", menuChangeLocaleFR = new JMenuItem());
844         
845         menuChangeLocaleFR.setName("menuChangeLocaleFR");
846         menuChangeLocaleFR.setText(t("tutti.main.action.changeLocaleFR"));
847         menuChangeLocaleFR.setToolTipText(t("tutti.main.action.changeLocaleFR.tip"));
848         menuChangeLocaleFR.putClientProperty("help", "tutti.main.menu.action.changeLocaleFR.help");
849         menuChangeLocaleFR.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ChangeToLocaleFRAction.class);
850     }
851 
852     protected void createMenuChangeLocaleUK() {
853         $objectMap.put("menuChangeLocaleUK", menuChangeLocaleUK = new JMenuItem());
854         
855         menuChangeLocaleUK.setName("menuChangeLocaleUK");
856         menuChangeLocaleUK.setText(t("tutti.main.action.changeLocaleUK"));
857         menuChangeLocaleUK.setToolTipText(t("tutti.main.action.changeLocaleUK.tip"));
858         menuChangeLocaleUK.putClientProperty("help", "tutti.main.menu.action.changeLocaleUK.help");
859         menuChangeLocaleUK.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ChangeToLocaleUKAction.class);
860     }
861 
862     protected void createMenuEditSampleCategoryModel() {
863         $objectMap.put("menuEditSampleCategoryModel", menuEditSampleCategoryModel = new JMenuItem());
864         
865         menuEditSampleCategoryModel.setName("menuEditSampleCategoryModel");
866         menuEditSampleCategoryModel.setText(t("tutti.main.action.editSampleCategoryModel"));
867         menuEditSampleCategoryModel.setToolTipText(t("tutti.main.action.editSampleCategoryModel.tip"));
868         menuEditSampleCategoryModel.putClientProperty("help", "tutti.main.menu.action.editSampleCategoryModel.help");
869         menuEditSampleCategoryModel.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenSampleCategoryModelScreenAction.class);
870     }
871 
872     protected void createMenuFile() {
873         $objectMap.put("menuFile", menuFile = new JMenu());
874         
875         menuFile.setName("menuFile");
876         menuFile.setText(t("tutti.main.menu.file"));
877         menuFile.setToolTipText(t("tutti.main.menu.file.tip"));
878         menuFile.putClientProperty("skipAction", true);
879     }
880 
881     protected void createMenuFileConfiguration() {
882         $objectMap.put("menuFileConfiguration", menuFileConfiguration = new JMenuItem());
883         
884         menuFileConfiguration.setName("menuFileConfiguration");
885         menuFileConfiguration.setText(t("tutti.main.action.configuration"));
886         menuFileConfiguration.setToolTipText(t("tutti.main.action.configuration.tip"));
887         menuFileConfiguration.putClientProperty("help", "tutti.main.menu.action.configuration.help");
888         menuFileConfiguration.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ShowConfigAction.class);
889     }
890 
891     protected void createMenuFileConnectCaliper() {
892         $objectMap.put("menuFileConnectCaliper", menuFileConnectCaliper = new JMenuItem());
893         
894         menuFileConnectCaliper.setName("menuFileConnectCaliper");
895         menuFileConnectCaliper.setText(t("tutti.main.action.connectCaliper"));
896         menuFileConnectCaliper.setToolTipText(t("tutti.main.action.connectCaliper.tip"));
897         menuFileConnectCaliper.putClientProperty("help", "tutti.main.menu.action.connectCaliper.help");
898         menuFileConnectCaliper.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ConnectCaliperAction.class);
899     }
900 
901     protected void createMenuFileConnectIchtyometer() {
902         $objectMap.put("menuFileConnectIchtyometer", menuFileConnectIchtyometer = new JMenuItem());
903         
904         menuFileConnectIchtyometer.setName("menuFileConnectIchtyometer");
905         menuFileConnectIchtyometer.setText(t("tutti.main.action.connectIchtyometer"));
906         menuFileConnectIchtyometer.setToolTipText(t("tutti.main.action.connectIchtyometer.tip"));
907         menuFileConnectIchtyometer.putClientProperty("help", "tutti.main.menu.action.connectIchtyometer.help");
908         menuFileConnectIchtyometer.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ConnectIchtyometerAction.class);
909     }
910 
911     protected void createMenuFileDisconnectCaliper() {
912         $objectMap.put("menuFileDisconnectCaliper", menuFileDisconnectCaliper = new JMenuItem());
913         
914         menuFileDisconnectCaliper.setName("menuFileDisconnectCaliper");
915         menuFileDisconnectCaliper.setText(t("tutti.main.action.disconnectCaliper"));
916         menuFileDisconnectCaliper.setToolTipText(t("tutti.main.action.disconnectCaliper.tip"));
917         menuFileDisconnectCaliper.putClientProperty("help", "tutti.main.menu.action.disconnectCaliper.help");
918         menuFileDisconnectCaliper.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.DisconnectCaliperAction.class);
919     }
920 
921     protected void createMenuFileDisconnectIchtyometer() {
922         $objectMap.put("menuFileDisconnectIchtyometer", menuFileDisconnectIchtyometer = new JMenuItem());
923         
924         menuFileDisconnectIchtyometer.setName("menuFileDisconnectIchtyometer");
925         menuFileDisconnectIchtyometer.setText(t("tutti.main.action.disconnectIchtyometer"));
926         menuFileDisconnectIchtyometer.setToolTipText(t("tutti.main.action.disconnectIchtyometer.tip"));
927         menuFileDisconnectIchtyometer.putClientProperty("help", "tutti.main.menu.action.disconnectIchtyometer.help");
928         menuFileDisconnectIchtyometer.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.DisconnectIchtyometerAction.class);
929     }
930 
931     protected void createMenuFileExit() {
932         $objectMap.put("menuFileExit", menuFileExit = new JMenuItem());
933         
934         menuFileExit.setName("menuFileExit");
935         menuFileExit.setText(t("tutti.main.action.exit"));
936         menuFileExit.setToolTipText(t("tutti.main.action.exit.tip"));
937         menuFileExit.putClientProperty("help", "tutti.main.menu.action.exit.help");
938         menuFileExit.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.CloseApplicationAction.class);
939     }
940 
941     protected void createMenuFileManageDb() {
942         $objectMap.put("menuFileManageDb", menuFileManageDb = new JMenuItem());
943         
944         menuFileManageDb.setName("menuFileManageDb");
945         menuFileManageDb.setText(t("tutti.main.action.manageDb"));
946         menuFileManageDb.setToolTipText(t("tutti.main.action.manageDb.tip"));
947         menuFileManageDb.putClientProperty("help", "tutti.main.menu.action.manageDb.help");
948         menuFileManageDb.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenDbScreenAction.class);
949     }
950 
951     protected void createMenuFileUpdateApplication() {
952         $objectMap.put("menuFileUpdateApplication", menuFileUpdateApplication = new JMenuItem());
953         
954         menuFileUpdateApplication.setName("menuFileUpdateApplication");
955         menuFileUpdateApplication.setText(t("tutti.main.action.updateApplication"));
956         menuFileUpdateApplication.setToolTipText(t("tutti.main.action.updateApplication.tip"));
957         menuFileUpdateApplication.putClientProperty("help", "tutti.main.menu.action.updateApplication.help");
958         menuFileUpdateApplication.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.update.actions.UpdateApplicationAction.class);
959     }
960 
961     protected void createMenuFileUpdateReport() {
962         $objectMap.put("menuFileUpdateReport", menuFileUpdateReport = new JMenuItem());
963         
964         menuFileUpdateReport.setName("menuFileUpdateReport");
965         menuFileUpdateReport.setText(t("tutti.main.action.updateReport"));
966         menuFileUpdateReport.setToolTipText(t("tutti.main.action.updateReport.tip"));
967         menuFileUpdateReport.putClientProperty("help", "tutti.main.menu.action.updateReport.help");
968         menuFileUpdateReport.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.update.actions.UpdateReportAction.class);
969     }
970 
971     protected void createMenuHelp() {
972         $objectMap.put("menuHelp", menuHelp = new JMenu());
973         
974         menuHelp.setName("menuHelp");
975         menuHelp.setText(t("tutti.main.menu.help"));
976         menuHelp.setToolTipText(t("tutti.main.menu.help.tip"));
977         menuHelp.putClientProperty("skipAction", true);
978     }
979 
980     protected void createMenuHelpAbout() {
981         $objectMap.put("menuHelpAbout", menuHelpAbout = new JMenuItem());
982         
983         menuHelpAbout.setName("menuHelpAbout");
984         menuHelpAbout.setText(t("tutti.main.action.about"));
985         menuHelpAbout.setToolTipText(t("tutti.main.action.about.tip"));
986         menuHelpAbout.putClientProperty("help", "tutti.main.menu.action.about.help");
987         menuHelpAbout.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.ShowAboutAction.class);
988     }
989 
990     protected void createMenuHelpSite() {
991         $objectMap.put("menuHelpSite", menuHelpSite = new JMenuItem());
992         
993         menuHelpSite.setName("menuHelpSite");
994         menuHelpSite.setText(t("tutti.main.action.site"));
995         menuHelpSite.setToolTipText(t("tutti.main.action.site.tip"));
996         menuHelpSite.putClientProperty("help", "tutti.main.menu.action.site.help");
997         menuHelpSite.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.content.actions.GotoSiteAction.class);
998     }
999 
1000     protected void createMenuImportTemporaryReferential() {
1001         $objectMap.put("menuImportTemporaryReferential", menuImportTemporaryReferential = new JMenuItem());
1002         
1003         menuImportTemporaryReferential.setName("menuImportTemporaryReferential");
1004         menuImportTemporaryReferential.setText(t("tutti.main.action.importTemporaryReferential"));
1005         menuImportTemporaryReferential.setToolTipText(t("tutti.main.action.importTemporaryReferential.tip"));
1006         menuImportTemporaryReferential.putClientProperty("help", "tutti.main.menu.action.importTemporaryReferential.help");
1007         menuImportTemporaryReferential.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.actions.OpenTemporaryReferentialScreenAction.class);
1008     }
1009 
1010     protected void createMenuShowHelp() {
1011         $objectMap.put("menuShowHelp", menuShowHelp = new JMenuItem());
1012         
1013         menuShowHelp.setName("menuShowHelp");
1014         menuShowHelp.setText(t("tutti.main.action.showHelp"));
1015         menuShowHelp.setToolTipText(t("tutti.main.action.showHelp.tip"));
1016         menuShowHelp.putClientProperty("help", "tutti.index.help");
1017         menuShowHelp.putClientProperty("simpleAction", fr.ifremer.tutti.ui.swing.content.actions.ShowHelpAction.class);
1018     }
1019 
1020     protected void createModel() {
1021         $objectMap.put("model", model = getContextValue(TuttiUIContext.class));
1022     }
1023 
1024     protected void createShowHelp() {
1025         $objectMap.put("showHelp", showHelp = new JButton());
1026         
1027         showHelp.setName("showHelp");
1028         showHelp.setFocusable(false);
1029         showHelp.setToolTipText(t("tutti.main.action.showHelp.tip"));
1030         showHelp.putClientProperty("help", "tutti.main.menu.action.showHelp.help");
1031         showHelp.putClientProperty("skipAction", true);
1032     }
1033 
1034     protected void createStatus() {
1035         $objectMap.put("status", status = new StatusMessagePanel());
1036         
1037         status.setName("status");
1038     }
1039 
1040     protected void createValidatorMessageWidget() {
1041         $objectMap.put("validatorMessageWidget", validatorMessageWidget = new SwingValidatorMessageWidget());
1042         
1043         validatorMessageWidget.setName("validatorMessageWidget");
1044         validatorMessageWidget.setFocusPainted(false);
1045         validatorMessageWidget.putClientProperty("help", "tutti.main.status.validation.help");
1046         validatorMessageWidget.putClientProperty("skipAction", true);
1047     }
1048 
1049     /*-----------------------------------------------------------------------*/
1050     /*------------------------ Internal jaxx methods ------------------------*/
1051     /*-----------------------------------------------------------------------*/
1052 
1053     private void $completeSetup() {
1054         allComponentsCreated = true;
1055         if (log.isDebugEnabled()) {
1056             log.debug(this);
1057         }
1058         addChildrenToMainFrame();
1059         addChildrenToMenu();
1060         addChildrenToMenuFile();
1061         addChildrenToMenuActions();
1062         addChildrenToMenuAdministration();
1063         addChildrenToMenuHelp();
1064         addChildrenToMenuChangeLocale();
1065         addChildrenToBottomBar();
1066         
1067         // apply 30 data bindings
1068         JAXXUtil.applyDataBinding(this, $bindings.keySet());
1069         
1070         // apply 64 property setters
1071         setIconImage(SwingUtil.createImageIcon("allegro_32.png").getImage());
1072         setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
1073         menuFile.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.menu.file.mnemonic"),'Z'));
1074         menuFileConfiguration.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.configuration.mnemonic"),'Z'));
1075         menuFileConfiguration.setIcon(SwingUtil.createActionIcon("config"));
1076         menuFileUpdateApplication.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.updateApplication.mnemonic"),'Z'));
1077         menuFileUpdateApplication.setIcon(SwingUtil.createActionIcon("update-application"));
1078         menuFileUpdateReport.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.updateReport.mnemonic"),'Z'));
1079         menuFileUpdateReport.setIcon(SwingUtil.createActionIcon("update-report"));
1080         menuFileConnectIchtyometer.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.connectIchtyometer.mnemonic"),'Z'));
1081         menuFileConnectIchtyometer.setIcon(SwingUtil.createActionIcon("bluetooth-down"));
1082         menuFileDisconnectIchtyometer.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.disconnectIchtyometer.mnemonic"),'Z'));
1083         menuFileDisconnectIchtyometer.setIcon(SwingUtil.createActionIcon("bluetooth-up"));
1084         menuFileConnectCaliper.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.connectCaliper.mnemonic"),'Z'));
1085         menuFileConnectCaliper.setIcon(SwingUtil.createActionIcon("caliper-down"));
1086         menuFileDisconnectCaliper.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.disconnectCaliper.mnemonic"),'Z'));
1087         menuFileDisconnectCaliper.setIcon(SwingUtil.createActionIcon("caliper-up"));
1088         menuFileManageDb.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.manageDb.mnemonic"),'Z'));
1089         menuFileManageDb.setIcon(SwingUtil.createActionIcon("manage-db"));
1090         menuFileExit.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.exit.mnemonic"),'Z'));
1091         menuFileExit.setIcon(SwingUtil.createActionIcon("exit"));
1092         menuActions.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.menu.actions.mnemonic"),'Z'));
1093         menuActionSelectCruise.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.selectCruise.mnemonic"),'Z'));
1094         menuActionSelectCruise.setIcon(SwingUtil.createActionIcon("home"));
1095         menuActionEditProgram.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.editSelectedProgram.mnemonic"),'Z'));
1096         menuActionEditProgram.setIcon(SwingUtil.createActionIcon("program"));
1097         menuActionEditCruise.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.editSelectedCruise.mnemonic"),'Z'));
1098         menuActionEditCruise.setIcon(SwingUtil.createActionIcon("cruise"));
1099         menuActionEditProtocol.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.editSelectedProtocol.mnemonic"),'Z'));
1100         menuActionEditProtocol.setIcon(SwingUtil.createActionIcon("protocol"));
1101         menuActionEditCatches.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.editCatches.mnemonic"),'Z'));
1102         menuActionEditCatches.setIcon(SwingUtil.createActionIcon("edit"));
1103         menuActionValidateCatches.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.validateCatches.mnemonic"),'Z'));
1104         menuActionValidateCatches.setIcon(SwingUtil.createActionIcon("validate"));
1105         menuActionGenerateCruiseReport.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.generateSelectedCruiseReport.mnemonic"),'Z'));
1106         menuActionGenerateCruiseReport.setIcon(SwingUtil.createActionIcon("report"));
1107         menuActionGenericFormatExport.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.genericFormatExport.mnemonic"),'Z'));
1108         menuActionGenericFormatExport.setIcon(SwingUtil.createActionIcon("export"));
1109         menuActionGenericFormatImport.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.genericFormatImport.mnemonic"),'Z'));
1110         menuActionGenericFormatImport.setIcon(SwingUtil.createActionIcon("import"));
1111         menuAdministration.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.menu.administration.mnemonic"),'Z'));
1112         menuImportTemporaryReferential.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.importTemporaryReferential.mnemonic"),'Z'));
1113         menuImportTemporaryReferential.setIcon(SwingUtil.createActionIcon("temporary-referential-import"));
1114         menuEditSampleCategoryModel.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.editSampleCategoryModel.mnemonic"),'Z'));
1115         menuEditSampleCategoryModel.setIcon(SwingUtil.createActionIcon("sampleOrder"));
1116         menuHelp.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.menu.help.mnemonic"),'Z'));
1117         menuShowHelp.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.showHelp.mnemonic"),'Z'));
1118         menuShowHelp.setIcon(SwingUtil.createActionIcon("help"));
1119         menuHelpSite.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.site.mnemonic"),'Z'));
1120         menuHelpSite.setIcon(SwingUtil.createActionIcon("site"));
1121         menuHelpAbout.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.about.mnemonic"),'Z'));
1122         menuHelpAbout.setIcon(SwingUtil.createActionIcon("about"));
1123         menuChangeLocale.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.changeLocale.mnemonic"),'Z'));
1124         menuChangeLocale.setIcon(SwingUtil.createActionIcon("translate"));
1125         menuChangeLocaleUK.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.changeLocaleUK.mnemonic"),'Z'));
1126         menuChangeLocaleUK.setIcon(SwingUtil.createActionIcon("i18n-uk"));
1127         menuChangeLocaleFR.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.main.action.changeLocaleFR.mnemonic"),'Z'));
1128         menuChangeLocaleFR.setIcon(SwingUtil.createActionIcon("i18n-fr"));
1129         bottomBar.setMargin(new java.awt.Insets(0, 0, 0, 5));
1130         ichtyometerStatus.setIcon(SwingUtil.createActionIcon("bluetooth-up"));
1131         ichtyometerStatus.setDisabledIcon(jaxx.runtime.SwingUtil.createActionIcon("bluetooth-down"));
1132         caliperStatus.setIcon(SwingUtil.createActionIcon("caliper-up"));
1133         caliperStatus.setDisabledIcon(jaxx.runtime.SwingUtil.createActionIcon("caliper-down"));
1134         showHelp.setIcon(SwingUtil.createActionIcon("show-help"));
1135         // late initializer
1136         // help broker setup
1137         TuttiHelpBroker _broker = getBroker();
1138         registerHelpId(_broker, menuFileConfiguration, "tutti.main.menu.action.configuration.help");
1139         registerHelpId(_broker, menuFileUpdateApplication, "tutti.main.menu.action.updateApplication.help");
1140         registerHelpId(_broker, menuFileUpdateReport, "tutti.main.menu.action.updateReport.help");
1141         registerHelpId(_broker, menuFileConnectIchtyometer, "tutti.main.menu.action.connectIchtyometer.help");
1142         registerHelpId(_broker, menuFileDisconnectIchtyometer, "tutti.main.menu.action.disconnectIchtyometer.help");
1143         registerHelpId(_broker, menuFileConnectCaliper, "tutti.main.menu.action.connectCaliper.help");
1144         registerHelpId(_broker, menuFileDisconnectCaliper, "tutti.main.menu.action.disconnectCaliper.help");
1145         registerHelpId(_broker, menuFileManageDb, "tutti.main.menu.action.manageDb.help");
1146         registerHelpId(_broker, menuFileExit, "tutti.main.menu.action.exit.help");
1147         registerHelpId(_broker, menuActionSelectCruise, "tutti.main.menu.action.selectCruise.help");
1148         registerHelpId(_broker, menuActionEditProgram, "tutti.main.menu.action.editProgram.help");
1149         registerHelpId(_broker, menuActionEditCruise, "tutti.main.menu.action.editCruise.help");
1150         registerHelpId(_broker, menuActionEditProtocol, "tutti.main.menu.action.editProtocol.help");
1151         registerHelpId(_broker, menuActionEditCatches, "tutti.main.menu.action.editCatches.help");
1152         registerHelpId(_broker, menuActionValidateCatches, "tutti.main.menu.action.validateCatches.help");
1153         registerHelpId(_broker, menuActionGenerateCruiseReport, "tutti.main.menu.action.generateSelectedCruiseReport.help");
1154         registerHelpId(_broker, menuActionGenericFormatExport, "tutti.main.menu.action.genericFormatExport.help");
1155         registerHelpId(_broker, menuActionGenericFormatImport, "tutti.main.menu.action.genericFormatImport.help");
1156         registerHelpId(_broker, menuImportTemporaryReferential, "tutti.main.menu.action.importTemporaryReferential.help");
1157         registerHelpId(_broker, menuEditSampleCategoryModel, "tutti.main.menu.action.editSampleCategoryModel.help");
1158         registerHelpId(_broker, menuShowHelp, "tutti.index.help");
1159         registerHelpId(_broker, menuHelpSite, "tutti.main.menu.action.site.help");
1160         registerHelpId(_broker, menuHelpAbout, "tutti.main.menu.action.about.help");
1161         registerHelpId(_broker, menuChangeLocale, "tutti.main.menu.action.changeLocale.help");
1162         registerHelpId(_broker, menuChangeLocaleUK, "tutti.main.menu.action.changeLocaleUK.help");
1163         registerHelpId(_broker, menuChangeLocaleFR, "tutti.main.menu.action.changeLocaleFR.help");
1164         registerHelpId(_broker, ichtyometerStatus, "tutti.main.status.ichtyometer.help");
1165         registerHelpId(_broker, caliperStatus, "tutti.main.status.caliper.help");
1166         registerHelpId(_broker, validatorMessageWidget, "tutti.main.status.validation.help");
1167         registerHelpId(_broker, showHelp, "tutti.main.menu.action.showHelp.help");
1168         registerHelpId(_broker, body, "tutti.main.help");
1169         _broker.prepareUI(this);
1170     }
1171 
1172     private void $initialize() {
1173         if (allComponentsCreated) {
1174             return;
1175         }
1176         if (log.isDebugEnabled()) {
1177             log.debug(this);
1178         }
1179         handler.beforeInit(this);
1180         $objectMap.put("mainFrame", mainFrame);
1181         createModel();
1182         createBroker();
1183         createBusyBlockLayerUI();
1184         createMenu();
1185         createMenuFile();
1186         createMenuFileConfiguration();
1187         createMenuFileUpdateApplication();
1188         createMenuFileUpdateReport();
1189         // inline creation of $JSeparator0
1190         $objectMap.put("$JSeparator0", $JSeparator0 = new JSeparator());
1191         
1192         $JSeparator0.setName("$JSeparator0");
1193         createMenuFileConnectIchtyometer();
1194         createMenuFileDisconnectIchtyometer();
1195         createMenuFileConnectCaliper();
1196         createMenuFileDisconnectCaliper();
1197         // inline creation of $JSeparator1
1198         $objectMap.put("$JSeparator1", $JSeparator1 = new JSeparator());
1199         
1200         $JSeparator1.setName("$JSeparator1");
1201         createMenuFileManageDb();
1202         // inline creation of $JSeparator2
1203         $objectMap.put("$JSeparator2", $JSeparator2 = new JSeparator());
1204         
1205         $JSeparator2.setName("$JSeparator2");
1206         createMenuFileExit();
1207         createMenuActions();
1208         createMenuActionSelectCruise();
1209         createMenuActionEditProgram();
1210         createMenuActionEditCruise();
1211         createMenuActionEditProtocol();
1212         createMenuActionEditCatches();
1213         createMenuActionValidateCatches();
1214         createMenuActionGenerateCruiseReport();
1215         // inline creation of $JSeparator3
1216         $objectMap.put("$JSeparator3", $JSeparator3 = new JSeparator());
1217         
1218         $JSeparator3.setName("$JSeparator3");
1219         createMenuActionGenericFormatExport();
1220         createMenuActionGenericFormatImport();
1221         createMenuAdministration();
1222         createMenuImportTemporaryReferential();
1223         createMenuEditSampleCategoryModel();
1224         createMenuHelp();
1225         createMenuShowHelp();
1226         createMenuHelpSite();
1227         createMenuHelpAbout();
1228         createMenuChangeLocale();
1229         createMenuChangeLocaleUK();
1230         createMenuChangeLocaleFR();
1231         createBottomBar();
1232         createIchtyometerStatus();
1233         createCaliperStatus();
1234         createValidatorMessageWidget();
1235         createShowHelp();
1236         createBody();
1237         createStatus();
1238         // inline creation of mainFrame
1239         setName("mainFrame");
1240         SwingUtil.setComponentHeight(mainFrame,600);
1241         SwingUtil.setComponentWidth(mainFrame,800);
1242         setTitle(t("tutti.main.title.applicationName"));
1243         mainFrame.addWindowListener(JAXXUtil.getEventListener(WindowListener.class, "windowClosing", this, "doWindowClosing__on__mainFrame"));
1244         
1245         // registers 30 data bindings
1246         $registerDefaultBindings();
1247         $completeSetup();
1248         handler.afterInit(this);
1249     }
1250 
1251     private void $registerDefaultBindings() {
1252         // register 30 data bindings
1253         registerDataBinding(new DefaultJAXXBinding(this, BINDING_BUSY_BLOCK_LAYER_UI_BLOCK, true) {
1254         
1255             @Override
1256             public void applyDataBinding() {
1257                 if (model != null) {
1258                     model.addPropertyChangeListener("busy", this);
1259                 }
1260             }
1261         
1262             @Override
1263             public void processDataBinding() {
1264                 if (model != null) {
1265                     busyBlockLayerUI.setBlock(model.isBusy());
1266                 }
1267             }
1268         
1269             @Override
1270             public void removeDataBinding() {
1271                 if (model != null) {
1272                     model.removePropertyChangeListener("busy", this);
1273                 }
1274             }
1275         });
1276         registerDataBinding(new DefaultJAXXBinding(this, BINDING_BUSY_BLOCK_LAYER_UI_BLOCKING_COLOR, true) {
1277         
1278             @Override
1279             public void applyDataBinding() {
1280                 if (model != null) {
1281                     model.addPropertyChangeListener("config", this);
1282                 }
1283             }
1284         
1285             @Override
1286             public void processDataBinding() {
1287                 if (model != null && model.getConfig() != null) {
1288                     busyBlockLayerUI.setBlockingColor(model.getConfig().getColorBlockingLayer());
1289                 }
1290             }
1291         
1292             @Override
1293             public void removeDataBinding() {
1294                 if (model != null) {
1295                     model.removePropertyChangeListener("config", this);
1296                 }
1297             }
1298         });
1299         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_CONFIGURATION_ENABLED, true) {
1300         
1301             @Override
1302             public void applyDataBinding() {
1303                 if (model != null) {
1304                     model.addPropertyChangeListener("screen", this);
1305                 }
1306             }
1307         
1308             @Override
1309             public void processDataBinding() {
1310                 if (model != null) {
1311                     menuFileConfiguration.setEnabled(model.getScreen() != TuttiScreen.CONFIG);
1312                 }
1313             }
1314         
1315             @Override
1316             public void removeDataBinding() {
1317                 if (model != null) {
1318                     model.removePropertyChangeListener("screen", this);
1319                 }
1320             }
1321         });
1322         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_CONNECT_ICHTYOMETER_VISIBLE, true) {
1323         
1324             @Override
1325             public void applyDataBinding() {
1326                 if (model != null) {
1327                     model.addPropertyChangeListener("ichtyometerConnected", this);
1328                 }
1329             }
1330         
1331             @Override
1332             public void processDataBinding() {
1333                 if (model != null) {
1334                     menuFileConnectIchtyometer.setVisible(!model.isIchtyometerConnected());
1335                 }
1336             }
1337         
1338             @Override
1339             public void removeDataBinding() {
1340                 if (model != null) {
1341                     model.removePropertyChangeListener("ichtyometerConnected", this);
1342                 }
1343             }
1344         });
1345         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_DISCONNECT_ICHTYOMETER_VISIBLE, true) {
1346         
1347             @Override
1348             public void applyDataBinding() {
1349                 if (model != null) {
1350                     model.addPropertyChangeListener("ichtyometerConnected", this);
1351                 }
1352             }
1353         
1354             @Override
1355             public void processDataBinding() {
1356                 if (model != null) {
1357                     menuFileDisconnectIchtyometer.setVisible(model.isIchtyometerConnected());
1358                 }
1359             }
1360         
1361             @Override
1362             public void removeDataBinding() {
1363                 if (model != null) {
1364                     model.removePropertyChangeListener("ichtyometerConnected", this);
1365                 }
1366             }
1367         });
1368         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_CONNECT_CALIPER_VISIBLE, true) {
1369         
1370             @Override
1371             public void applyDataBinding() {
1372                 if (model != null) {
1373                     model.addPropertyChangeListener("caliperConnected", this);
1374                 }
1375             }
1376         
1377             @Override
1378             public void processDataBinding() {
1379                 if (model != null) {
1380                     menuFileConnectCaliper.setVisible(!model.isCaliperConnected());
1381                 }
1382             }
1383         
1384             @Override
1385             public void removeDataBinding() {
1386                 if (model != null) {
1387                     model.removePropertyChangeListener("caliperConnected", this);
1388                 }
1389             }
1390         });
1391         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_DISCONNECT_CALIPER_VISIBLE, true) {
1392         
1393             @Override
1394             public void applyDataBinding() {
1395                 if (model != null) {
1396                     model.addPropertyChangeListener("caliperConnected", this);
1397                 }
1398             }
1399         
1400             @Override
1401             public void processDataBinding() {
1402                 if (model != null) {
1403                     menuFileDisconnectCaliper.setVisible(model.isCaliperConnected());
1404                 }
1405             }
1406         
1407             @Override
1408             public void removeDataBinding() {
1409                 if (model != null) {
1410                     model.removePropertyChangeListener("caliperConnected", this);
1411                 }
1412             }
1413         });
1414         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_FILE_MANAGE_DB_ENABLED, true) {
1415         
1416             @Override
1417             public void applyDataBinding() {
1418                 if (model != null) {
1419                     model.addPropertyChangeListener("screen", this);
1420                 }
1421             }
1422         
1423             @Override
1424             public void processDataBinding() {
1425                 if (model != null) {
1426                     menuFileManageDb.setEnabled(model.getScreen() != TuttiScreen.MANAGE_DB);
1427                 }
1428             }
1429         
1430             @Override
1431             public void removeDataBinding() {
1432                 if (model != null) {
1433                     model.removePropertyChangeListener("screen", this);
1434                 }
1435             }
1436         });
1437         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTIONS_ENABLED, true) {
1438         
1439             @Override
1440             public void applyDataBinding() {
1441                 if (model != null) {
1442                     model.addPropertyChangeListener("dbLoaded", this);
1443                 }
1444             }
1445         
1446             @Override
1447             public void processDataBinding() {
1448                 if (model != null) {
1449                     menuActions.setEnabled(model.isDbLoaded());
1450                 }
1451             }
1452         
1453             @Override
1454             public void removeDataBinding() {
1455                 if (model != null) {
1456                     model.removePropertyChangeListener("dbLoaded", this);
1457                 }
1458             }
1459         });
1460         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_SELECT_CRUISE_ENABLED, true) {
1461         
1462             @Override
1463             public void applyDataBinding() {
1464                 if (model != null) {
1465                     model.addPropertyChangeListener("screen", this);
1466                 }
1467             }
1468         
1469             @Override
1470             public void processDataBinding() {
1471                 if (model != null) {
1472                     menuActionSelectCruise.setEnabled(model.getScreen() != TuttiScreen.SELECT_CRUISE);
1473                 }
1474             }
1475         
1476             @Override
1477             public void removeDataBinding() {
1478                 if (model != null) {
1479                     model.removePropertyChangeListener("screen", this);
1480                 }
1481             }
1482         });
1483         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_EDIT_PROGRAM_ENABLED, true, true) {
1484         
1485             @Override
1486             public void applyDataBinding() {
1487                 if (model != null) {
1488                     model.addPropertyChangeListener("screen", this);
1489                 }
1490                 if (model != null) {
1491                     model.addPropertyChangeListener("programFilled", this);
1492                 }
1493             }
1494         
1495             @Override
1496             public void processDataBinding() {
1497                 if (model != null) {
1498                     menuActionEditProgram.setEnabled(model.getScreen() != TuttiScreen.EDIT_PROGRAM && model.isProgramFilled());
1499                 }
1500             }
1501         
1502             @Override
1503             public void removeDataBinding() {
1504                 if (model != null) {
1505                     model.removePropertyChangeListener("screen", this);
1506                 }
1507                 if (model != null) {
1508                     model.removePropertyChangeListener("programFilled", this);
1509                 }
1510             }
1511         });
1512         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_EDIT_CRUISE_ENABLED, true, true) {
1513         
1514             @Override
1515             public void applyDataBinding() {
1516                 if (model != null) {
1517                     model.addPropertyChangeListener("screen", this);
1518                 }
1519                 if (model != null) {
1520                     model.addPropertyChangeListener("cruiseFilled", this);
1521                 }
1522             }
1523         
1524             @Override
1525             public void processDataBinding() {
1526                 if (model != null) {
1527                     menuActionEditCruise.setEnabled(model.getScreen() != TuttiScreen.EDIT_CRUISE && model.isCruiseFilled());
1528                 }
1529             }
1530         
1531             @Override
1532             public void removeDataBinding() {
1533                 if (model != null) {
1534                     model.removePropertyChangeListener("screen", this);
1535                 }
1536                 if (model != null) {
1537                     model.removePropertyChangeListener("cruiseFilled", this);
1538                 }
1539             }
1540         });
1541         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_EDIT_PROTOCOL_ENABLED, true, true) {
1542         
1543             @Override
1544             public void applyDataBinding() {
1545                 if (model != null) {
1546                     model.addPropertyChangeListener("screen", this);
1547                 }
1548                 if (model != null) {
1549                     model.addPropertyChangeListener("protocolFilled", this);
1550                 }
1551             }
1552         
1553             @Override
1554             public void processDataBinding() {
1555                 if (model != null) {
1556                     menuActionEditProtocol.setEnabled(model.getScreen() != TuttiScreen.EDIT_PROTOCOL && model.isProtocolFilled());
1557                 }
1558             }
1559         
1560             @Override
1561             public void removeDataBinding() {
1562                 if (model != null) {
1563                     model.removePropertyChangeListener("screen", this);
1564                 }
1565                 if (model != null) {
1566                     model.removePropertyChangeListener("protocolFilled", this);
1567                 }
1568             }
1569         });
1570         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_EDIT_CATCHES_ENABLED, true, true) {
1571         
1572             @Override
1573             public void applyDataBinding() {
1574                 if (model != null) {
1575                     model.addPropertyChangeListener("screen", this);
1576                 }
1577                 if (model != null) {
1578                     model.addPropertyChangeListener("cruiseFilled", this);
1579                 }
1580             }
1581         
1582             @Override
1583             public void processDataBinding() {
1584                 if (model != null) {
1585                     menuActionEditCatches.setEnabled(model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseFilled());
1586                 }
1587             }
1588         
1589             @Override
1590             public void removeDataBinding() {
1591                 if (model != null) {
1592                     model.removePropertyChangeListener("screen", this);
1593                 }
1594                 if (model != null) {
1595                     model.removePropertyChangeListener("cruiseFilled", this);
1596                 }
1597             }
1598         });
1599         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_VALIDATE_CATCHES_ENABLED, true, true) {
1600         
1601             @Override
1602             public void applyDataBinding() {
1603                 if (model != null) {
1604                     model.addPropertyChangeListener("screen", this);
1605                 }
1606                 if (model != null) {
1607                     model.addPropertyChangeListener("cruiseFilled", this);
1608                 }
1609             }
1610         
1611             @Override
1612             public void processDataBinding() {
1613                 if (model != null) {
1614                     menuActionValidateCatches.setEnabled(model.getScreen() != TuttiScreen.VALIDATE_CRUISE && model.isCruiseFilled());
1615                 }
1616             }
1617         
1618             @Override
1619             public void removeDataBinding() {
1620                 if (model != null) {
1621                     model.removePropertyChangeListener("screen", this);
1622                 }
1623                 if (model != null) {
1624                     model.removePropertyChangeListener("cruiseFilled", this);
1625                 }
1626             }
1627         });
1628         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_GENERATE_CRUISE_REPORT_ENABLED, true, true) {
1629         
1630             @Override
1631             public void applyDataBinding() {
1632                 if (model != null) {
1633                     model.addPropertyChangeListener("screen", this);
1634                 }
1635                 if (model != null) {
1636                     model.addPropertyChangeListener("cruiseFilled", this);
1637                 }
1638             }
1639         
1640             @Override
1641             public void processDataBinding() {
1642                 if (model != null) {
1643                     menuActionGenerateCruiseReport.setEnabled(model.getScreen() != TuttiScreen.REPORT && model.isCruiseFilled());
1644                 }
1645             }
1646         
1647             @Override
1648             public void removeDataBinding() {
1649                 if (model != null) {
1650                     model.removePropertyChangeListener("screen", this);
1651                 }
1652                 if (model != null) {
1653                     model.removePropertyChangeListener("cruiseFilled", this);
1654                 }
1655             }
1656         });
1657         registerDataBinding(new DefaultJAXXBinding(this, BINDING_$JSEPARATOR3_ENABLED, true) {
1658         
1659             @Override
1660             public void applyDataBinding() {
1661                 if (model != null) {
1662                     model.addPropertyChangeListener("dbLoaded", this);
1663                 }
1664             }
1665         
1666             @Override
1667             public void processDataBinding() {
1668                 if (model != null) {
1669                     $JSeparator3.setEnabled(model.isDbLoaded());
1670                 }
1671             }
1672         
1673             @Override
1674             public void removeDataBinding() {
1675                 if (model != null) {
1676                     model.removePropertyChangeListener("dbLoaded", this);
1677                 }
1678             }
1679         });
1680         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_GENERIC_FORMAT_EXPORT_ENABLED, true) {
1681         
1682             @Override
1683             public void applyDataBinding() {
1684                 if (model != null) {
1685                     model.addPropertyChangeListener("screen", this);
1686                 }
1687             }
1688         
1689             @Override
1690             public void processDataBinding() {
1691                 if (model != null) {
1692                     menuActionGenericFormatExport.setEnabled(model.getScreen() != TuttiScreen.GENERIC_FORMAT_EXPORT);
1693                 }
1694             }
1695         
1696             @Override
1697             public void removeDataBinding() {
1698                 if (model != null) {
1699                     model.removePropertyChangeListener("screen", this);
1700                 }
1701             }
1702         });
1703         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ACTION_GENERIC_FORMAT_IMPORT_ENABLED, true) {
1704         
1705             @Override
1706             public void applyDataBinding() {
1707                 if (model != null) {
1708                     model.addPropertyChangeListener("screen", this);
1709                 }
1710             }
1711         
1712             @Override
1713             public void processDataBinding() {
1714                 if (model != null) {
1715                     menuActionGenericFormatImport.setEnabled(model.getScreen() != TuttiScreen.GENERIC_FORMAT_IMPORT);
1716                 }
1717             }
1718         
1719             @Override
1720             public void removeDataBinding() {
1721                 if (model != null) {
1722                     model.removePropertyChangeListener("screen", this);
1723                 }
1724             }
1725         });
1726         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_ADMINISTRATION_ENABLED, true) {
1727         
1728             @Override
1729             public void applyDataBinding() {
1730                 if (model != null) {
1731                     model.addPropertyChangeListener("dbLoaded", this);
1732                 }
1733             }
1734         
1735             @Override
1736             public void processDataBinding() {
1737                 if (model != null) {
1738                     menuAdministration.setEnabled(model.isDbLoaded());
1739                 }
1740             }
1741         
1742             @Override
1743             public void removeDataBinding() {
1744                 if (model != null) {
1745                     model.removePropertyChangeListener("dbLoaded", this);
1746                 }
1747             }
1748         });
1749         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_IMPORT_TEMPORARY_REFERENTIAL_ENABLED, true) {
1750         
1751             @Override
1752             public void applyDataBinding() {
1753                 if (model != null) {
1754                     model.addPropertyChangeListener("screen", this);
1755                 }
1756             }
1757         
1758             @Override
1759             public void processDataBinding() {
1760                 if (model != null) {
1761                     menuImportTemporaryReferential.setEnabled(model.getScreen() != TuttiScreen.IMPORT_TEMPORARY_REFERENTIAL);
1762                 }
1763             }
1764         
1765             @Override
1766             public void removeDataBinding() {
1767                 if (model != null) {
1768                     model.removePropertyChangeListener("screen", this);
1769                 }
1770             }
1771         });
1772         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_EDIT_SAMPLE_CATEGORY_MODEL_ENABLED, true) {
1773         
1774             @Override
1775             public void applyDataBinding() {
1776                 if (model != null) {
1777                     model.addPropertyChangeListener("dbLoaded", this);
1778                 }
1779             }
1780         
1781             @Override
1782             public void processDataBinding() {
1783                 if (model != null) {
1784                     menuEditSampleCategoryModel.setEnabled(model.isDbLoaded());
1785                 }
1786             }
1787         
1788             @Override
1789             public void removeDataBinding() {
1790                 if (model != null) {
1791                     model.removePropertyChangeListener("dbLoaded", this);
1792                 }
1793             }
1794         });
1795         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_CHANGE_LOCALE_UK_ENABLED, true) {
1796         
1797             @Override
1798             public void applyDataBinding() {
1799                 if (model != null) {
1800                     model.addPropertyChangeListener("locale", this);
1801                 }
1802             }
1803         
1804             @Override
1805             public void processDataBinding() {
1806                 if (model != null) {
1807                     menuChangeLocaleUK.setEnabled(!handler.acceptLocale(model.getLocale(), "en_GB"));
1808                 }
1809             }
1810         
1811             @Override
1812             public void removeDataBinding() {
1813                 if (model != null) {
1814                     model.removePropertyChangeListener("locale", this);
1815                 }
1816             }
1817         });
1818         registerDataBinding(new DefaultJAXXBinding(this, BINDING_MENU_CHANGE_LOCALE_FR_ENABLED, true) {
1819         
1820             @Override
1821             public void applyDataBinding() {
1822                 if (model != null) {
1823                     model.addPropertyChangeListener("locale", this);
1824                 }
1825             }
1826         
1827             @Override
1828             public void processDataBinding() {
1829                 if (model != null) {
1830                     menuChangeLocaleFR.setEnabled(!handler.acceptLocale(model.getLocale(), "fr_FR"));
1831                 }
1832             }
1833         
1834             @Override
1835             public void removeDataBinding() {
1836                 if (model != null) {
1837                     model.removePropertyChangeListener("locale", this);
1838                 }
1839             }
1840         });
1841         registerDataBinding(new DefaultJAXXBinding(this, BINDING_ICHTYOMETER_STATUS_ENABLED, true) {
1842         
1843             @Override
1844             public void applyDataBinding() {
1845                 if (model != null) {
1846                     model.addPropertyChangeListener("ichtyometerConnected", this);
1847                 }
1848             }
1849         
1850             @Override
1851             public void processDataBinding() {
1852                 if (model != null) {
1853                     ichtyometerStatus.setEnabled(model.isIchtyometerConnected());
1854                 }
1855             }
1856         
1857             @Override
1858             public void removeDataBinding() {
1859                 if (model != null) {
1860                     model.removePropertyChangeListener("ichtyometerConnected", this);
1861                 }
1862             }
1863         });
1864         registerDataBinding(new DefaultJAXXBinding(this, BINDING_ICHTYOMETER_STATUS_TOOL_TIP_TEXT, true) {
1865         
1866             @Override
1867             public void applyDataBinding() {
1868                 if (model != null) {
1869                     model.addPropertyChangeListener("ichtyometerConnected", this);
1870                 }
1871             }
1872         
1873             @Override
1874             public void processDataBinding() {
1875                 if (model != null) {
1876                     ichtyometerStatus.setToolTipText(t(handler.getIchtyometerStatusTip(model.isIchtyometerConnected())));
1877                 }
1878             }
1879         
1880             @Override
1881             public void removeDataBinding() {
1882                 if (model != null) {
1883                     model.removePropertyChangeListener("ichtyometerConnected", this);
1884                 }
1885             }
1886         });
1887         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CALIPER_STATUS_TEXT, true) {
1888         
1889             @Override
1890             public void applyDataBinding() {
1891                 if (model != null) {
1892                     model.addPropertyChangeListener("caliperConnected", this);
1893                 }
1894             }
1895         
1896             @Override
1897             public void processDataBinding() {
1898                 if (model != null) {
1899                     caliperStatus.setText(t(handler.getCaliperStatusLabel(model.isCaliperConnected())));
1900                 }
1901             }
1902         
1903             @Override
1904             public void removeDataBinding() {
1905                 if (model != null) {
1906                     model.removePropertyChangeListener("caliperConnected", this);
1907                 }
1908             }
1909         });
1910         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CALIPER_STATUS_ENABLED, true) {
1911         
1912             @Override
1913             public void applyDataBinding() {
1914                 if (model != null) {
1915                     model.addPropertyChangeListener("caliperConnected", this);
1916                 }
1917             }
1918         
1919             @Override
1920             public void processDataBinding() {
1921                 if (model != null) {
1922                     caliperStatus.setEnabled(model.isCaliperConnected());
1923                 }
1924             }
1925         
1926             @Override
1927             public void removeDataBinding() {
1928                 if (model != null) {
1929                     model.removePropertyChangeListener("caliperConnected", this);
1930                 }
1931             }
1932         });
1933         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CALIPER_STATUS_TOOL_TIP_TEXT, true) {
1934         
1935             @Override
1936             public void applyDataBinding() {
1937                 if (model != null) {
1938                     model.addPropertyChangeListener("caliperConnected", this);
1939                 }
1940             }
1941         
1942             @Override
1943             public void processDataBinding() {
1944                 if (model != null) {
1945                     caliperStatus.setToolTipText(t(handler.getCaliperStatusTip(model.isCaliperConnected())));
1946                 }
1947             }
1948         
1949             @Override
1950             public void removeDataBinding() {
1951                 if (model != null) {
1952                     model.removePropertyChangeListener("caliperConnected", this);
1953                 }
1954             }
1955         });
1956         registerDataBinding(new DefaultJAXXBinding(this, BINDING_STATUS_SHOW_MEMORY_STATUS, true) {
1957         
1958             @Override
1959             public void applyDataBinding() {
1960                 if (model != null) {
1961                     model.addPropertyChangeListener("config", this);
1962                 }
1963             }
1964         
1965             @Override
1966             public void processDataBinding() {
1967                 if (model != null && model.getConfig() != null) {
1968                     status.setShowMemoryStatus(model.getConfig().isShowMemoryUsage());
1969                 }
1970             }
1971         
1972             @Override
1973             public void removeDataBinding() {
1974                 if (model != null) {
1975                     model.removePropertyChangeListener("config", this);
1976                 }
1977             }
1978         });
1979     }
1980 
1981 }