View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.db;
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.TuttiUIContext;
29  import fr.ifremer.tutti.ui.swing.util.TuttiUI;
30  import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
31  import java.awt.BorderLayout;
32  import java.awt.Component;
33  import java.awt.Container;
34  import java.awt.GridLayout;
35  import java.awt.LayoutManager;
36  import java.util.ArrayList;
37  import java.util.HashMap;
38  import java.util.List;
39  import java.util.Map;
40  import java.util.TreeMap;
41  import javax.swing.JButton;
42  import javax.swing.JPanel;
43  import javax.swing.JTextPane;
44  import javax.swing.border.EmptyBorder;
45  import jaxx.runtime.JAXXBinding;
46  import jaxx.runtime.JAXXContext;
47  import jaxx.runtime.JAXXObject;
48  import jaxx.runtime.JAXXObjectDescriptor;
49  import jaxx.runtime.JAXXUtil;
50  import jaxx.runtime.SwingUtil;
51  import jaxx.runtime.binding.DefaultJAXXBinding;
52  import jaxx.runtime.context.DefaultJAXXContext;
53  import jaxx.runtime.swing.help.JAXXHelpUI;
54  import org.apache.commons.logging.Log;
55  import org.apache.commons.logging.LogFactory;
56  import static org.nuiton.i18n.I18n.t;
57  
58  public class DbManagerUI extends JPanel implements JAXXHelpUI<TuttiHelpBroker>, TuttiUI<TuttiUIContext, DbManagerUIHandler>, JAXXObject {
59  
60      /*-----------------------------------------------------------------------*/
61      /*------------------ Constants for all public bindings ------------------*/
62      /*-----------------------------------------------------------------------*/
63  
64      public static final String BINDING_EXPORT_DB_BUTTON_VISIBLE = "exportDbButton.visible";
65      public static final String BINDING_INSTALL_OR_REINSTALL_DB_BUTTON_TEXT = "installOrReinstallDbButton.text";
66      public static final String BINDING_INSTALL_OR_REINSTALL_DB_BUTTON_TOOL_TIP_TEXT = "installOrReinstallDbButton.toolTipText";
67      public static final String BINDING_OPEN_DB_BUTTON_VISIBLE = "openDbButton.visible";
68      public static final String BINDING_UPGRADE_DB_BUTTON_VISIBLE = "upgradeDbButton.visible";
69  
70      /*-----------------------------------------------------------------------*/
71      /*------------------------- Other static fields -------------------------*/
72      /*-----------------------------------------------------------------------*/
73  
74      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1XTW8bRRiemDiu47ZpnbakNFGdBCIH6DoVioQUBM2nmshpUOKoFTmEWe/YnrLeHWbHzQYriJ/AT4A7FyQuwAlx6JkDF8RfQBUHroh3Ztfrr12vrRBFa3vmfZ/345n32d3v/kJJh6P559h1Nd6wBK0TbW/92bMD/Tkpiy3ilDllwubI+xtLoMQJyhjBuiPQ4klRuhd898KmXWe2RawO77UimnTEuUmcGiFCoLluj7LjFI6C7TWXNXgLNUgqDPWbv18lvja++jaBkMsguwyUkovzalcyXkQJagiUhUgvcMHEVhXS4NSqQr7X5NqmiR3nCa6Tz9GXKFVEEwxzABNoYfiSFYbyd5lANw19H1u4SnjJZh9ji5gCrVS4Riuc1AnXREMIqjWo5pxBHlrZtgTAaoaubbUcj3cZU4ATAiXrtiEh8tEQJfnzeHdTIrmi7Tqhc/szwgVajvF9TEy2oWzbzmlqVWw//azslOt77KlFaZUOjKekMa9jQW1rnRMs0O0ulxLkJd2keTbwSuGydFA/b3UDXrUZsbb0DcgOqkLTXWjeqrScESijq18qqZb3G9RyBDbNA35I/K8tLGkxq1yDWNcpUMvFAIupBqtybJBBIMSNAuHoXteJhVnQ2rPQPqxjJyjJG7As0MxJ//gcwpY3ODM9gyMB1e6/d6Z///nPH3Za05KF2LdDTTuGHU4x49BuLqgMPeWNSkNQs7CP2doJSjvEBKVQSjAbktiRvw3JQbyb0l2T7tpj7NQAIpn645df73z622sosYMmTRsbO1ja76K0qHHogm0aLvvokcro6tkVuN6QuUFTT7FhPCW0WhPHFoWhfL2ppkGrEtFezi9fuNCV2ZCuBKnp6Zf/TB99/6jVmTHI9G6kebs7yU/QBLVMahGlJL5IhCpHhjmkYdhtMQiTB8QYSMQ1E+vEfEpFTeav9t5R10JYFyZqqlSBEqsrbkOavacqkN9WPcC+IRgAlzytwbjDGWsueFoQ6JUmNxYu+mOEiRrzpSIqUgKmtmZz+gXMLzbXTVq16kpYp5p7RVm+trn9pLR9eCHQpKcDu1IKUaZDSsIyudGxr3DiEhmXQmhzQwrhXNMiZ7ntOhPnG2opv/puzv9fhkyuEIMKrJswlskKNh34TFfscsPpXsv4ol06Z9JCqm6hJupmWL690hiXrhQ/+vB9a98idduiZVDvXpq8dmmBsmn1wDZ7CgFMWvbCKTuBDppD3X58NdZ2Q8TTg9LK8ij3MjbpWz0wdAHdhmYI9LBZw5ZhQjwYVR/QU0Z5K8h7U0ydLX3bpQ5MsGx+62Au9x/Mvoq9kwpMCNs2S5SVVNSV6KiUhQUNI2zAzWN07vJRlfi3nDjq9kekTsGqzP0Ag4hLe0advN2PybfNUj6apVZt4SQtxrkJysJ46blNx3GR6uNiKSKw96gRx8T6aEwcKNBB3U/JuKr3qRfUoUpg3m72HdLc0lJuvr1ahNsnMfJyXnzK5gaW1SZsKZIwvwHhdM0Pdoogq+v5bXSqoiQveA6LY2tzNLaOmYEFGcxXtqGMHnBSIfIVgWKzk7pbzUEk5eIKGkb+2tWHU/VmrF8EW73Pt6MTFqVzrafi/5mvbXcIdfNi90zYYJqi5K9VxjDyF5Q8mvwFblHy1/2CEUeRfG408bkNxuj6B3BwcU6nlgH9/LAPfUxeJ2MR5fKP8vJTOML0pRHuDlHVOC17r1cRGPeGyuLlAIT7l0aYvzTC4qUR3gKE/wARvL+N/BEAAA==";
75      private static final Log log = LogFactory.getLog(DbManagerUI.class);
76      private static final long serialVersionUID = 1L;
77  
78      /*-----------------------------------------------------------------------*/
79      /*--------------------------- Internal states ---------------------------*/
80      /*-----------------------------------------------------------------------*/
81  
82      protected List<Object> $activeBindings = new ArrayList<Object>();
83      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
84      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
85      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
86      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
87      private boolean allComponentsCreated;
88      protected final JAXXContext delegateContext = new DefaultJAXXContext();
89  
90      /*-----------------------------------------------------------------------*/
91      /*------------------------ Protected components  ------------------------*/
92      /*-----------------------------------------------------------------------*/
93  
94      protected JPanel actions;
95      protected TuttiHelpBroker broker;
96      protected DbManagerUI dbManagerTopPanel = this;
97      protected JButton exportDbButton;
98      protected final DbManagerUIHandler handler = createHandler();
99      protected JButton importDbButton;
100     protected JPanel infoPanel;
101     protected JTextPane informationArea;
102     protected JButton installOrReinstallDbButton;
103     protected TuttiUIContext model;
104     protected JButton openDbButton;
105     protected JButton upgradeDbButton;
106 
107     /*-----------------------------------------------------------------------*/
108     /*---------------------------- Constructors  ----------------------------*/
109     /*-----------------------------------------------------------------------*/
110 
111     public DbManagerUI(TuttiUI parentUI) {
112         TuttiUIUtil.setParentUI(this, parentUI);
113             $initialize();
114     }
115 
116     public DbManagerUI(LayoutManager param0, boolean param1) {
117         super(param0 ,param1);
118         $initialize();
119     }
120 
121     public DbManagerUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
122         super(param1 ,param2);
123         JAXXUtil.initContext(this, parentContext);
124         $initialize();
125     }
126 
127     public DbManagerUI(LayoutManager param0) {
128         super(param0);
129         $initialize();
130     }
131 
132     public DbManagerUI(JAXXContext parentContext, LayoutManager param1) {
133         super(param1);
134         JAXXUtil.initContext(this, parentContext);
135         $initialize();
136     }
137 
138     public DbManagerUI() {
139         $initialize();
140     }
141 
142     public DbManagerUI(JAXXContext parentContext) {
143         JAXXUtil.initContext(this, parentContext);
144         $initialize();
145     }
146 
147     public DbManagerUI(boolean param0) {
148         super(param0);
149         $initialize();
150     }
151 
152     public DbManagerUI(JAXXContext parentContext, boolean param1) {
153         super(param1);
154         JAXXUtil.initContext(this, parentContext);
155         $initialize();
156     }
157 
158     /*-----------------------------------------------------------------------*/
159     /*--------------------------- Statics methods ---------------------------*/
160     /*-----------------------------------------------------------------------*/
161 
162     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
163         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
164     }
165 
166     /*-----------------------------------------------------------------------*/
167     /*---------------------- JAXXObject implementation ----------------------*/
168     /*-----------------------------------------------------------------------*/
169 
170     @Override
171     public void applyDataBinding(String $binding) {
172         if (allComponentsCreated && $bindings.containsKey($binding)) {
173             getDataBinding($binding).applyDataBinding();
174         }
175         processDataBinding($binding);
176     }
177 
178     @Override
179     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
180         super.firePropertyChange(propertyName, oldValue, newValue);
181     }
182 
183     @Override
184     public Map<String, Object> get$objectMap() {
185         return $objectMap;
186     }
187 
188     @Override
189     public JAXXBinding getDataBinding(String bindingId) {
190         return $bindings.get(bindingId);
191     }
192 
193     @Override
194     public JAXXBinding[] getDataBindings() {
195         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
196     }
197 
198     @Override
199     public Object getObjectById(String id) {
200         return $objectMap.get(id);
201     }
202 
203     @Override
204     public void processDataBinding(String $binding, boolean $force) {
205         if (!$force && $activeBindings.contains($binding)) { 
206             return;
207         }
208         $activeBindings.add($binding);
209         try {
210             if (allComponentsCreated && $bindings.containsKey($binding)) {
211                 getDataBinding($binding).processDataBinding();
212             }
213         } finally {
214             $activeBindings.remove($binding);
215         }
216     }
217 
218     @Override
219     public void processDataBinding(String $binding) {
220         processDataBinding($binding, false);
221     }
222 
223     @Override
224     public void registerDataBinding(JAXXBinding binding) {
225         $bindings.put(binding.getId(), binding);
226     }
227 
228     @Override
229     public void removeDataBinding(String $binding) {
230         if (allComponentsCreated && $bindings.containsKey($binding)) {
231             getDataBinding($binding).removeDataBinding();
232         }
233     }
234 
235     /*-----------------------------------------------------------------------*/
236     /*--------------------- JAXXContext implementation  ---------------------*/
237     /*-----------------------------------------------------------------------*/
238 
239     @Override
240     public <T> T getContextValue(Class<T> clazz) {
241         return delegateContext.getContextValue(clazz, null);
242     }
243 
244     @Override
245     public <T> T getContextValue(Class<T> clazz, String name) {
246         return delegateContext.getContextValue(clazz, name);
247     }
248 
249     @Override
250     public JAXXContext getDelegateContext() {
251         return delegateContext;
252     }
253 
254     @Override
255     public <O extends Container> O getParentContainer(Class<O> clazz) {
256         return SwingUtil.getParentContainer(this, clazz);
257     }
258 
259     @Override
260     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
261         return SwingUtil.getParentContainer(source, clazz);
262     }
263 
264     @Override
265     public <T> void removeContextValue(Class<T> clazz) {
266         delegateContext.removeContextValue(clazz, null);
267     }
268 
269     @Override
270     public <T> void removeContextValue(Class<T> clazz, String name) {
271         delegateContext.removeContextValue(clazz, name);
272     }
273 
274     @Override
275     public <T> void setContextValue(T o) {
276         delegateContext.setContextValue(o, null);
277     }
278 
279     @Override
280     public <T> void setContextValue(T o, String name) {
281         delegateContext.setContextValue(o, name);
282     }
283 
284     /*-----------------------------------------------------------------------*/
285     /*----------------------- Public acessor methods  -----------------------*/
286     /*-----------------------------------------------------------------------*/
287 
288     public JPanel getActions() {
289         return actions;
290     }
291 
292     public TuttiHelpBroker getBroker() {
293         return broker;
294     }
295 
296     public JButton getExportDbButton() {
297         return exportDbButton;
298     }
299 
300     public DbManagerUIHandler getHandler() {
301         return handler;
302     }
303 
304     public JButton getImportDbButton() {
305         return importDbButton;
306     }
307 
308     public JPanel getInfoPanel() {
309         return infoPanel;
310     }
311 
312     public JTextPane getInformationArea() {
313         return informationArea;
314     }
315 
316     public JButton getInstallOrReinstallDbButton() {
317         return installOrReinstallDbButton;
318     }
319 
320     public TuttiUIContext getModel() {
321         return model;
322     }
323 
324     public JButton getOpenDbButton() {
325         return openDbButton;
326     }
327 
328     public JButton getUpgradeDbButton() {
329         return upgradeDbButton;
330     }
331 
332     /*-----------------------------------------------------------------------*/
333     /*---------------------------- Other methods ----------------------------*/
334     /*-----------------------------------------------------------------------*/
335 
336     @Override
337     public void registerHelpId(TuttiHelpBroker broker, Component component, String helpId) {
338         broker.installUI(component, helpId);
339     }
340 
341     @Override
342     public void showHelp(String helpId) {
343         getBroker().showHelp(this, helpId);
344     }
345 
346     /*-----------------------------------------------------------------------*/
347     /*--------------------- Components creation methods ---------------------*/
348     /*-----------------------------------------------------------------------*/
349 
350     protected void addChildrenToActions() {
351         if (!allComponentsCreated) {
352             return;
353         }
354         actions.add(openDbButton);
355         actions.add(installOrReinstallDbButton);
356         actions.add(importDbButton);
357         actions.add(upgradeDbButton);
358         actions.add(exportDbButton);
359     }
360 
361     protected void addChildrenToDbManagerTopPanel() {
362         if (!allComponentsCreated) {
363             return;
364         }
365         add(infoPanel, BorderLayout.CENTER);
366         add(actions, BorderLayout.SOUTH);
367     }
368 
369     protected void addChildrenToInfoPanel() {
370         if (!allComponentsCreated) {
371             return;
372         }
373         infoPanel.add(informationArea, BorderLayout.CENTER);
374     }
375 
376     protected void createActions() {
377         $objectMap.put("actions", actions = new JPanel());
378         
379         actions.setName("actions");
380         actions.setLayout(new GridLayout(0, 1));
381     }
382 
383     protected void createBroker() {
384         $objectMap.put("broker", broker = new TuttiHelpBroker("tutti.dbManager.help"));
385     }
386 
387     protected void createExportDbButton() {
388         $objectMap.put("exportDbButton", exportDbButton = new JButton());
389         
390         exportDbButton.setName("exportDbButton");
391         exportDbButton.setText(t("tutti.dbManager.action.exportDb"));
392         exportDbButton.setToolTipText(t("tutti.dbManager.action.exportDb.tip"));
393         exportDbButton.putClientProperty("help", "tutti.dbManager.action.exportDb.help");
394         exportDbButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.db.actions.ExportDbAction.class);
395     }
396 
397     protected DbManagerUIHandler createHandler() {
398         return new DbManagerUIHandler();
399     }
400 
401     protected void createImportDbButton() {
402         $objectMap.put("importDbButton", importDbButton = new JButton());
403         
404         importDbButton.setName("importDbButton");
405         importDbButton.setText(t("tutti.dbManager.action.importDb"));
406         importDbButton.setToolTipText(t("tutti.dbManager.action.importDb.tip"));
407         importDbButton.putClientProperty("help", "tutti.dbManager.action.importDb.help");
408         importDbButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.db.actions.ImportOrReimportDbAction.class);
409     }
410 
411     protected void createInfoPanel() {
412         $objectMap.put("infoPanel", infoPanel = new JPanel());
413         
414         infoPanel.setName("infoPanel");
415         infoPanel.setLayout(new BorderLayout());
416     }
417 
418     protected void createInformationArea() {
419         $objectMap.put("informationArea", informationArea = new JTextPane());
420         
421         informationArea.setName("informationArea");
422         informationArea.setEditable(false);
423         informationArea.setFocusable(false);
424         informationArea.setContentType("text/html");
425     }
426 
427     protected void createInstallOrReinstallDbButton() {
428         $objectMap.put("installOrReinstallDbButton", installOrReinstallDbButton = new JButton());
429         
430         installOrReinstallDbButton.setName("installOrReinstallDbButton");
431         installOrReinstallDbButton.putClientProperty("help", "tutti.dbManager.action.installDb.help");
432         installOrReinstallDbButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.db.actions.InstallOrReinstallDbAction.class);
433     }
434 
435     protected void createModel() {
436         $objectMap.put("model", model = getContextValue(TuttiUIContext.class));
437     }
438 
439     protected void createOpenDbButton() {
440         $objectMap.put("openDbButton", openDbButton = new JButton());
441         
442         openDbButton.setName("openDbButton");
443         openDbButton.setText(t("tutti.dbManager.action.openDb"));
444         openDbButton.setToolTipText(t("tutti.dbManager.action.openDb.tip"));
445         SwingUtil.setComponentHeight(openDbButton,50);
446         openDbButton.putClientProperty("help", "tutti.dbManager.action.openDb.help");
447         openDbButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.db.actions.OpenDbAction.class);
448     }
449 
450     protected void createUpgradeDbButton() {
451         $objectMap.put("upgradeDbButton", upgradeDbButton = new JButton());
452         
453         upgradeDbButton.setName("upgradeDbButton");
454         upgradeDbButton.setText(t("tutti.dbManager.action.upgradeDb"));
455         upgradeDbButton.setToolTipText(t("tutti.dbManager.action.upgradeDb.tip"));
456         upgradeDbButton.putClientProperty("help", "tutti.dbManager.action.upgradeDb.help");
457         upgradeDbButton.putClientProperty("applicationAction", fr.ifremer.tutti.ui.swing.content.db.actions.UpdateDbAction.class);
458     }
459 
460     /*-----------------------------------------------------------------------*/
461     /*------------------------ Internal jaxx methods ------------------------*/
462     /*-----------------------------------------------------------------------*/
463 
464     private void $completeSetup() {
465         allComponentsCreated = true;
466         if (log.isDebugEnabled()) {
467             log.debug(this);
468         }
469         addChildrenToDbManagerTopPanel();
470         addChildrenToInfoPanel();
471         addChildrenToActions();
472         
473         // apply 5 data bindings
474         JAXXUtil.applyDataBinding(this, $bindings.keySet());
475         
476         // apply 14 property setters
477         informationArea.setBorder(new EmptyBorder(5, 5, 5, 5));
478         openDbButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.dbManager.action.openDb.mnemonic"),'Z'));
479         openDbButton.setIcon(SwingUtil.createActionIcon("open-db"));
480         installOrReinstallDbButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.dbManager.action.installDb.mnemonic"),'Z'));
481         installOrReinstallDbButton.setIcon(SwingUtil.createActionIcon("install-db"));
482         importDbButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.dbManager.action.importDb.mnemonic"),'Z'));
483         importDbButton.setIcon(SwingUtil.createActionIcon("import-db"));
484         upgradeDbButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.dbManager.action.upgradeDb.mnemonic"),'Z'));
485         upgradeDbButton.setIcon(SwingUtil.createActionIcon("update-referential"));
486         exportDbButton.setMnemonic(SwingUtil.getFirstCharAt(t("tutti.dbManager.action.exportDb.mnemonic"),'Z'));
487         exportDbButton.setIcon(SwingUtil.createActionIcon("export-db"));
488         // late initializer
489         // help broker setup
490         TuttiHelpBroker _broker = getBroker();
491         registerHelpId(_broker, dbManagerTopPanel, "tutti.dbManager.help");
492         registerHelpId(_broker, openDbButton, "tutti.dbManager.action.openDb.help");
493         registerHelpId(_broker, installOrReinstallDbButton, "tutti.dbManager.action.installDb.help");
494         registerHelpId(_broker, importDbButton, "tutti.dbManager.action.importDb.help");
495         registerHelpId(_broker, upgradeDbButton, "tutti.dbManager.action.upgradeDb.help");
496         registerHelpId(_broker, exportDbButton, "tutti.dbManager.action.exportDb.help");
497         _broker.prepareUI(this);
498     }
499 
500     private void $initialize() {
501         if (allComponentsCreated) {
502             return;
503         }
504         if (log.isDebugEnabled()) {
505             log.debug(this);
506         }
507         handler.beforeInit(this);
508         $objectMap.put("dbManagerTopPanel", dbManagerTopPanel);
509         createModel();
510         createBroker();
511         createInfoPanel();
512         createInformationArea();
513         createActions();
514         createOpenDbButton();
515         createInstallOrReinstallDbButton();
516         createImportDbButton();
517         createUpgradeDbButton();
518         createExportDbButton();
519         // inline creation of dbManagerTopPanel
520         setName("dbManagerTopPanel");
521         setLayout(new BorderLayout());
522         dbManagerTopPanel.putClientProperty("help", "tutti.dbManager.help");
523         
524         // registers 5 data bindings
525         $registerDefaultBindings();
526         $completeSetup();
527         handler.afterInit(this);
528     }
529 
530     private void $registerDefaultBindings() {
531         // register 5 data bindings
532         registerDataBinding(new DefaultJAXXBinding(this, BINDING_OPEN_DB_BUTTON_VISIBLE, true, true) {
533         
534             @Override
535             public void applyDataBinding() {
536                 if (model != null) {
537                     model.addPropertyChangeListener("dbExist", this);
538                 }
539                 if (model != null) {
540                     model.addPropertyChangeListener("dbLoaded", this);
541                 }
542             }
543         
544             @Override
545             public void processDataBinding() {
546                 if (model != null) {
547                     openDbButton.setVisible(model.isDbExist() && !model.isDbLoaded());
548                 }
549             }
550         
551             @Override
552             public void removeDataBinding() {
553                 if (model != null) {
554                     model.removePropertyChangeListener("dbExist", this);
555                 }
556                 if (model != null) {
557                     model.removePropertyChangeListener("dbLoaded", this);
558                 }
559             }
560         });
561         registerDataBinding(new DefaultJAXXBinding(this, BINDING_INSTALL_OR_REINSTALL_DB_BUTTON_TEXT, true) {
562         
563             @Override
564             public void applyDataBinding() {
565                 if (model != null) {
566                     model.addPropertyChangeListener("dbExist", this);
567                 }
568             }
569         
570             @Override
571             public void processDataBinding() {
572                 if (model != null) {
573                     installOrReinstallDbButton.setText(t(handler.getInstallButtonText(model.isDbExist())));
574                 }
575             }
576         
577             @Override
578             public void removeDataBinding() {
579                 if (model != null) {
580                     model.removePropertyChangeListener("dbExist", this);
581                 }
582             }
583         });
584         registerDataBinding(new DefaultJAXXBinding(this, BINDING_INSTALL_OR_REINSTALL_DB_BUTTON_TOOL_TIP_TEXT, true) {
585         
586             @Override
587             public void applyDataBinding() {
588                 if (model != null) {
589                     model.addPropertyChangeListener("dbExist", this);
590                 }
591             }
592         
593             @Override
594             public void processDataBinding() {
595                 if (model != null) {
596                     installOrReinstallDbButton.setToolTipText(t(handler.getInstallButtonTip(model.isDbExist())));
597                 }
598             }
599         
600             @Override
601             public void removeDataBinding() {
602                 if (model != null) {
603                     model.removePropertyChangeListener("dbExist", this);
604                 }
605             }
606         });
607         registerDataBinding(new DefaultJAXXBinding(this, BINDING_UPGRADE_DB_BUTTON_VISIBLE, true) {
608         
609             @Override
610             public void applyDataBinding() {
611                 if (model != null) {
612                     model.addPropertyChangeListener("dbLoaded", this);
613                 }
614             }
615         
616             @Override
617             public void processDataBinding() {
618                 if (model != null) {
619                     upgradeDbButton.setVisible(model.isDbLoaded());
620                 }
621             }
622         
623             @Override
624             public void removeDataBinding() {
625                 if (model != null) {
626                     model.removePropertyChangeListener("dbLoaded", this);
627                 }
628             }
629         });
630         registerDataBinding(new DefaultJAXXBinding(this, BINDING_EXPORT_DB_BUTTON_VISIBLE, true) {
631         
632             @Override
633             public void applyDataBinding() {
634                 if (model != null) {
635                     model.addPropertyChangeListener("dbLoaded", this);
636                 }
637             }
638         
639             @Override
640             public void processDataBinding() {
641                 if (model != null) {
642                     exportDbButton.setVisible(model.isDbLoaded());
643                 }
644             }
645         
646             @Override
647             public void removeDataBinding() {
648                 if (model != null) {
649                     model.removePropertyChangeListener("dbLoaded", this);
650                 }
651             }
652         });
653     }
654 
655 }