View Javadoc
1   package fr.ifremer.dali.ui.swing.content.synchro.changes;
2   
3   import fr.ifremer.dali.dto.system.synchronization.SynchroTableDTO;
4   import fr.ifremer.dali.ui.swing.DaliHelpBroker;
5   import fr.ifremer.dali.ui.swing.DaliUIContext;
6   import fr.ifremer.dali.ui.swing.util.DaliUI;
7   import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
8   import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
9   import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
10  import java.awt.BorderLayout;
11  import java.awt.Component;
12  import java.awt.Container;
13  import java.awt.GridLayout;
14  import java.awt.LayoutManager;
15  import java.awt.event.ActionEvent;
16  import java.awt.event.ActionListener;
17  import java.util.ArrayList;
18  import java.util.HashMap;
19  import java.util.List;
20  import java.util.Map;
21  import java.util.TreeMap;
22  import javax.swing.Box;
23  import javax.swing.BoxLayout;
24  import javax.swing.JButton;
25  import javax.swing.JLabel;
26  import javax.swing.JList;
27  import javax.swing.JPanel;
28  import javax.swing.JScrollPane;
29  import jaxx.runtime.JAXXBinding;
30  import jaxx.runtime.JAXXContext;
31  import jaxx.runtime.JAXXObject;
32  import jaxx.runtime.JAXXObjectDescriptor;
33  import jaxx.runtime.JAXXUtil;
34  import jaxx.runtime.SwingUtil;
35  import jaxx.runtime.context.DefaultJAXXContext;
36  import jaxx.runtime.swing.help.JAXXHelpUI;
37  import org.apache.commons.logging.Log;
38  import org.apache.commons.logging.LogFactory;
39  import static org.nuiton.i18n.I18n.t;
40  
41  public class SynchroChangesUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<SynchroChangesUIModel, SynchroChangesUIHandler>, JAXXObject {
42  
43      /*-----------------------------------------------------------------------*/
44      /*------------------------- Other static fields -------------------------*/
45      /*-----------------------------------------------------------------------*/
46  
47      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAKVVz28bRRR+cWs3dpI2JDRt1VQqtKgIxJjSA0jhR5tUVhM5UOEiRfjCeHdiT5md3c7MtmsQCIl/gD8B7lyQuHFCHDhz4IL4FxDiwBXxZtbZ9dqbxJJ9GO2+ed/3vvf2vefv/4KqVvDCY5okRMXS8ICRvXsHBx/0HjPP3GfaUzwyoYL0t1CBSheW/MyuDdzoti28OYI3d8IgCiWTY+itNjS0GQqmB4wZA9eKCE/rZie73kqiWB2xZqLKWL/95+/KN/5X31UAkgjVncdUrp+GyjM524YK9w2sYaSntCmo7KMMxWUf9a5Y246gWr9PA/YEvoRzbahFVCGZgRdnT9lxOHwSGVjVQ+kNVLgzwGhMf7Rr4N6hIvxQsYAp4lPBScyJfoYqiBdKg6RkhCFeCiKdCY4ocgFqBqpB6DNhoDU3574lyolrPRV+ypSBW8cy38e3B4jZdp45dJklkaBctmnPSluzhU1GmD1ntI71zH/x5t5DKpl4fdLXWYu+FzAVboaPhhHLmJ63x8XM5fyYC9f47Z4rCkBbEbBkaE+wh6Mvfang3fFUKIQVUtRRdRgDZKw6T2LqK95nd/ISOS/Ssc+P7KNFX5tK/LZ9v1QMUB9gZYsp3pgCvpEB87tlj0qPie0wNvjlYb2QznZs0Go9b2WAFeyQQ66CFGGNr44cFFwtDBeOLcnHNp+rhS5UVYxmA5e705P+IV6lM355YsYtobv9b2P995/+/LF1NNgrGPtiqevYXsKBi1QYYZNyG/pCOtWx4aK5T6OtLtQ1E7jU3NLaLBHWGV2jOIzn2oRYOHlA9QApquf++PmXjU9+OwOVFjRESP0Wtf67UDcDhVUIhZ9E7911ipafLeK5arUZOGtYgr206QZmcvICpjXtswQLsllSkExVr/7rv+udH+4eFWUBRV451j0vTPVjqHEpuGRu341WWel+W4o0i/0wX1llSwwmRjoajfodd755Qv5XSvO3nZ3EFrvlsrJP78B4y58WoYIjIKxjK8QNtfp5ceK/yOK/VBo/9yaOpEzLaM9YupkUncEa8dtvyX3JglByz8BVF9sLA3wnHP8ulCFBdtvARuKh3LXbGRafoqtPDcuEr02Dy1QWR3dOjeneOE5jLb0uV5jelSksbKMZGqcm6BB9cYu/jQWh13tc+ri53p3iXrBn41RGax7Yg5czbMzNcHNuhpdnqEsDq92XAXblwQlMr8yk5bMTGF6bZbi5l/5PzKXi61NU/A99oO0LqgoAAA==";
48      private static final Log log = LogFactory.getLog(SynchroChangesUI.class);
49      private static final long serialVersionUID = 1L;
50  
51      /*-----------------------------------------------------------------------*/
52      /*--------------------------- Internal states ---------------------------*/
53      /*-----------------------------------------------------------------------*/
54  
55      protected List<Object> $activeBindings = new ArrayList<Object>();
56      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
57      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
58      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
59      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
60      private boolean allComponentsCreated;
61      protected final JAXXContext delegateContext = new DefaultJAXXContext();
62  
63      /*-----------------------------------------------------------------------*/
64      /*------------------------ Protected components  ------------------------*/
65      /*-----------------------------------------------------------------------*/
66  
67      protected DaliHelpBroker broker;
68      protected JButton cancelBouton;
69      protected JButton confirmBouton;
70      protected JLabel entityTypeLabel;
71      protected JList<SynchroTableDTO> entityTypeList;
72      protected JLabel explainLabel;
73      protected final SynchroChangesUIHandler handler = createHandler();
74      protected JLabel helpLabel;
75      protected SynchroChangesUIModel model;
76      protected SynchroChangesUI synchroChangesUI = this;
77      protected SwingTable table;
78      protected JScrollPane tableParent;
79  
80      /*-----------------------------------------------------------------------*/
81      /*------------------------- Private components  -------------------------*/
82      /*-----------------------------------------------------------------------*/
83  
84      private JPanel $JPanel0;
85      private JPanel $JPanel1;
86      private JPanel $JPanel2;
87  
88      /*-----------------------------------------------------------------------*/
89      /*---------------------------- Constructors  ----------------------------*/
90      /*-----------------------------------------------------------------------*/
91  
92      public SynchroChangesUI(ApplicationUI parentUI) {
93          ApplicationUIUtil.setParentUI(this, parentUI);
94              $initialize();
95      }
96  
97      public SynchroChangesUI() {
98          $initialize();
99      }
100 
101     public SynchroChangesUI(JAXXContext parentContext) {
102         JAXXUtil.initContext(this, parentContext);
103         $initialize();
104     }
105 
106     public SynchroChangesUI(boolean param0) {
107         super(param0);
108         $initialize();
109     }
110 
111     public SynchroChangesUI(JAXXContext parentContext, boolean param1) {
112         super(param1);
113         JAXXUtil.initContext(this, parentContext);
114         $initialize();
115     }
116 
117     public SynchroChangesUI(LayoutManager param0) {
118         super(param0);
119         $initialize();
120     }
121 
122     public SynchroChangesUI(JAXXContext parentContext, LayoutManager param1) {
123         super(param1);
124         JAXXUtil.initContext(this, parentContext);
125         $initialize();
126     }
127 
128     public SynchroChangesUI(LayoutManager param0, boolean param1) {
129         super(param0 ,param1);
130         $initialize();
131     }
132 
133     public SynchroChangesUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
134         super(param1 ,param2);
135         JAXXUtil.initContext(this, parentContext);
136         $initialize();
137     }
138 
139     /*-----------------------------------------------------------------------*/
140     /*--------------------------- Statics methods ---------------------------*/
141     /*-----------------------------------------------------------------------*/
142 
143     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
144         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
145     }
146 
147     /*-----------------------------------------------------------------------*/
148     /*---------------------- JAXXObject implementation ----------------------*/
149     /*-----------------------------------------------------------------------*/
150 
151     @Override
152     public void applyDataBinding(String $binding) {
153         if (allComponentsCreated && $bindings.containsKey($binding)) {
154             getDataBinding($binding).applyDataBinding();
155         }
156         processDataBinding($binding);
157     }
158 
159     @Override
160     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
161         super.firePropertyChange(propertyName, oldValue, newValue);
162     }
163 
164     @Override
165     public Map<String, Object> get$objectMap() {
166         return $objectMap;
167     }
168 
169     @Override
170     public JAXXBinding getDataBinding(String bindingId) {
171         return $bindings.get(bindingId);
172     }
173 
174     @Override
175     public JAXXBinding[] getDataBindings() {
176         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
177     }
178 
179     @Override
180     public Object getObjectById(String id) {
181         return $objectMap.get(id);
182     }
183 
184     @Override
185     public void processDataBinding(String $binding, boolean $force) {
186         if (!$force && $activeBindings.contains($binding)) { 
187             return;
188         }
189         $activeBindings.add($binding);
190         try {
191             if (allComponentsCreated && $bindings.containsKey($binding)) {
192                 getDataBinding($binding).processDataBinding();
193             }
194         } finally {
195             $activeBindings.remove($binding);
196         }
197     }
198 
199     @Override
200     public void processDataBinding(String $binding) {
201         processDataBinding($binding, false);
202     }
203 
204     @Override
205     public void registerDataBinding(JAXXBinding binding) {
206         $bindings.put(binding.getId(), binding);
207     }
208 
209     @Override
210     public void removeDataBinding(String $binding) {
211         if (allComponentsCreated && $bindings.containsKey($binding)) {
212             getDataBinding($binding).removeDataBinding();
213         }
214     }
215 
216     /*-----------------------------------------------------------------------*/
217     /*--------------------- JAXXContext implementation  ---------------------*/
218     /*-----------------------------------------------------------------------*/
219 
220     @Override
221     public <T> T getContextValue(Class<T> clazz) {
222         return delegateContext.getContextValue(clazz, null);
223     }
224 
225     @Override
226     public <T> T getContextValue(Class<T> clazz, String name) {
227         return delegateContext.getContextValue(clazz, name);
228     }
229 
230     @Override
231     public JAXXContext getDelegateContext() {
232         return delegateContext;
233     }
234 
235     @Override
236     public <O extends Container> O getParentContainer(Class<O> clazz) {
237         return SwingUtil.getParentContainer(this, clazz);
238     }
239 
240     @Override
241     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
242         return SwingUtil.getParentContainer(source, clazz);
243     }
244 
245     @Override
246     public <T> void removeContextValue(Class<T> clazz) {
247         delegateContext.removeContextValue(clazz, null);
248     }
249 
250     @Override
251     public <T> void removeContextValue(Class<T> clazz, String name) {
252         delegateContext.removeContextValue(clazz, name);
253     }
254 
255     @Override
256     public <T> void setContextValue(T o) {
257         delegateContext.setContextValue(o, null);
258     }
259 
260     @Override
261     public <T> void setContextValue(T o, String name) {
262         delegateContext.setContextValue(o, name);
263     }
264 
265     /*-----------------------------------------------------------------------*/
266     /*---------------------------- Event methods ----------------------------*/
267     /*-----------------------------------------------------------------------*/
268 
269     public void doActionPerformed__on__cancelBouton(ActionEvent event) {
270         if (log.isDebugEnabled()) {
271             log.debug(event);
272         }
273         handler.cancel();
274     }
275 
276     public void doActionPerformed__on__confirmBouton(ActionEvent event) {
277         if (log.isDebugEnabled()) {
278             log.debug(event);
279         }
280         handler.confirm();
281     }
282 
283     /*-----------------------------------------------------------------------*/
284     /*----------------------- Public acessor methods  -----------------------*/
285     /*-----------------------------------------------------------------------*/
286 
287     public DaliHelpBroker getBroker() {
288         return broker;
289     }
290 
291     public JButton getCancelBouton() {
292         return cancelBouton;
293     }
294 
295     public JButton getConfirmBouton() {
296         return confirmBouton;
297     }
298 
299     public JLabel getEntityTypeLabel() {
300         return entityTypeLabel;
301     }
302 
303     public JList<SynchroTableDTO> getEntityTypeList() {
304         return entityTypeList;
305     }
306 
307     public JLabel getExplainLabel() {
308         return explainLabel;
309     }
310 
311     public SynchroChangesUIHandler getHandler() {
312         return handler;
313     }
314 
315     public JLabel getHelpLabel() {
316         return helpLabel;
317     }
318 
319     public SynchroChangesUIModel getModel() {
320         return model;
321     }
322 
323     public SwingTable getTable() {
324         return table;
325     }
326 
327     public JScrollPane getTableParent() {
328         return tableParent;
329     }
330 
331     /*-----------------------------------------------------------------------*/
332     /*---------------------------- Other methods ----------------------------*/
333     /*-----------------------------------------------------------------------*/
334 
335     @Override
336     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
337         broker.installUI(component, helpId);
338     }
339 
340     @Override
341     public void showHelp(String helpId) {
342         getBroker().showHelp(this, helpId);
343     }
344 
345     /*-----------------------------------------------------------------------*/
346     /*--------------------- Protected acessors methods  ---------------------*/
347     /*-----------------------------------------------------------------------*/
348 
349     protected JPanel get$JPanel0() {
350         return $JPanel0;
351     }
352 
353     protected JPanel get$JPanel1() {
354         return $JPanel1;
355     }
356 
357     protected JPanel get$JPanel2() {
358         return $JPanel2;
359     }
360 
361     /*-----------------------------------------------------------------------*/
362     /*--------------------- Components creation methods ---------------------*/
363     /*-----------------------------------------------------------------------*/
364 
365     protected void addChildrenToSynchroChangesUI() {
366         if (!allComponentsCreated) {
367             return;
368         }
369         add(explainLabel, BorderLayout.PAGE_START);
370         add($JPanel0, BorderLayout.WEST);
371         add(tableParent, BorderLayout.CENTER);
372         add($JPanel1, BorderLayout.PAGE_END);
373     }
374 
375     protected void addChildrenToTableParent() {
376         if (!allComponentsCreated) {
377             return;
378         }
379         tableParent.getViewport().add(table);
380     }
381 
382     protected void createBroker() {
383         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
384     }
385 
386     protected void createCancelBouton() {
387         $objectMap.put("cancelBouton", cancelBouton = new JButton());
388         
389         cancelBouton.setName("cancelBouton");
390         cancelBouton.setText(t("dali.common.cancel"));
391         cancelBouton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__cancelBouton"));
392     }
393 
394     protected void createConfirmBouton() {
395         $objectMap.put("confirmBouton", confirmBouton = new JButton());
396         
397         confirmBouton.setName("confirmBouton");
398         confirmBouton.setText(t("dali.common.import"));
399         confirmBouton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__confirmBouton"));
400     }
401 
402     protected void createEntityTypeLabel() {
403         $objectMap.put("entityTypeLabel", entityTypeLabel = new JLabel());
404         
405         entityTypeLabel.setName("entityTypeLabel");
406     }
407 
408     protected void createEntityTypeList() {
409         $objectMap.put("entityTypeList", entityTypeList = new JList<SynchroTableDTO>());
410         
411         entityTypeList.setName("entityTypeList");
412     }
413 
414     protected void createExplainLabel() {
415         $objectMap.put("explainLabel", explainLabel = new JLabel());
416         
417         explainLabel.setName("explainLabel");
418         explainLabel.setText(t("dali.synchro.changes.message"));
419     }
420 
421     protected SynchroChangesUIHandler createHandler() {
422         return new SynchroChangesUIHandler();
423     }
424 
425     protected void createHelpLabel() {
426         $objectMap.put("helpLabel", helpLabel = new JLabel());
427         
428         helpLabel.setName("helpLabel");
429         helpLabel.setText(t("dali.synchro.changes.help"));
430     }
431 
432     protected void createModel() {
433         $objectMap.put("model", model = getContextValue(SynchroChangesUIModel.class));
434     }
435 
436     protected void createTable() {
437         $objectMap.put("table", table = new SwingTable());
438         
439         table.setName("table");
440     }
441 
442     protected void createTableParent() {
443         $objectMap.put("tableParent", tableParent = new JScrollPane());
444         
445         tableParent.setName("tableParent");
446     }
447 
448     /*-----------------------------------------------------------------------*/
449     /*------------------------ Internal jaxx methods ------------------------*/
450     /*-----------------------------------------------------------------------*/
451 
452     private void $completeSetup() {
453         allComponentsCreated = true;
454         if (log.isDebugEnabled()) {
455             log.debug(this);
456         }
457         addChildrenToSynchroChangesUI();
458         // inline complete setup of $JPanel0
459         $JPanel0.add(entityTypeLabel, BorderLayout.PAGE_START);
460         $JPanel0.add(entityTypeList, BorderLayout.CENTER);
461         addChildrenToTableParent();
462         // inline complete setup of $JPanel1
463         $JPanel1.add(helpLabel);
464         $JPanel1.add($JPanel2, BorderLayout.PAGE_END);
465         // inline complete setup of $JPanel2
466         $JPanel2.add(cancelBouton);
467         $JPanel2.add(confirmBouton);
468         
469         // apply 10 property setters
470         cancelBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
471         confirmBouton.setAlignmentX(Component.CENTER_ALIGNMENT);
472         cancelBouton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.cancel.mnemonic"),'Z'));
473         cancelBouton.setIcon(SwingUtil.createActionIcon("cancel"));
474         confirmBouton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.import.mnemonic"),'Z'));
475         confirmBouton.setIcon(SwingUtil.createActionIcon("validate"));
476     }
477 
478     private void $initialize() {
479         if (allComponentsCreated) {
480             return;
481         }
482         if (log.isDebugEnabled()) {
483             log.debug(this);
484         }
485         handler.beforeInit(this);
486         $objectMap.put("synchroChangesUI", synchroChangesUI);
487         createModel();
488         createBroker();
489         createExplainLabel();
490         // inline creation of $JPanel0
491         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
492         
493         $JPanel0.setName("$JPanel0");
494         $JPanel0.setLayout(new BorderLayout());
495         createEntityTypeLabel();
496         createEntityTypeList();
497         createTableParent();
498         createTable();
499         // inline creation of $JPanel1
500         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
501         
502         $JPanel1.setName("$JPanel1");
503         $JPanel1.setLayout(new BorderLayout());
504         createHelpLabel();
505         // inline creation of $JPanel2
506         $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
507         
508         $JPanel2.setName("$JPanel2");
509         $JPanel2.setLayout(new GridLayout(1,0));
510         createCancelBouton();
511         createConfirmBouton();
512         // inline creation of synchroChangesUI
513         setName("synchroChangesUI");
514         setLayout(new BorderLayout());
515         
516         $completeSetup();
517         handler.afterInit(this);
518     }
519 
520 }