View Javadoc
1   package fr.ifremer.dali.ui.swing.content.welcome;
2   
3   import fr.ifremer.dali.ui.swing.DaliHelpBroker;
4   import fr.ifremer.dali.ui.swing.DaliUIContext;
5   import fr.ifremer.dali.ui.swing.util.DaliUI;
6   import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
7   import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
8   import java.awt.BorderLayout;
9   import java.awt.Component;
10  import java.awt.Container;
11  import java.awt.GridBagLayout;
12  import java.awt.LayoutManager;
13  import java.util.ArrayList;
14  import java.util.HashMap;
15  import java.util.List;
16  import java.util.Map;
17  import java.util.TreeMap;
18  import javax.swing.Box;
19  import javax.swing.BoxLayout;
20  import javax.swing.JButton;
21  import javax.swing.JLabel;
22  import javax.swing.JPanel;
23  import jaxx.runtime.JAXXBinding;
24  import jaxx.runtime.JAXXContext;
25  import jaxx.runtime.JAXXObject;
26  import jaxx.runtime.JAXXObjectDescriptor;
27  import jaxx.runtime.JAXXUtil;
28  import jaxx.runtime.SwingUtil;
29  import jaxx.runtime.binding.DefaultJAXXBinding;
30  import jaxx.runtime.context.DefaultJAXXContext;
31  import jaxx.runtime.swing.help.JAXXHelpUI;
32  import org.apache.commons.logging.Log;
33  import org.apache.commons.logging.LogFactory;
34  
35  public class WelcomeUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<DaliUIContext, WelcomeUIHandler>, JAXXObject {
36  
37      /*-----------------------------------------------------------------------*/
38      /*------------------ Constants for all public bindings ------------------*/
39      /*-----------------------------------------------------------------------*/
40  
41      public static final String BINDING_EXTRACTION_BUTTON_ENABLED = "extractionButton.enabled";
42      public static final String BINDING_OBSERVATION_BUTTON_ENABLED = "observationButton.enabled";
43  
44      /*-----------------------------------------------------------------------*/
45      /*------------------------- Other static fields -------------------------*/
46      /*-----------------------------------------------------------------------*/
47  
48      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAJ1UTU8TQRh+Wy3Q4gcfEUExwY/gx2ELXEGlgBVMFSMSiT3odHegi9OdcXYWlhCMP8GfoHcvJt48GQ+ePXgx/gVjPHg1vjPbdqks0Nik2+477/u8zzzzvPP2B2R8CefXSRhaMvCUW6PWncLKymJlndpqjvq2dIXiEqJPKg3pMnQ7zbiv4GK5pMvz9fL8LK8J7lFvV/VkCXK+2mLUr1KqFJxrrbB9P7/UXJ4MRSAbqE1SSaivf/1Mv3JevkkDhALZZXErI4dVxTs5WoK06yjow04bJM+It4Y0pOutId/jOjbLiO/fIzX6HF5AZwk6BJEIpuBC+1s2GKY+FAq6Lt25TzzKxhRMrErLXZW0RqXlEOZagWv5m9jdsrmnEMzapMzmuItH0e/yghAGqUNBpsYdyhSM7gsyh2/LC7MaKlRxYUdF8mdUKrh8YOU8ZWLGZMalDe7jKJlWJ6znR1GdlG3m9vKKT+UGUS73ZgKlkAb0txRFUZ3et7tDiVSMOq0dTDQ5d1y/n0lem0hY60E5JLFjYjp+up4j4WyLf9CZVuzM2DqpMmRkgGEFg+W9Zn6AS5GNB/+xsQY0q38G+r9++P6+2PCuHsNTiam7Rg89JSQXeHyubn0yMm6gXJa/S8RkGSeAMpxbM5fDCcSW6stIDvv16nJLl1vzxK8iRKbz28dPA0+/HIF0EXKME6dIdP4CZFVVogqcOaG4OW0YHdvswmcPftN4Xk+IEMy1zYkXjLwKrm/va7LoBKzb/CFfjK0SFVq2npkdBZ3UIxVGcUaHto3hLdcvBKqKw6E7UefK1Z0QVR5OULm51Ur28+/+pXfTDaVTuPOhfdNjtTOPocP1mOtRc0/Ur4DEe6Fb+DRweDzqScMPSVMh6uM1ap7X2lZ2qi1lbzWt/l/CakpjRjH9bwIShucw/im8cRjZ4pgMJ6YcoshIxfUc5HljD35KP3NtIOZwv2teDcmu6JxCMtLAoUg6XDwAYQQR/gIL7OOAIgcAAA==";
49      private static final Log log = LogFactory.getLog(WelcomeUI.class);
50      private static final long serialVersionUID = 1L;
51  
52      /*-----------------------------------------------------------------------*/
53      /*--------------------------- Internal states ---------------------------*/
54      /*-----------------------------------------------------------------------*/
55  
56      protected List<Object> $activeBindings = new ArrayList<Object>();
57      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
58      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
59      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
60      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
61      private boolean allComponentsCreated;
62      protected final JAXXContext delegateContext = new DefaultJAXXContext();
63  
64      /*-----------------------------------------------------------------------*/
65      /*------------------------ Protected components  ------------------------*/
66      /*-----------------------------------------------------------------------*/
67  
68      protected DaliHelpBroker broker;
69      protected JButton extractionButton;
70      protected final WelcomeUIHandler handler = createHandler();
71      protected DaliUIContext model;
72      protected JButton observationButton;
73  
74      /*-----------------------------------------------------------------------*/
75      /*------------------------- Private components  -------------------------*/
76      /*-----------------------------------------------------------------------*/
77  
78      private JLabel $JLabel0;
79      private JLabel $JLabel1;
80      private JLabel $JLabel2;
81      private WelcomeUI $JPanel0 = this;
82      private JPanel $JPanel1;
83  
84      /*-----------------------------------------------------------------------*/
85      /*---------------------------- Constructors  ----------------------------*/
86      /*-----------------------------------------------------------------------*/
87  
88      public WelcomeUI(ApplicationUI parentUI) {
89          ApplicationUIUtil.setParentUI(this, parentUI);
90              $initialize();
91      }
92  
93      public WelcomeUI() {
94          $initialize();
95      }
96  
97      public WelcomeUI(JAXXContext parentContext) {
98          JAXXUtil.initContext(this, parentContext);
99          $initialize();
100     }
101 
102     public WelcomeUI(boolean param0) {
103         super(param0);
104         $initialize();
105     }
106 
107     public WelcomeUI(JAXXContext parentContext, boolean param1) {
108         super(param1);
109         JAXXUtil.initContext(this, parentContext);
110         $initialize();
111     }
112 
113     public WelcomeUI(LayoutManager param0) {
114         super(param0);
115         $initialize();
116     }
117 
118     public WelcomeUI(JAXXContext parentContext, LayoutManager param1) {
119         super(param1);
120         JAXXUtil.initContext(this, parentContext);
121         $initialize();
122     }
123 
124     public WelcomeUI(LayoutManager param0, boolean param1) {
125         super(param0 ,param1);
126         $initialize();
127     }
128 
129     public WelcomeUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
130         super(param1 ,param2);
131         JAXXUtil.initContext(this, parentContext);
132         $initialize();
133     }
134 
135     /*-----------------------------------------------------------------------*/
136     /*--------------------------- Statics methods ---------------------------*/
137     /*-----------------------------------------------------------------------*/
138 
139     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
140         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
141     }
142 
143     /*-----------------------------------------------------------------------*/
144     /*---------------------- JAXXObject implementation ----------------------*/
145     /*-----------------------------------------------------------------------*/
146 
147     @Override
148     public void applyDataBinding(String $binding) {
149         if (allComponentsCreated && $bindings.containsKey($binding)) {
150             getDataBinding($binding).applyDataBinding();
151         }
152         processDataBinding($binding);
153     }
154 
155     @Override
156     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
157         super.firePropertyChange(propertyName, oldValue, newValue);
158     }
159 
160     @Override
161     public Map<String, Object> get$objectMap() {
162         return $objectMap;
163     }
164 
165     @Override
166     public JAXXBinding getDataBinding(String bindingId) {
167         return $bindings.get(bindingId);
168     }
169 
170     @Override
171     public JAXXBinding[] getDataBindings() {
172         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
173     }
174 
175     @Override
176     public Object getObjectById(String id) {
177         return $objectMap.get(id);
178     }
179 
180     @Override
181     public void processDataBinding(String $binding, boolean $force) {
182         if (!$force && $activeBindings.contains($binding)) { 
183             return;
184         }
185         $activeBindings.add($binding);
186         try {
187             if (allComponentsCreated && $bindings.containsKey($binding)) {
188                 getDataBinding($binding).processDataBinding();
189             }
190         } finally {
191             $activeBindings.remove($binding);
192         }
193     }
194 
195     @Override
196     public void processDataBinding(String $binding) {
197         processDataBinding($binding, false);
198     }
199 
200     @Override
201     public void registerDataBinding(JAXXBinding binding) {
202         $bindings.put(binding.getId(), binding);
203     }
204 
205     @Override
206     public void removeDataBinding(String $binding) {
207         if (allComponentsCreated && $bindings.containsKey($binding)) {
208             getDataBinding($binding).removeDataBinding();
209         }
210     }
211 
212     /*-----------------------------------------------------------------------*/
213     /*--------------------- JAXXContext implementation  ---------------------*/
214     /*-----------------------------------------------------------------------*/
215 
216     @Override
217     public <T> T getContextValue(Class<T> clazz) {
218         return delegateContext.getContextValue(clazz, null);
219     }
220 
221     @Override
222     public <T> T getContextValue(Class<T> clazz, String name) {
223         return delegateContext.getContextValue(clazz, name);
224     }
225 
226     @Override
227     public JAXXContext getDelegateContext() {
228         return delegateContext;
229     }
230 
231     @Override
232     public <O extends Container> O getParentContainer(Class<O> clazz) {
233         return SwingUtil.getParentContainer(this, clazz);
234     }
235 
236     @Override
237     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
238         return SwingUtil.getParentContainer(source, clazz);
239     }
240 
241     @Override
242     public <T> void removeContextValue(Class<T> clazz) {
243         delegateContext.removeContextValue(clazz, null);
244     }
245 
246     @Override
247     public <T> void removeContextValue(Class<T> clazz, String name) {
248         delegateContext.removeContextValue(clazz, name);
249     }
250 
251     @Override
252     public <T> void setContextValue(T o) {
253         delegateContext.setContextValue(o, null);
254     }
255 
256     @Override
257     public <T> void setContextValue(T o, String name) {
258         delegateContext.setContextValue(o, name);
259     }
260 
261     /*-----------------------------------------------------------------------*/
262     /*----------------------- Public acessor methods  -----------------------*/
263     /*-----------------------------------------------------------------------*/
264 
265     public DaliHelpBroker getBroker() {
266         return broker;
267     }
268 
269     public JButton getExtractionButton() {
270         return extractionButton;
271     }
272 
273     public WelcomeUIHandler getHandler() {
274         return handler;
275     }
276 
277     public DaliUIContext getModel() {
278         return model;
279     }
280 
281     public JButton getObservationButton() {
282         return observationButton;
283     }
284 
285     /*-----------------------------------------------------------------------*/
286     /*---------------------------- Other methods ----------------------------*/
287     /*-----------------------------------------------------------------------*/
288 
289     @Override
290     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
291         broker.installUI(component, helpId);
292     }
293 
294     @Override
295     public void showHelp(String helpId) {
296         getBroker().showHelp(this, helpId);
297     }
298 
299     /*-----------------------------------------------------------------------*/
300     /*--------------------- Protected acessors methods  ---------------------*/
301     /*-----------------------------------------------------------------------*/
302 
303     protected JLabel get$JLabel0() {
304         return $JLabel0;
305     }
306 
307     protected JLabel get$JLabel1() {
308         return $JLabel1;
309     }
310 
311     protected JLabel get$JLabel2() {
312         return $JLabel2;
313     }
314 
315     protected JPanel get$JPanel1() {
316         return $JPanel1;
317     }
318 
319     /*-----------------------------------------------------------------------*/
320     /*--------------------- Components creation methods ---------------------*/
321     /*-----------------------------------------------------------------------*/
322 
323     protected void createBroker() {
324         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
325     }
326 
327     protected void createExtractionButton() {
328         $objectMap.put("extractionButton", extractionButton = new JButton());
329         
330         extractionButton.setName("extractionButton");
331         extractionButton.putClientProperty("applicationAction", fr.ifremer.dali.ui.swing.action.GoToExtractionAction.class);
332     }
333 
334     protected WelcomeUIHandler createHandler() {
335         return new WelcomeUIHandler();
336     }
337 
338     protected void createModel() {
339         $objectMap.put("model", model = getContextValue(DaliUIContext.class));
340     }
341 
342     protected void createObservationButton() {
343         $objectMap.put("observationButton", observationButton = new JButton());
344         
345         observationButton.setName("observationButton");
346         observationButton.putClientProperty("applicationAction", fr.ifremer.dali.ui.swing.action.GoToObservationAction.class);
347     }
348 
349     /*-----------------------------------------------------------------------*/
350     /*------------------------ Internal jaxx methods ------------------------*/
351     /*-----------------------------------------------------------------------*/
352 
353     private void $completeSetup() {
354         allComponentsCreated = true;
355         if (log.isDebugEnabled()) {
356             log.debug(this);
357         }
358         // inline complete setup of $JPanel0
359         add($JPanel1);
360         // inline complete setup of $JPanel1
361         $JPanel1.add(observationButton);
362         $JPanel1.add($JLabel0);
363         $JPanel1.add($JLabel1);
364         $JPanel1.add($JLabel2);
365         $JPanel1.add(extractionButton);
366         
367         // apply 2 data bindings
368         JAXXUtil.applyDataBinding(this, $bindings.keySet());
369         
370         // apply 3 property setters
371         observationButton.setAlignmentX(Component.CENTER_ALIGNMENT);
372         extractionButton.setAlignmentX(Component.CENTER_ALIGNMENT);
373     }
374 
375     private void $initialize() {
376         if (allComponentsCreated) {
377             return;
378         }
379         if (log.isDebugEnabled()) {
380             log.debug(this);
381         }
382         handler.beforeInit(this);
383         $objectMap.put("$JPanel0", $JPanel0);
384         createModel();
385         createBroker();
386         // inline creation of $JPanel1
387         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
388         
389         $JPanel1.setName("$JPanel1");
390         createObservationButton();
391         // inline creation of $JLabel0
392         $objectMap.put("$JLabel0", $JLabel0 = new JLabel());
393         
394         $JLabel0.setName("$JLabel0");
395         // inline creation of $JLabel1
396         $objectMap.put("$JLabel1", $JLabel1 = new JLabel());
397         
398         $JLabel1.setName("$JLabel1");
399         // inline creation of $JLabel2
400         $objectMap.put("$JLabel2", $JLabel2 = new JLabel());
401         
402         $JLabel2.setName("$JLabel2");
403         createExtractionButton();
404         // inline creation of $JPanel0
405         setName("$JPanel0");
406         setLayout(new GridBagLayout());
407         
408         // registers 2 data bindings
409         $registerDefaultBindings();
410         $completeSetup();
411         handler.afterInit(this);
412     }
413 
414     private void $registerDefaultBindings() {
415         // register 2 data bindings
416         registerDataBinding(new DefaultJAXXBinding(this, BINDING_OBSERVATION_BUTTON_ENABLED, true) {
417         
418             @Override
419             public void applyDataBinding() {
420                 if (model != null) {
421                     model.addPropertyChangeListener("authenticated", this);
422                 }
423             }
424         
425             @Override
426             public void processDataBinding() {
427                 if (model != null) {
428                     observationButton.setEnabled(model.isAuthenticated());
429                 }
430             }
431         
432             @Override
433             public void removeDataBinding() {
434                 if (model != null) {
435                     model.removePropertyChangeListener("authenticated", this);
436                 }
437             }
438         });
439         registerDataBinding(new DefaultJAXXBinding(this, BINDING_EXTRACTION_BUTTON_ENABLED, true) {
440         
441             @Override
442             public void applyDataBinding() {
443                 if (model != null) {
444                     model.addPropertyChangeListener("authenticated", this);
445                 }
446             }
447         
448             @Override
449             public void processDataBinding() {
450                 if (model != null) {
451                     extractionButton.setEnabled(model.isAuthenticated());
452                 }
453             }
454         
455             @Override
456             public void removeDataBinding() {
457                 if (model != null) {
458                     model.removePropertyChangeListener("authenticated", this);
459                 }
460             }
461         });
462     }
463 
464 }