View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.referential.pmfm.method.menu;
2   
3   import fr.ifremer.dali.dto.referential.pmfm.MethodDTO;
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.core.dto.referential.StatusDTO;
8   import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
9   import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
10  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
11  import java.awt.BorderLayout;
12  import java.awt.Component;
13  import java.awt.Container;
14  import java.awt.GridBagConstraints;
15  import java.awt.GridLayout;
16  import java.awt.Insets;
17  import java.awt.LayoutManager;
18  import java.util.ArrayList;
19  import java.util.HashMap;
20  import java.util.List;
21  import java.util.Map;
22  import java.util.TreeMap;
23  import javax.swing.BorderFactory;
24  import javax.swing.Box;
25  import javax.swing.BoxLayout;
26  import javax.swing.JButton;
27  import javax.swing.JLabel;
28  import javax.swing.JPanel;
29  import javax.swing.SwingConstants;
30  import jaxx.runtime.JAXXBinding;
31  import jaxx.runtime.JAXXContext;
32  import jaxx.runtime.JAXXObject;
33  import jaxx.runtime.JAXXObjectDescriptor;
34  import jaxx.runtime.JAXXUtil;
35  import jaxx.runtime.SwingUtil;
36  import jaxx.runtime.binding.DefaultJAXXBinding;
37  import jaxx.runtime.context.DefaultJAXXContext;
38  import jaxx.runtime.swing.Table;
39  import jaxx.runtime.swing.help.JAXXHelpUI;
40  import org.apache.commons.logging.Log;
41  import org.apache.commons.logging.LogFactory;
42  import static org.nuiton.i18n.I18n.t;
43  
44  public class ManageMethodsMenuUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ManageMethodsMenuUIModel, ManageMethodsMenuUIHandler>, JAXXObject {
45  
46      /*-----------------------------------------------------------------------*/
47      /*------------------ Constants for all public bindings ------------------*/
48      /*-----------------------------------------------------------------------*/
49  
50      public static final String BINDING_LABEL_COMBO_SELECTED_ITEM = "labelCombo.selectedItem";
51      public static final String BINDING_STATUS_COMBO_SELECTED_ITEM = "statusCombo.selectedItem";
52  
53      /*-----------------------------------------------------------------------*/
54      /*------------------------- Other static fields -------------------------*/
55      /*-----------------------------------------------------------------------*/
56  
57      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAALVWy24jRRQtGzuJ4yQMzkMZEYZMeEyCUBkGiU2AyTghmoxsQGMjRVgIyt1lu4Zyd091NWnLGsQHgMSKNazYsACJHSvEgjULNohfQIgFW8StKrv9aj8gIlLK7lv3ce65Vaf99e8o7Qt0/T4JQywCR7IWxXdvn5+/WbtPLXlCfUswT7oCmb9EEiWrKGtHdl+ip6pFFZ7vhueP3ZbnOtQZiD4somVftjn1m5RKiZ4YjrB8P1+Otg9DLxC9rBGouKxf/PlH8jP74y+TCIUeoFuDVnZnRfU7SRVRktkS5aDShyTPidMAGII5DcC7qmzHnPj+G6RFH6CP0GIRLXhEQDKJ9uZvWefQ8aEn0dLTd98iDuUvSHReF5jVBW1RgW3CGQ4Y9i+gOrZcR0Iy3CIOaVAsaJ2qsoxw7LXqLdyisuna8OEEuKR9Stril8Dy9pnn6XoLEqVbrk25RO/+X6VKKn+/3kJNuB9QIdGNiQVP4OkOxBS0Zz80o0poamAgivuwG2D4Ul6ZyHnNpxyOJ3OdbsT20NRNYIXUuB5cLorrsf+iet5Qy2a0t8xJjfKiWkYRaKNy2x7xhrnXXIleHej2QUBswRr0pUGOu6cD1yhx8OshMG5TWwcX3HA4cQ/izRiIWV8SGfgRnB217I5u67zK9OTw9mZEWiGQ0nX8iNiNYZayFqdEGCeJ1oeoMFbl+Gzkv+KDu9Xsbz3X3Rfo8aG5wD3H/Xvev4iJKkqLAMwwyOq4NNyDLSMK2yOioBLq3b+31n/5/rfvTntKkIPam7GuA0IGN9QTrgfnlanSjxoZCCTj+RLxDqsoYxjTKrcTA6zc3QZwUO8xFY5VOL5D/CakSC/++sOPW+///AhKnsKJcYl9SpT/GcrIpgAWXG6H3q0jjWjlYgnWK/CfguNVZ1xSoU6whGcRwMcq+F+cUMsVBHLA5a4T7oM9o+z3qK+EteuaUgdNosWOvv8PQ6BuJ4a6CH8t89Nf6+Vvj3r0JaCdqxPd+xSm30ELzOHMoVpKuyoZK51Zz6eB7fbVME4fESjkldH70dWIm3p9eYythJIdV9hKdm51CvqbobmNLUGJpBUmObXNzr7c39OCBMJXZw0jbFI57B0cAFGqxpFmQH0roDGt8WbAScIV1tpwqma00unrxEM1HhrClHIaQffstbEDLMVVHlCkOaquGJzUPpO0BdfWzB43qDSKvX8AAJZ6RYE0I+2TC2vQ/67d1c6ABPX73Rju1/jEFR4UuEu1XNZ5xlqeWXmunuF+5t4jnseZRdS5uK1Ph6p/rITTPGJLnWuov0z085l604LM9e6pJuaaJsY4YKOiWIsv5uY9lJWuyyvMq2j3nYnuknmxXQ0o+X/taqNT1pWmtZWqM8eOutqOgRnbz1aM44ROht4xs1pRksBJ2wVntPaKTSTZrQFAeIG9NpY7odb1mRmV+RO1fBqf4eocmJaUKlfaHp2S59qlkVyfK8PnUzI8c2kMN+ZgYxlm33BAf+X5lEwHc2H5akqG5+fAkmKW+eVyKRTfzEDxD7dFauVtDQAA";
58      private static final Log log = LogFactory.getLog(ManageMethodsMenuUI.class);
59      private static final long serialVersionUID = 1L;
60  
61      /*-----------------------------------------------------------------------*/
62      /*--------------------------- Internal states ---------------------------*/
63      /*-----------------------------------------------------------------------*/
64  
65      protected List<Object> $activeBindings = new ArrayList<Object>();
66      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
67      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
68      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
69      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
70      private boolean allComponentsCreated;
71      protected final JAXXContext delegateContext = new DefaultJAXXContext();
72  
73      /*-----------------------------------------------------------------------*/
74      /*------------------------ Protected components  ------------------------*/
75      /*-----------------------------------------------------------------------*/
76  
77      protected DaliHelpBroker broker;
78      protected JButton clearButton;
79      protected final ManageMethodsMenuUIHandler handler = createHandler();
80      protected ExtendedComboBox<MethodDTO> labelCombo;
81      protected JLabel labelLabel;
82      protected JPanel menuPanel;
83      protected ManageMethodsMenuUIModel model;
84      protected JButton searchButton;
85      protected JPanel selectionButtonsPanel;
86      protected Table selectionPanel;
87      protected ExtendedComboBox<StatusDTO> statusCombo;
88      protected JLabel statusLabel;
89  
90      /*-----------------------------------------------------------------------*/
91      /*------------------------- Private components  -------------------------*/
92      /*-----------------------------------------------------------------------*/
93  
94      private ManageMethodsMenuUI $JPanel0 = this;
95      private JPanel $JPanel1;
96      private JPanel $JPanel2;
97  
98      /*-----------------------------------------------------------------------*/
99      /*---------------------------- Constructors  ----------------------------*/
100     /*-----------------------------------------------------------------------*/
101 
102     public ManageMethodsMenuUI(ApplicationUI parentUI) {
103         ApplicationUIUtil.setParentUI(this, parentUI);
104             $initialize();
105     }
106 
107     public ManageMethodsMenuUI() {
108         $initialize();
109     }
110 
111     public ManageMethodsMenuUI(JAXXContext parentContext) {
112         JAXXUtil.initContext(this, parentContext);
113         $initialize();
114     }
115 
116     public ManageMethodsMenuUI(boolean param0) {
117         super(param0);
118         $initialize();
119     }
120 
121     public ManageMethodsMenuUI(JAXXContext parentContext, boolean param1) {
122         super(param1);
123         JAXXUtil.initContext(this, parentContext);
124         $initialize();
125     }
126 
127     public ManageMethodsMenuUI(LayoutManager param0) {
128         super(param0);
129         $initialize();
130     }
131 
132     public ManageMethodsMenuUI(JAXXContext parentContext, LayoutManager param1) {
133         super(param1);
134         JAXXUtil.initContext(this, parentContext);
135         $initialize();
136     }
137 
138     public ManageMethodsMenuUI(LayoutManager param0, boolean param1) {
139         super(param0 ,param1);
140         $initialize();
141     }
142 
143     public ManageMethodsMenuUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
144         super(param1 ,param2);
145         JAXXUtil.initContext(this, parentContext);
146         $initialize();
147     }
148 
149     /*-----------------------------------------------------------------------*/
150     /*--------------------------- Statics methods ---------------------------*/
151     /*-----------------------------------------------------------------------*/
152 
153     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
154         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
155     }
156 
157     /*-----------------------------------------------------------------------*/
158     /*---------------------- JAXXObject implementation ----------------------*/
159     /*-----------------------------------------------------------------------*/
160 
161     @Override
162     public void applyDataBinding(String $binding) {
163         if (allComponentsCreated && $bindings.containsKey($binding)) {
164             getDataBinding($binding).applyDataBinding();
165         }
166         processDataBinding($binding);
167     }
168 
169     @Override
170     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
171         super.firePropertyChange(propertyName, oldValue, newValue);
172     }
173 
174     @Override
175     public Map<String, Object> get$objectMap() {
176         return $objectMap;
177     }
178 
179     @Override
180     public JAXXBinding getDataBinding(String bindingId) {
181         return $bindings.get(bindingId);
182     }
183 
184     @Override
185     public JAXXBinding[] getDataBindings() {
186         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
187     }
188 
189     @Override
190     public Object getObjectById(String id) {
191         return $objectMap.get(id);
192     }
193 
194     @Override
195     public void processDataBinding(String $binding, boolean $force) {
196         if (!$force && $activeBindings.contains($binding)) { 
197             return;
198         }
199         $activeBindings.add($binding);
200         try {
201             if (allComponentsCreated && $bindings.containsKey($binding)) {
202                 getDataBinding($binding).processDataBinding();
203             }
204         } finally {
205             $activeBindings.remove($binding);
206         }
207     }
208 
209     @Override
210     public void processDataBinding(String $binding) {
211         processDataBinding($binding, false);
212     }
213 
214     @Override
215     public void registerDataBinding(JAXXBinding binding) {
216         $bindings.put(binding.getId(), binding);
217     }
218 
219     @Override
220     public void removeDataBinding(String $binding) {
221         if (allComponentsCreated && $bindings.containsKey($binding)) {
222             getDataBinding($binding).removeDataBinding();
223         }
224     }
225 
226     /*-----------------------------------------------------------------------*/
227     /*--------------------- JAXXContext implementation  ---------------------*/
228     /*-----------------------------------------------------------------------*/
229 
230     @Override
231     public <T> T getContextValue(Class<T> clazz) {
232         return delegateContext.getContextValue(clazz, null);
233     }
234 
235     @Override
236     public <T> T getContextValue(Class<T> clazz, String name) {
237         return delegateContext.getContextValue(clazz, name);
238     }
239 
240     @Override
241     public JAXXContext getDelegateContext() {
242         return delegateContext;
243     }
244 
245     @Override
246     public <O extends Container> O getParentContainer(Class<O> clazz) {
247         return SwingUtil.getParentContainer(this, clazz);
248     }
249 
250     @Override
251     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
252         return SwingUtil.getParentContainer(source, clazz);
253     }
254 
255     @Override
256     public <T> void removeContextValue(Class<T> clazz) {
257         delegateContext.removeContextValue(clazz, null);
258     }
259 
260     @Override
261     public <T> void removeContextValue(Class<T> clazz, String name) {
262         delegateContext.removeContextValue(clazz, name);
263     }
264 
265     @Override
266     public <T> void setContextValue(T o) {
267         delegateContext.setContextValue(o, null);
268     }
269 
270     @Override
271     public <T> void setContextValue(T o, String name) {
272         delegateContext.setContextValue(o, name);
273     }
274 
275     /*-----------------------------------------------------------------------*/
276     /*----------------------- Public acessor methods  -----------------------*/
277     /*-----------------------------------------------------------------------*/
278 
279     public DaliHelpBroker getBroker() {
280         return broker;
281     }
282 
283     public JButton getClearButton() {
284         return clearButton;
285     }
286 
287     public ManageMethodsMenuUIHandler getHandler() {
288         return handler;
289     }
290 
291     public ExtendedComboBox<MethodDTO> getLabelCombo() {
292         return labelCombo;
293     }
294 
295     public JLabel getLabelLabel() {
296         return labelLabel;
297     }
298 
299     public JPanel getMenuPanel() {
300         return menuPanel;
301     }
302 
303     public ManageMethodsMenuUIModel getModel() {
304         return model;
305     }
306 
307     public JButton getSearchButton() {
308         return searchButton;
309     }
310 
311     public JPanel getSelectionButtonsPanel() {
312         return selectionButtonsPanel;
313     }
314 
315     public Table getSelectionPanel() {
316         return selectionPanel;
317     }
318 
319     public ExtendedComboBox<StatusDTO> getStatusCombo() {
320         return statusCombo;
321     }
322 
323     public JLabel getStatusLabel() {
324         return statusLabel;
325     }
326 
327     /*-----------------------------------------------------------------------*/
328     /*---------------------------- Other methods ----------------------------*/
329     /*-----------------------------------------------------------------------*/
330 
331     @Override
332     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
333         broker.installUI(component, helpId);
334     }
335 
336     @Override
337     public void showHelp(String helpId) {
338         getBroker().showHelp(this, helpId);
339     }
340 
341     /*-----------------------------------------------------------------------*/
342     /*--------------------- Protected acessors methods  ---------------------*/
343     /*-----------------------------------------------------------------------*/
344 
345     protected JPanel get$JPanel1() {
346         return $JPanel1;
347     }
348 
349     protected JPanel get$JPanel2() {
350         return $JPanel2;
351     }
352 
353     /*-----------------------------------------------------------------------*/
354     /*--------------------- Components creation methods ---------------------*/
355     /*-----------------------------------------------------------------------*/
356 
357     protected void addChildrenToMenuPanel() {
358         if (!allComponentsCreated) {
359             return;
360         }
361         menuPanel.add(selectionPanel);
362         menuPanel.add(selectionButtonsPanel);
363     }
364 
365     protected void addChildrenToSelectionButtonsPanel() {
366         if (!allComponentsCreated) {
367             return;
368         }
369         selectionButtonsPanel.add(clearButton);
370         selectionButtonsPanel.add(searchButton);
371     }
372 
373     protected void addChildrenToSelectionPanel() {
374         if (!allComponentsCreated) {
375             return;
376         }
377         selectionPanel.add($JPanel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
378         selectionPanel.add($JPanel2, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
379     }
380 
381     protected void createBroker() {
382         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
383     }
384 
385     protected void createClearButton() {
386         $objectMap.put("clearButton", clearButton = new JButton());
387         
388         clearButton.setName("clearButton");
389         clearButton.setText(t("dali.action.search.clear.label"));
390         clearButton.setToolTipText(t("dali.action.search.clear.tip"));
391         clearButton.putClientProperty("applicationAction", ClearAction.class);
392     }
393 
394     protected ManageMethodsMenuUIHandler createHandler() {
395         return new ManageMethodsMenuUIHandler();
396     }
397 
398     protected void createLabelCombo() {
399         $objectMap.put("labelCombo", labelCombo = new ExtendedComboBox<MethodDTO>(this));
400         
401         labelCombo.setName("labelCombo");
402         labelCombo.setFilterable(true);
403         labelCombo.setShowDecorator(false);
404         labelCombo.setProperty("method");
405         labelCombo.setShowReset(true);
406     }
407 
408     protected void createLabelLabel() {
409         $objectMap.put("labelLabel", labelLabel = new JLabel());
410         
411         labelLabel.setName("labelLabel");
412         labelLabel.setText(t("dali.property.name"));
413     }
414 
415     protected void createMenuPanel() {
416         $objectMap.put("menuPanel", menuPanel = new JPanel());
417         
418         menuPanel.setName("menuPanel");
419         menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.PAGE_AXIS));
420     }
421 
422     protected void createModel() {
423         $objectMap.put("model", model = getContextValue(ManageMethodsMenuUIModel.class));
424     }
425 
426     protected void createSearchButton() {
427         $objectMap.put("searchButton", searchButton = new JButton());
428         
429         searchButton.setName("searchButton");
430         searchButton.setText(t("dali.action.search.label"));
431         searchButton.setToolTipText(t("dali.action.search.tip"));
432         searchButton.putClientProperty("applicationAction", SearchAction.class);
433     }
434 
435     protected void createSelectionButtonsPanel() {
436         $objectMap.put("selectionButtonsPanel", selectionButtonsPanel = new JPanel());
437         
438         selectionButtonsPanel.setName("selectionButtonsPanel");
439         selectionButtonsPanel.setLayout(new GridLayout(1,0));
440     }
441 
442     protected void createSelectionPanel() {
443         $objectMap.put("selectionPanel", selectionPanel = new Table());
444         
445         selectionPanel.setName("selectionPanel");
446     }
447 
448     protected void createStatusCombo() {
449         $objectMap.put("statusCombo", statusCombo = new ExtendedComboBox<StatusDTO>(this));
450         
451         statusCombo.setName("statusCombo");
452         statusCombo.setFilterable(true);
453         statusCombo.setShowDecorator(false);
454         statusCombo.setProperty("status");
455         statusCombo.setShowReset(true);
456     }
457 
458     protected void createStatusLabel() {
459         $objectMap.put("statusLabel", statusLabel = new JLabel());
460         
461         statusLabel.setName("statusLabel");
462         statusLabel.setText(t("dali.property.status"));
463     }
464 
465     /*-----------------------------------------------------------------------*/
466     /*------------------------ Internal jaxx methods ------------------------*/
467     /*-----------------------------------------------------------------------*/
468 
469     private void $completeSetup() {
470         allComponentsCreated = true;
471         if (log.isDebugEnabled()) {
472             log.debug(this);
473         }
474         // inline complete setup of $JPanel0
475         add(menuPanel);
476         addChildrenToMenuPanel();
477         addChildrenToSelectionPanel();
478         // inline complete setup of $JPanel1
479         $JPanel1.add(labelLabel, BorderLayout.PAGE_START);
480         $JPanel1.add(labelCombo, BorderLayout.CENTER);
481         // inline complete setup of $JPanel2
482         $JPanel2.add(statusLabel, BorderLayout.PAGE_START);
483         $JPanel2.add(statusCombo, BorderLayout.CENTER);
484         addChildrenToSelectionButtonsPanel();
485         
486         // apply 2 data bindings
487         JAXXUtil.applyDataBinding(this, $bindings.keySet());
488         
489         // apply 15 property setters
490         labelCombo.setBeanType(MethodDTO.class);
491         statusCombo.setBeanType(StatusDTO.class);
492         clearButton.setAlignmentX(Component.CENTER_ALIGNMENT);
493         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
494         selectionPanel.setBorder(BorderFactory.createTitledBorder(t("dali.config.menu.title")));
495         labelLabel.setLabelFor(labelCombo);
496         labelCombo.setBean(model);
497         statusLabel.setLabelFor(statusCombo);
498         statusCombo.setBean(model);
499         clearButton.setIcon(SwingUtil.createActionIcon("reset"));
500         searchButton.setIcon(SwingUtil.createActionIcon("find"));
501     }
502 
503     private void $initialize() {
504         if (allComponentsCreated) {
505             return;
506         }
507         if (log.isDebugEnabled()) {
508             log.debug(this);
509         }
510         handler.beforeInit(this);
511         $objectMap.put("$JPanel0", $JPanel0);
512         createModel();
513         createBroker();
514         createMenuPanel();
515         createSelectionPanel();
516         // inline creation of $JPanel1
517         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
518         
519         $JPanel1.setName("$JPanel1");
520         $JPanel1.setLayout(new BorderLayout());
521         createLabelLabel();
522         createLabelCombo();
523         // inline creation of $JPanel2
524         $objectMap.put("$JPanel2", $JPanel2 = new JPanel());
525         
526         $JPanel2.setName("$JPanel2");
527         $JPanel2.setLayout(new BorderLayout());
528         createStatusLabel();
529         createStatusCombo();
530         createSelectionButtonsPanel();
531         createClearButton();
532         createSearchButton();
533         // inline creation of $JPanel0
534         setName("$JPanel0");
535         
536         // registers 2 data bindings
537         $registerDefaultBindings();
538         $completeSetup();
539         handler.afterInit(this);
540     }
541 
542     private void $registerDefaultBindings() {
543         // register 2 data bindings
544         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LABEL_COMBO_SELECTED_ITEM, true) {
545         
546             @Override
547             public void applyDataBinding() {
548                 if (model != null) {
549                     model.addPropertyChangeListener("method", this);
550                 }
551             }
552         
553             @Override
554             public void processDataBinding() {
555                 if (model != null) {
556                     labelCombo.setSelectedItem(model.getMethod());
557                 }
558             }
559         
560             @Override
561             public void removeDataBinding() {
562                 if (model != null) {
563                     model.removePropertyChangeListener("method", this);
564                 }
565             }
566         });
567         registerDataBinding(new DefaultJAXXBinding(this, BINDING_STATUS_COMBO_SELECTED_ITEM, true) {
568         
569             @Override
570             public void applyDataBinding() {
571                 if (model != null) {
572                     model.addPropertyChangeListener("status", this);
573                 }
574             }
575         
576             @Override
577             public void processDataBinding() {
578                 if (model != null) {
579                     statusCombo.setSelectedItem(model.getStatus());
580                 }
581             }
582         
583             @Override
584             public void removeDataBinding() {
585                 if (model != null) {
586                     model.removePropertyChangeListener("status", this);
587                 }
588             }
589         });
590     }
591 
592 }