View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.synchro.changes.duplicate;
2   
3   /*-
4    * #%L
5    * Reef DB :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2022 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (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 Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  
27  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
28  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
29  import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
30  import fr.ifremer.reefdb.dto.system.synchronization.SynchroTableDTO;
31  import fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker;
32  import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
33  import fr.ifremer.reefdb.ui.swing.util.ReefDbUI;
34  import java.awt.BorderLayout;
35  import java.awt.Component;
36  import java.awt.Container;
37  import java.awt.Dialog;
38  import java.awt.Dialog.ModalityType;
39  import java.awt.FlowLayout;
40  import java.awt.Frame;
41  import java.awt.GraphicsConfiguration;
42  import java.awt.GridBagConstraints;
43  import java.awt.GridLayout;
44  import java.awt.Insets;
45  import java.awt.Window;
46  import java.awt.event.ActionEvent;
47  import java.awt.event.ActionListener;
48  import java.util.ArrayList;
49  import java.util.HashMap;
50  import java.util.List;
51  import java.util.Map;
52  import java.util.TreeMap;
53  import javax.swing.BorderFactory;
54  import javax.swing.Box;
55  import javax.swing.BoxLayout;
56  import javax.swing.JButton;
57  import javax.swing.JDialog;
58  import javax.swing.JLabel;
59  import javax.swing.JList;
60  import javax.swing.JPanel;
61  import javax.swing.JScrollPane;
62  import jaxx.runtime.JAXXBinding;
63  import jaxx.runtime.JAXXContext;
64  import jaxx.runtime.JAXXObject;
65  import jaxx.runtime.JAXXObjectDescriptor;
66  import jaxx.runtime.JAXXUtil;
67  import jaxx.runtime.SwingUtil;
68  import jaxx.runtime.context.DefaultJAXXContext;
69  import jaxx.runtime.swing.Table;
70  import jaxx.runtime.swing.help.JAXXHelpUI;
71  import org.apache.commons.logging.Log;
72  import org.apache.commons.logging.LogFactory;
73  import static org.nuiton.i18n.I18n.t;
74  
75  public class SynchroDuplicatesUI extends JDialog implements JAXXHelpUI<ReefDbHelpBroker>, ReefDbUI<SynchroDuplicatesUIModel, SynchroDuplicatesUIHandler>, JAXXObject {
76  
77      /*-----------------------------------------------------------------------*/
78      /*------------------------- Other static fields -------------------------*/
79      /*-----------------------------------------------------------------------*/
80  
81      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAL1Wz28bRRSeuLUTOy2FpE0LFJq0OfSXxqmqSkhBtCRplEQOVDWVInzpeHdsT9md2c7MJmshEGe48CeUIxIXJG6cEAfOHLgg/gWEOHBFfTO72fXW68SSqybSaj3vve9975vZb/eHv1FZSbT0hEQRliHXzKd458O9vY/bT6ijN6hyJAu0kCj+myqhUgvNuum60uhKq2HK60l5fV34geCUD1SvNlBN6b5HVY9SrdE7+QpHqXozDa9GQSgPUVNSRajP/v2n9K371XclhKIA2M3BKIvHVWWTnGygEnM1moNO+6TuEd4FGpLxLvA9bdbWPaLUR8SnT9GXaLqBKgGRAKbR5fFHthi2Pgo0mld97vSk2AgDjzlEU/VoW6MHHYlZR1KfSiwp7bhtHDKsDoAKdgTXgIyTQuz0gCdV2D1EwM1hyCCwLSsalX3hUk+jRy+7xa7BzfpU2lJ8RqVGN45o9BB+b7S3oG7NZmfl08ufkLZHVzS6kNvAuM7GTGY1LThFo8AjjD8g3Iw3Z7YrStJ37KJJnBvKb5D2cL5dNInnsvxEhDT0Vj5+VvXEQabHWqg1qIjmc7jxar6wps0wKcPzeZqnl3eajhSeZxJAjfM5vCxk0hezTbaYGuEB7Z+GxJWsS29n8tss3DT3qaKXU5BqD/YlP27WYZZ1uZAjaSfhfPX1NHwmDm8NNchSZpbjXVtJ0Qf22iHcod6aCBM1L5nLSiYaHOAOk/5wgkRv544TOA3OnCazgqkWKssQluH8tYbN6SGEYlu68IItGUAb/X9h/o+f//ppc9CLzhWmDlgpeEQgRQCPDTOtz8RGFGrm1XdJsNpCVUU98GHrsxcLiDWTMJCDfm+YcmzK8RZRPYAoT//5y68Lj38/gUqbqOYJ4m4Sk7+NqronQQXhuVFw955ldOpgBq6vG27mSDFtjtSl5Bk+9IbUExS2GRGIcrFAlJRZu/rbf/PNH+8dCjMFRN8cmZ6JU/4UVRj3GKfWphMHLrTl2UDR0BWZ0xZ5Lyo23yDxoFV7vVskRaUtpGus7frna/Yu1rCPHUkB5L4f6H4cuHrnpv2/9kUUGrh1O6+5u49esKwx+p7UNIJ3zdLoHfCpUqRLj2pmn7fxm707upkxvKJOhU44RsfpfaaYta1yh3iqcIoBs3wpMxiLK+qTed8rPA+Dnnpc2xOwo+zWe3yXU19w5sA3VDKlI3xYwQy+QKTGfhqvASkm+LZ5uaOZfeIxF8ilIp0tKi9imTfXiXnGVj6KZyUOj2IZRwuP++ArYpw99EgfcjV67X2QhSy2GXfhtfjBEPaUudaORTTLX5vLN8UICxMjLE2McGNihFtjKFuDk9blPnxP7h2BdHssLs+OQLgzjiEwJ/4emIjF98eweA5mNLVaRQ0AAA==";
82      private static final Log log = LogFactory.getLog(SynchroDuplicatesUI.class);
83      private static final long serialVersionUID = 1L;
84  
85      /*-----------------------------------------------------------------------*/
86      /*--------------------------- Internal states ---------------------------*/
87      /*-----------------------------------------------------------------------*/
88  
89      protected List<Object> $activeBindings = new ArrayList<Object>();
90      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
91      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
92      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
93      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
94      private boolean allComponentsCreated;
95      protected final JAXXContext delegateContext = new DefaultJAXXContext();
96  
97      /*-----------------------------------------------------------------------*/
98      /*------------------------ Protected components  ------------------------*/
99      /*-----------------------------------------------------------------------*/
100 
101     protected ReefDbHelpBroker broker;
102     protected JButton cancelBouton;
103     protected JLabel changesLabel;
104     protected JButton confirmBouton;
105     protected JLabel explainLabel;
106     protected JPanel explainPanel;
107     protected final SynchroDuplicatesUIHandler handler = createHandler();
108     protected JLabel helpLabel;
109     protected JLabel ignoreHelpLabel;
110     protected JLabel ignoreLabel;
111     protected JPanel ignorePanel;
112     protected SynchroDuplicatesUIModel model;
113     protected JButton showDuplicatesButton;
114     protected SynchroDuplicatesUI synchroDuplicatesUI = this;
115     protected SwingTable table;
116     protected JPanel tablePanel;
117 
118     /*-----------------------------------------------------------------------*/
119     /*------------------------- Private components  -------------------------*/
120     /*-----------------------------------------------------------------------*/
121 
122     private JPanel $JPanel0;
123     private JScrollPane $JScrollPane0;
124     private Table $Table0;
125 
126     /*-----------------------------------------------------------------------*/
127     /*---------------------------- Constructors  ----------------------------*/
128     /*-----------------------------------------------------------------------*/
129 
130     public SynchroDuplicatesUI(ApplicationUI parentUI) {
131         ApplicationUIUtil.setParentUI(this, parentUI);
132             $initialize();
133     }
134 
135     public SynchroDuplicatesUI(Frame param0, String param1, boolean param2) {
136         super(param0 ,param1 ,param2);
137         $initialize();
138     }
139 
140     public SynchroDuplicatesUI(JAXXContext parentContext, Frame param1, String param2, boolean param3) {
141         super(param1 ,param2 ,param3);
142         JAXXUtil.initContext(this, parentContext);
143         $initialize();
144     }
145 
146     public SynchroDuplicatesUI(Frame param0, String param1) {
147         super(param0 ,param1);
148         $initialize();
149     }
150 
151     public SynchroDuplicatesUI(JAXXContext parentContext, Frame param1, String param2) {
152         super(param1 ,param2);
153         JAXXUtil.initContext(this, parentContext);
154         $initialize();
155     }
156 
157     public SynchroDuplicatesUI(Frame param0, String param1, boolean param2, GraphicsConfiguration param3) {
158         super(param0 ,param1 ,param2 ,param3);
159         $initialize();
160     }
161 
162     public SynchroDuplicatesUI(JAXXContext parentContext, Frame param1, String param2, boolean param3, GraphicsConfiguration param4) {
163         super(param1 ,param2 ,param3 ,param4);
164         JAXXUtil.initContext(this, parentContext);
165         $initialize();
166     }
167 
168     public SynchroDuplicatesUI(Dialog param0) {
169         super(param0);
170         $initialize();
171     }
172 
173     public SynchroDuplicatesUI(JAXXContext parentContext, Dialog param1) {
174         super(param1);
175         JAXXUtil.initContext(this, parentContext);
176         $initialize();
177     }
178 
179     public SynchroDuplicatesUI(Frame param0, boolean param1) {
180         super(param0 ,param1);
181         $initialize();
182     }
183 
184     public SynchroDuplicatesUI(JAXXContext parentContext, Frame param1, boolean param2) {
185         super(param1 ,param2);
186         JAXXUtil.initContext(this, parentContext);
187         $initialize();
188     }
189 
190     public SynchroDuplicatesUI() {
191         $initialize();
192     }
193 
194     public SynchroDuplicatesUI(JAXXContext parentContext) {
195         JAXXUtil.initContext(this, parentContext);
196         $initialize();
197     }
198 
199     public SynchroDuplicatesUI(Frame param0) {
200         super(param0);
201         $initialize();
202     }
203 
204     public SynchroDuplicatesUI(JAXXContext parentContext, Frame param1) {
205         super(param1);
206         JAXXUtil.initContext(this, parentContext);
207         $initialize();
208     }
209 
210     public SynchroDuplicatesUI(Dialog param0, String param1, boolean param2, GraphicsConfiguration param3) {
211         super(param0 ,param1 ,param2 ,param3);
212         $initialize();
213     }
214 
215     public SynchroDuplicatesUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3, GraphicsConfiguration param4) {
216         super(param1 ,param2 ,param3 ,param4);
217         JAXXUtil.initContext(this, parentContext);
218         $initialize();
219     }
220 
221     public SynchroDuplicatesUI(Window param0) {
222         super(param0);
223         $initialize();
224     }
225 
226     public SynchroDuplicatesUI(JAXXContext parentContext, Window param1) {
227         super(param1);
228         JAXXUtil.initContext(this, parentContext);
229         $initialize();
230     }
231 
232     public SynchroDuplicatesUI(Window param0, ModalityType param1) {
233         super(param0 ,param1);
234         $initialize();
235     }
236 
237     public SynchroDuplicatesUI(JAXXContext parentContext, Window param1, ModalityType param2) {
238         super(param1 ,param2);
239         JAXXUtil.initContext(this, parentContext);
240         $initialize();
241     }
242 
243     public SynchroDuplicatesUI(Window param0, String param1) {
244         super(param0 ,param1);
245         $initialize();
246     }
247 
248     public SynchroDuplicatesUI(JAXXContext parentContext, Window param1, String param2) {
249         super(param1 ,param2);
250         JAXXUtil.initContext(this, parentContext);
251         $initialize();
252     }
253 
254     public SynchroDuplicatesUI(Window param0, String param1, ModalityType param2) {
255         super(param0 ,param1 ,param2);
256         $initialize();
257     }
258 
259     public SynchroDuplicatesUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3) {
260         super(param1 ,param2 ,param3);
261         JAXXUtil.initContext(this, parentContext);
262         $initialize();
263     }
264 
265     public SynchroDuplicatesUI(Window param0, String param1, ModalityType param2, GraphicsConfiguration param3) {
266         super(param0 ,param1 ,param2 ,param3);
267         $initialize();
268     }
269 
270     public SynchroDuplicatesUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3, GraphicsConfiguration param4) {
271         super(param1 ,param2 ,param3 ,param4);
272         JAXXUtil.initContext(this, parentContext);
273         $initialize();
274     }
275 
276     public SynchroDuplicatesUI(Dialog param0, boolean param1) {
277         super(param0 ,param1);
278         $initialize();
279     }
280 
281     public SynchroDuplicatesUI(JAXXContext parentContext, Dialog param1, boolean param2) {
282         super(param1 ,param2);
283         JAXXUtil.initContext(this, parentContext);
284         $initialize();
285     }
286 
287     public SynchroDuplicatesUI(Dialog param0, String param1) {
288         super(param0 ,param1);
289         $initialize();
290     }
291 
292     public SynchroDuplicatesUI(JAXXContext parentContext, Dialog param1, String param2) {
293         super(param1 ,param2);
294         JAXXUtil.initContext(this, parentContext);
295         $initialize();
296     }
297 
298     public SynchroDuplicatesUI(Dialog param0, String param1, boolean param2) {
299         super(param0 ,param1 ,param2);
300         $initialize();
301     }
302 
303     public SynchroDuplicatesUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3) {
304         super(param1 ,param2 ,param3);
305         JAXXUtil.initContext(this, parentContext);
306         $initialize();
307     }
308 
309     /*-----------------------------------------------------------------------*/
310     /*--------------------------- Statics methods ---------------------------*/
311     /*-----------------------------------------------------------------------*/
312 
313     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
314         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
315     }
316 
317     /*-----------------------------------------------------------------------*/
318     /*---------------------- JAXXObject implementation ----------------------*/
319     /*-----------------------------------------------------------------------*/
320 
321     @Override
322     public void applyDataBinding(String $binding) {
323         if (allComponentsCreated && $bindings.containsKey($binding)) {
324             getDataBinding($binding).applyDataBinding();
325         }
326         processDataBinding($binding);
327     }
328 
329     @Override
330     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
331         super.firePropertyChange(propertyName, oldValue, newValue);
332     }
333 
334     @Override
335     public Map<String, Object> get$objectMap() {
336         return $objectMap;
337     }
338 
339     @Override
340     public JAXXBinding getDataBinding(String bindingId) {
341         return $bindings.get(bindingId);
342     }
343 
344     @Override
345     public JAXXBinding[] getDataBindings() {
346         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
347     }
348 
349     @Override
350     public Object getObjectById(String id) {
351         return $objectMap.get(id);
352     }
353 
354     @Override
355     public void processDataBinding(String $binding, boolean $force) {
356         if (!$force && $activeBindings.contains($binding)) { 
357             return;
358         }
359         $activeBindings.add($binding);
360         try {
361             if (allComponentsCreated && $bindings.containsKey($binding)) {
362                 getDataBinding($binding).processDataBinding();
363             }
364         } finally {
365             $activeBindings.remove($binding);
366         }
367     }
368 
369     @Override
370     public void processDataBinding(String $binding) {
371         processDataBinding($binding, false);
372     }
373 
374     @Override
375     public void registerDataBinding(JAXXBinding binding) {
376         $bindings.put(binding.getId(), binding);
377     }
378 
379     @Override
380     public void removeDataBinding(String $binding) {
381         if (allComponentsCreated && $bindings.containsKey($binding)) {
382             getDataBinding($binding).removeDataBinding();
383         }
384     }
385 
386     /*-----------------------------------------------------------------------*/
387     /*--------------------- JAXXContext implementation  ---------------------*/
388     /*-----------------------------------------------------------------------*/
389 
390     @Override
391     public <T> T getContextValue(Class<T> clazz) {
392         return delegateContext.getContextValue(clazz, null);
393     }
394 
395     @Override
396     public <T> T getContextValue(Class<T> clazz, String name) {
397         return delegateContext.getContextValue(clazz, name);
398     }
399 
400     @Override
401     public JAXXContext getDelegateContext() {
402         return delegateContext;
403     }
404 
405     @Override
406     public <O extends Container> O getParentContainer(Class<O> clazz) {
407         return SwingUtil.getParentContainer(this, clazz);
408     }
409 
410     @Override
411     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
412         return SwingUtil.getParentContainer(source, clazz);
413     }
414 
415     @Override
416     public <T> void removeContextValue(Class<T> clazz) {
417         delegateContext.removeContextValue(clazz, null);
418     }
419 
420     @Override
421     public <T> void removeContextValue(Class<T> clazz, String name) {
422         delegateContext.removeContextValue(clazz, name);
423     }
424 
425     @Override
426     public <T> void setContextValue(T o) {
427         delegateContext.setContextValue(o, null);
428     }
429 
430     @Override
431     public <T> void setContextValue(T o, String name) {
432         delegateContext.setContextValue(o, name);
433     }
434 
435     /*-----------------------------------------------------------------------*/
436     /*---------------------------- Event methods ----------------------------*/
437     /*-----------------------------------------------------------------------*/
438 
439     public void doActionPerformed__on__cancelBouton(ActionEvent event) {
440         if (log.isDebugEnabled()) {
441             log.debug(event);
442         }
443         handler.cancel();
444     }
445 
446     public void doActionPerformed__on__confirmBouton(ActionEvent event) {
447         if (log.isDebugEnabled()) {
448             log.debug(event);
449         }
450         handler.confirm();
451     }
452 
453     public void doActionPerformed__on__showDuplicatesButton(ActionEvent event) {
454         if (log.isDebugEnabled()) {
455             log.debug(event);
456         }
457         handler.showDuplicates();
458     }
459 
460     /*-----------------------------------------------------------------------*/
461     /*----------------------- Public acessor methods  -----------------------*/
462     /*-----------------------------------------------------------------------*/
463 
464     public ReefDbHelpBroker getBroker() {
465         return broker;
466     }
467 
468     public JButton getCancelBouton() {
469         return cancelBouton;
470     }
471 
472     public JLabel getChangesLabel() {
473         return changesLabel;
474     }
475 
476     public JButton getConfirmBouton() {
477         return confirmBouton;
478     }
479 
480     public JLabel getExplainLabel() {
481         return explainLabel;
482     }
483 
484     public JPanel getExplainPanel() {
485         return explainPanel;
486     }
487 
488     public SynchroDuplicatesUIHandler getHandler() {
489         return handler;
490     }
491 
492     public JLabel getHelpLabel() {
493         return helpLabel;
494     }
495 
496     public JLabel getIgnoreHelpLabel() {
497         return ignoreHelpLabel;
498     }
499 
500     public JLabel getIgnoreLabel() {
501         return ignoreLabel;
502     }
503 
504     public JPanel getIgnorePanel() {
505         return ignorePanel;
506     }
507 
508     public SynchroDuplicatesUIModel getModel() {
509         return model;
510     }
511 
512     public JButton getShowDuplicatesButton() {
513         return showDuplicatesButton;
514     }
515 
516     public SwingTable getTable() {
517         return table;
518     }
519 
520     public JPanel getTablePanel() {
521         return tablePanel;
522     }
523 
524     /*-----------------------------------------------------------------------*/
525     /*---------------------------- Other methods ----------------------------*/
526     /*-----------------------------------------------------------------------*/
527 
528     @Override
529     public void registerHelpId(ReefDbHelpBroker broker, Component component, String helpId) {
530         broker.installUI(component, helpId);
531     }
532 
533     @Override
534     public void showHelp(String helpId) {
535         getBroker().showHelp(this, helpId);
536     }
537 
538     /*-----------------------------------------------------------------------*/
539     /*--------------------- Protected acessors methods  ---------------------*/
540     /*-----------------------------------------------------------------------*/
541 
542     protected JPanel get$JPanel0() {
543         return $JPanel0;
544     }
545 
546     protected JScrollPane get$JScrollPane0() {
547         return $JScrollPane0;
548     }
549 
550     protected Table get$Table0() {
551         return $Table0;
552     }
553 
554     /*-----------------------------------------------------------------------*/
555     /*--------------------- Components creation methods ---------------------*/
556     /*-----------------------------------------------------------------------*/
557 
558     protected void addChildrenToExplainPanel() {
559         if (!allComponentsCreated) {
560             return;
561         }
562         explainPanel.add(explainLabel);
563         explainPanel.add(changesLabel);
564         explainPanel.add(showDuplicatesButton);
565     }
566 
567     protected void addChildrenToIgnorePanel() {
568         if (!allComponentsCreated) {
569             return;
570         }
571         ignorePanel.add(ignoreLabel);
572         ignorePanel.add(ignoreHelpLabel);
573     }
574 
575     protected void addChildrenToSynchroDuplicatesUI() {
576         if (!allComponentsCreated) {
577             return;
578         }
579         add($Table0);
580         add($JPanel0, BorderLayout.PAGE_END);
581     }
582 
583     protected void addChildrenToTablePanel() {
584         if (!allComponentsCreated) {
585             return;
586         }
587         tablePanel.add($JScrollPane0);
588         tablePanel.add(helpLabel, BorderLayout.PAGE_END);
589     }
590 
591     protected void createBroker() {
592         $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
593     }
594 
595     protected void createCancelBouton() {
596         $objectMap.put("cancelBouton", cancelBouton = new JButton());
597         
598         cancelBouton.setName("cancelBouton");
599         cancelBouton.setText(t("reefdb.common.cancel"));
600         cancelBouton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__cancelBouton"));
601     }
602 
603     protected void createChangesLabel() {
604         $objectMap.put("changesLabel", changesLabel = new JLabel());
605         
606         changesLabel.setName("changesLabel");
607     }
608 
609     protected void createConfirmBouton() {
610         $objectMap.put("confirmBouton", confirmBouton = new JButton());
611         
612         confirmBouton.setName("confirmBouton");
613         confirmBouton.setText(t("reefdb.common.import"));
614         confirmBouton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__confirmBouton"));
615     }
616 
617     protected void createExplainLabel() {
618         $objectMap.put("explainLabel", explainLabel = new JLabel());
619         
620         explainLabel.setName("explainLabel");
621         explainLabel.setText(t("reefdb.synchro.duplicates.message"));
622     }
623 
624     protected void createExplainPanel() {
625         $objectMap.put("explainPanel", explainPanel = new JPanel());
626         
627         explainPanel.setName("explainPanel");
628         explainPanel.setLayout(new BoxLayout(explainPanel, BoxLayout.PAGE_AXIS));
629     }
630 
631     protected SynchroDuplicatesUIHandler createHandler() {
632         return new SynchroDuplicatesUIHandler();
633     }
634 
635     protected void createHelpLabel() {
636         $objectMap.put("helpLabel", helpLabel = new JLabel());
637         
638         helpLabel.setName("helpLabel");
639         helpLabel.setText(t("reefdb.synchro.duplicates.help"));
640     }
641 
642     protected void createIgnoreHelpLabel() {
643         $objectMap.put("ignoreHelpLabel", ignoreHelpLabel = new JLabel());
644         
645         ignoreHelpLabel.setName("ignoreHelpLabel");
646     }
647 
648     protected void createIgnoreLabel() {
649         $objectMap.put("ignoreLabel", ignoreLabel = new JLabel());
650         
651         ignoreLabel.setName("ignoreLabel");
652     }
653 
654     protected void createIgnorePanel() {
655         $objectMap.put("ignorePanel", ignorePanel = new JPanel());
656         
657         ignorePanel.setName("ignorePanel");
658         ignorePanel.setLayout(new BoxLayout(ignorePanel, BoxLayout.PAGE_AXIS));
659     }
660 
661     protected void createModel() {
662         $objectMap.put("model", model = getContextValue(SynchroDuplicatesUIModel.class));
663     }
664 
665     protected void createShowDuplicatesButton() {
666         $objectMap.put("showDuplicatesButton", showDuplicatesButton = new JButton());
667         
668         showDuplicatesButton.setName("showDuplicatesButton");
669         showDuplicatesButton.setText(t("reefdb.synchro.duplicates.show"));
670         showDuplicatesButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__showDuplicatesButton"));
671     }
672 
673     protected void createTable() {
674         $objectMap.put("table", table = new SwingTable());
675         
676         table.setName("table");
677     }
678 
679     protected void createTablePanel() {
680         $objectMap.put("tablePanel", tablePanel = new JPanel());
681         
682         tablePanel.setName("tablePanel");
683         tablePanel.setLayout(new BorderLayout());
684         tablePanel.setVisible(false);
685     }
686 
687     /*-----------------------------------------------------------------------*/
688     /*------------------------ Internal jaxx methods ------------------------*/
689     /*-----------------------------------------------------------------------*/
690 
691     private void $completeSetup() {
692         allComponentsCreated = true;
693         if (log.isDebugEnabled()) {
694             log.debug(this);
695         }
696         addChildrenToSynchroDuplicatesUI();
697         // inline complete setup of $Table0
698         $Table0.add(explainPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
699         $Table0.add(tablePanel, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
700         $Table0.add(ignorePanel, new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
701         addChildrenToExplainPanel();
702         addChildrenToTablePanel();
703         // inline complete setup of $JScrollPane0
704         $JScrollPane0.getViewport().add(table);
705         addChildrenToIgnorePanel();
706         // inline complete setup of $JPanel0
707         $JPanel0.add(cancelBouton);
708         $JPanel0.add(confirmBouton);
709         
710         // apply 13 property setters
711         cancelBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
712         confirmBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
713         explainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
714         ignorePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
715         cancelBouton.setMnemonic(SwingUtil.getFirstCharAt(t("reefdb.common.cancel.mnemonic"),'Z'));
716         cancelBouton.setIcon(SwingUtil.createActionIcon("cancel"));
717         confirmBouton.setMnemonic(SwingUtil.getFirstCharAt(t("reefdb.common.import.mnemonic"),'Z'));
718         confirmBouton.setIcon(SwingUtil.createActionIcon("validate"));
719         // late initializer
720         synchroDuplicatesUI.pack();
721     }
722 
723     private void $initialize() {
724         if (allComponentsCreated) {
725             return;
726         }
727         if (log.isDebugEnabled()) {
728             log.debug(this);
729         }
730         handler.beforeInit(this);
731         $objectMap.put("synchroDuplicatesUI", synchroDuplicatesUI);
732         createModel();
733         createBroker();
734         // inline creation of $Table0
735         $objectMap.put("$Table0", $Table0 = new Table());
736         
737         $Table0.setName("$Table0");
738         createExplainPanel();
739         createExplainLabel();
740         createChangesLabel();
741         createShowDuplicatesButton();
742         createTablePanel();
743         // inline creation of $JScrollPane0
744         $objectMap.put("$JScrollPane0", $JScrollPane0 = new JScrollPane());
745         
746         $JScrollPane0.setName("$JScrollPane0");
747         createTable();
748         createHelpLabel();
749         createIgnorePanel();
750         createIgnoreLabel();
751         createIgnoreHelpLabel();
752         // inline creation of $JPanel0
753         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
754         
755         $JPanel0.setName("$JPanel0");
756         $JPanel0.setLayout(new GridLayout(1,0));
757         createCancelBouton();
758         createConfirmBouton();
759         // inline creation of synchroDuplicatesUI
760         setName("synchroDuplicatesUI");
761         synchroDuplicatesUI.getContentPane().setLayout(new BorderLayout());
762         setTitle(t("reefdb.synchro.duplicates.title"));
763         
764         $completeSetup();
765         handler.afterInit(this);
766     }
767 
768 }