View Javadoc
1   package fr.ifremer.dali.ui.swing.content.manage.context.menu;
2   
3   import fr.ifremer.dali.dto.configuration.context.ContextDTO;
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.component.bean.ExtendedComboBox;
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.util.ArrayList;
16  import java.util.HashMap;
17  import java.util.List;
18  import java.util.Map;
19  import java.util.TreeMap;
20  import javax.swing.BorderFactory;
21  import javax.swing.Box;
22  import javax.swing.BoxLayout;
23  import javax.swing.JButton;
24  import javax.swing.JLabel;
25  import javax.swing.JPanel;
26  import javax.swing.SwingConstants;
27  import jaxx.runtime.JAXXBinding;
28  import jaxx.runtime.JAXXContext;
29  import jaxx.runtime.JAXXObject;
30  import jaxx.runtime.JAXXObjectDescriptor;
31  import jaxx.runtime.JAXXUtil;
32  import jaxx.runtime.SwingUtil;
33  import jaxx.runtime.context.DefaultJAXXContext;
34  import jaxx.runtime.swing.help.JAXXHelpUI;
35  import org.apache.commons.logging.Log;
36  import org.apache.commons.logging.LogFactory;
37  import static org.nuiton.i18n.I18n.t;
38  
39  public class ManageContextsListMenuUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<ManageContextsListMenuUIModel, ManageContextsListMenuUIHandler>, JAXXObject {
40  
41      /*-----------------------------------------------------------------------*/
42      /*------------------------- Other static fields -------------------------*/
43      /*-----------------------------------------------------------------------*/
44  
45      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1UTW8bRRh+7dpp7KSlbZoQRKuGgERzYEyFEIcAbZMQNZUNKAlSqQ90dnfsTDvemc7Mko2iIn4CPwHuXJC4cUIcOHPggvgLCHHginhn1l7byRpHKpY89ryfz7wzz/PtH1A1Gl55TNOU6CS2vMfI/bsPHnwUPGah3WIm1FxZqSH7lMpQbsNclNuNhVfbTZfe6Kc3NmVPyZjFI9nrTagbeySYOWDMWrg+nhEa09jL3eupSvSgag6qqOrXf/1Z/ir68psyQKoQXR2PsjIta3iSShPKPLJwBTt9ThuCxl2EoXncRbwXnG1TUGM+pD32FL6A802YUVRjMQurZz+yr+HzU2Vh9rX7H9OYiTcttDqa8I5mPaZJRAUnCSfmELuTUMYWi5EejWmXZdsUtyxOSMvbNjOTaXJjW2j+ZEcp32TGQrUnIyYs7P6v9Vuu6LDJTKDlE6YtvD6xyxbu7mHOho8cpg5GcAsn74ac9uMzqwuq5bEXDRP4DrmMc+dVt1zJI2oO9bhzMXcuhINz0ICJbD3Z1Rtd/IuT0vB2A2nhvZGTPk1opHmXvTU61P4bIAGjMfkgxRFHLPLJGzId7zAfJNbK2EwCPm8Y1eHBho9CQGOIM6uLvKHwxb889uKRS2TIpeFjL7WhqhM0W1hun6bfLroy4i2fIJ4r6L3/LC38+sPv32+Psm2xMHRELJAFSkuFL4W71i9kVEssF40WVettqGU37JXkWgGwvb4bwWG/yy6duHRyj5oDLFE9/9uPPy09+uUclLehLiSNtqmL34GaPdA4BSmiVN2+4xHNH87iegm/5yzUO1xYpmkgcE4VqxP8uYDxh1sslJpiDeRShwqD9pqz7zLjxMuHpjipawWTyuEGtZ//Xtj77s5gWiVE/9LE8OHEqg9hhseCx8yrU194CtVoThmWRHIoMEWSAyg6l04+xj4Z1/z6xqnhlBy/pY4cv28fb/h/2VSPSKgZtWyfW8GizHPT3lz1zEfWdHg3kxHrAlbX1p6lievxtp+A+/cOjHJWTUFSRrkQjoTb7jYWjwuI+czdCNos3Big8GoWjkgY8TWKoBQpxDRQFZSQz6hSgofUSdNdL1AWrh7vedZmexK6W0B0der3O64TVDo8jnLEyx5x5icZ5TOoFuaslGKfq30fuFQQaLkqOtGYdEw7irtpQY8kBsPFdyNq6UqAAFFm3j9Vu+TW+tSKzvypWx4WV1h67grLZzjVrBPh/SPF/qPO9edGsnIGJBUeZmI9ocYq1vgXgtNYAocJAAA=";
46      private static final Log log = LogFactory.getLog(ManageContextsListMenuUI.class);
47      private static final long serialVersionUID = 1L;
48  
49      /*-----------------------------------------------------------------------*/
50      /*--------------------------- Internal states ---------------------------*/
51      /*-----------------------------------------------------------------------*/
52  
53      protected List<Object> $activeBindings = new ArrayList<Object>();
54      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
55      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
56      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
57      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
58      private boolean allComponentsCreated;
59      protected final JAXXContext delegateContext = new DefaultJAXXContext();
60  
61      /*-----------------------------------------------------------------------*/
62      /*------------------------ Protected components  ------------------------*/
63      /*-----------------------------------------------------------------------*/
64  
65      protected DaliHelpBroker broker;
66      protected JPanel buttonsPanel;
67      protected ExtendedComboBox<ContextDTO> contextsLabelsCombo;
68      protected JLabel contextsLabelsLabel;
69      protected final ManageContextsListMenuUIHandler handler = createHandler();
70      protected JPanel menuPanel;
71      protected ManageContextsListMenuUIModel model;
72      protected JButton searchButton;
73      protected JPanel selectionPanel;
74  
75      /*-----------------------------------------------------------------------*/
76      /*------------------------- Private components  -------------------------*/
77      /*-----------------------------------------------------------------------*/
78  
79      private ManageContextsListMenuUI $JPanel0 = this;
80      private JPanel $JPanel1;
81  
82      /*-----------------------------------------------------------------------*/
83      /*---------------------------- Constructors  ----------------------------*/
84      /*-----------------------------------------------------------------------*/
85  
86      public ManageContextsListMenuUI(ApplicationUI parentUI) {
87          ApplicationUIUtil.setParentUI(this, parentUI);
88              $initialize();
89      }
90  
91      public ManageContextsListMenuUI() {
92          $initialize();
93      }
94  
95      public ManageContextsListMenuUI(JAXXContext parentContext) {
96          JAXXUtil.initContext(this, parentContext);
97          $initialize();
98      }
99  
100     public ManageContextsListMenuUI(boolean param0) {
101         super(param0);
102         $initialize();
103     }
104 
105     public ManageContextsListMenuUI(JAXXContext parentContext, boolean param1) {
106         super(param1);
107         JAXXUtil.initContext(this, parentContext);
108         $initialize();
109     }
110 
111     public ManageContextsListMenuUI(LayoutManager param0) {
112         super(param0);
113         $initialize();
114     }
115 
116     public ManageContextsListMenuUI(JAXXContext parentContext, LayoutManager param1) {
117         super(param1);
118         JAXXUtil.initContext(this, parentContext);
119         $initialize();
120     }
121 
122     public ManageContextsListMenuUI(LayoutManager param0, boolean param1) {
123         super(param0 ,param1);
124         $initialize();
125     }
126 
127     public ManageContextsListMenuUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
128         super(param1 ,param2);
129         JAXXUtil.initContext(this, parentContext);
130         $initialize();
131     }
132 
133     /*-----------------------------------------------------------------------*/
134     /*--------------------------- Statics methods ---------------------------*/
135     /*-----------------------------------------------------------------------*/
136 
137     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
138         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
139     }
140 
141     /*-----------------------------------------------------------------------*/
142     /*---------------------- JAXXObject implementation ----------------------*/
143     /*-----------------------------------------------------------------------*/
144 
145     @Override
146     public void applyDataBinding(String $binding) {
147         if (allComponentsCreated && $bindings.containsKey($binding)) {
148             getDataBinding($binding).applyDataBinding();
149         }
150         processDataBinding($binding);
151     }
152 
153     @Override
154     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
155         super.firePropertyChange(propertyName, oldValue, newValue);
156     }
157 
158     @Override
159     public Map<String, Object> get$objectMap() {
160         return $objectMap;
161     }
162 
163     @Override
164     public JAXXBinding getDataBinding(String bindingId) {
165         return $bindings.get(bindingId);
166     }
167 
168     @Override
169     public JAXXBinding[] getDataBindings() {
170         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
171     }
172 
173     @Override
174     public Object getObjectById(String id) {
175         return $objectMap.get(id);
176     }
177 
178     @Override
179     public void processDataBinding(String $binding, boolean $force) {
180         if (!$force && $activeBindings.contains($binding)) { 
181             return;
182         }
183         $activeBindings.add($binding);
184         try {
185             if (allComponentsCreated && $bindings.containsKey($binding)) {
186                 getDataBinding($binding).processDataBinding();
187             }
188         } finally {
189             $activeBindings.remove($binding);
190         }
191     }
192 
193     @Override
194     public void processDataBinding(String $binding) {
195         processDataBinding($binding, false);
196     }
197 
198     @Override
199     public void registerDataBinding(JAXXBinding binding) {
200         $bindings.put(binding.getId(), binding);
201     }
202 
203     @Override
204     public void removeDataBinding(String $binding) {
205         if (allComponentsCreated && $bindings.containsKey($binding)) {
206             getDataBinding($binding).removeDataBinding();
207         }
208     }
209 
210     /*-----------------------------------------------------------------------*/
211     /*--------------------- JAXXContext implementation  ---------------------*/
212     /*-----------------------------------------------------------------------*/
213 
214     @Override
215     public <T> T getContextValue(Class<T> clazz) {
216         return delegateContext.getContextValue(clazz, null);
217     }
218 
219     @Override
220     public <T> T getContextValue(Class<T> clazz, String name) {
221         return delegateContext.getContextValue(clazz, name);
222     }
223 
224     @Override
225     public JAXXContext getDelegateContext() {
226         return delegateContext;
227     }
228 
229     @Override
230     public <O extends Container> O getParentContainer(Class<O> clazz) {
231         return SwingUtil.getParentContainer(this, clazz);
232     }
233 
234     @Override
235     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
236         return SwingUtil.getParentContainer(source, clazz);
237     }
238 
239     @Override
240     public <T> void removeContextValue(Class<T> clazz) {
241         delegateContext.removeContextValue(clazz, null);
242     }
243 
244     @Override
245     public <T> void removeContextValue(Class<T> clazz, String name) {
246         delegateContext.removeContextValue(clazz, name);
247     }
248 
249     @Override
250     public <T> void setContextValue(T o) {
251         delegateContext.setContextValue(o, null);
252     }
253 
254     @Override
255     public <T> void setContextValue(T o, String name) {
256         delegateContext.setContextValue(o, name);
257     }
258 
259     /*-----------------------------------------------------------------------*/
260     /*----------------------- Public acessor methods  -----------------------*/
261     /*-----------------------------------------------------------------------*/
262 
263     public DaliHelpBroker getBroker() {
264         return broker;
265     }
266 
267     public JPanel getButtonsPanel() {
268         return buttonsPanel;
269     }
270 
271     public ExtendedComboBox<ContextDTO> getContextsLabelsCombo() {
272         return contextsLabelsCombo;
273     }
274 
275     public JLabel getContextsLabelsLabel() {
276         return contextsLabelsLabel;
277     }
278 
279     public ManageContextsListMenuUIHandler getHandler() {
280         return handler;
281     }
282 
283     public JPanel getMenuPanel() {
284         return menuPanel;
285     }
286 
287     public ManageContextsListMenuUIModel getModel() {
288         return model;
289     }
290 
291     public JButton getSearchButton() {
292         return searchButton;
293     }
294 
295     public JPanel getSelectionPanel() {
296         return selectionPanel;
297     }
298 
299     /*-----------------------------------------------------------------------*/
300     /*---------------------------- Other methods ----------------------------*/
301     /*-----------------------------------------------------------------------*/
302 
303     @Override
304     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
305         broker.installUI(component, helpId);
306     }
307 
308     @Override
309     public void showHelp(String helpId) {
310         getBroker().showHelp(this, helpId);
311     }
312 
313     /*-----------------------------------------------------------------------*/
314     /*--------------------- Protected acessors methods  ---------------------*/
315     /*-----------------------------------------------------------------------*/
316 
317     protected JPanel get$JPanel1() {
318         return $JPanel1;
319     }
320 
321     /*-----------------------------------------------------------------------*/
322     /*--------------------- Components creation methods ---------------------*/
323     /*-----------------------------------------------------------------------*/
324 
325     protected void addChildrenToButtonsPanel() {
326         if (!allComponentsCreated) {
327             return;
328         }
329         buttonsPanel.add(searchButton);
330     }
331 
332     protected void addChildrenToMenuPanel() {
333         if (!allComponentsCreated) {
334             return;
335         }
336         menuPanel.add(contextsLabelsLabel, BorderLayout.PAGE_START);
337         menuPanel.add(contextsLabelsCombo);
338     }
339 
340     protected void addChildrenToSelectionPanel() {
341         if (!allComponentsCreated) {
342             return;
343         }
344         selectionPanel.add(menuPanel);
345         selectionPanel.add(buttonsPanel);
346     }
347 
348     protected void createBroker() {
349         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
350     }
351 
352     protected void createButtonsPanel() {
353         $objectMap.put("buttonsPanel", buttonsPanel = new JPanel());
354         
355         buttonsPanel.setName("buttonsPanel");
356         buttonsPanel.setLayout(new GridLayout(1,0));
357     }
358 
359     protected void createContextsLabelsCombo() {
360         $objectMap.put("contextsLabelsCombo", contextsLabelsCombo = new ExtendedComboBox<ContextDTO>(this));
361         
362         contextsLabelsCombo.setName("contextsLabelsCombo");
363         contextsLabelsCombo.setFilterable(true);
364         contextsLabelsCombo.setShowDecorator(false);
365         contextsLabelsCombo.setShowReset(true);
366     }
367 
368     protected void createContextsLabelsLabel() {
369         $objectMap.put("contextsLabelsLabel", contextsLabelsLabel = new JLabel());
370         
371         contextsLabelsLabel.setName("contextsLabelsLabel");
372         contextsLabelsLabel.setText(t("dali.context.contextsList.label"));
373     }
374 
375     protected ManageContextsListMenuUIHandler createHandler() {
376         return new ManageContextsListMenuUIHandler();
377     }
378 
379     protected void createMenuPanel() {
380         $objectMap.put("menuPanel", menuPanel = new JPanel());
381         
382         menuPanel.setName("menuPanel");
383         menuPanel.setLayout(new BorderLayout());
384     }
385 
386     protected void createModel() {
387         $objectMap.put("model", model = getContextValue(ManageContextsListMenuUIModel.class));
388     }
389 
390     protected void createSearchButton() {
391         $objectMap.put("searchButton", searchButton = new JButton());
392         
393         searchButton.setName("searchButton");
394         searchButton.setText(t("dali.action.search.label"));
395         searchButton.setToolTipText(t("dali.action.search.tip"));
396         searchButton.putClientProperty("applicationAction", SearchAction.class);
397     }
398 
399     protected void createSelectionPanel() {
400         $objectMap.put("selectionPanel", selectionPanel = new JPanel());
401         
402         selectionPanel.setName("selectionPanel");
403         selectionPanel.setLayout(new BoxLayout(selectionPanel, BoxLayout.PAGE_AXIS));
404     }
405 
406     /*-----------------------------------------------------------------------*/
407     /*------------------------ Internal jaxx methods ------------------------*/
408     /*-----------------------------------------------------------------------*/
409 
410     private void $completeSetup() {
411         allComponentsCreated = true;
412         if (log.isDebugEnabled()) {
413             log.debug(this);
414         }
415         // inline complete setup of $JPanel0
416         add($JPanel1, BorderLayout.PAGE_START);
417         // inline complete setup of $JPanel1
418         $JPanel1.add(selectionPanel);
419         addChildrenToSelectionPanel();
420         addChildrenToMenuPanel();
421         addChildrenToButtonsPanel();
422         
423         // apply 8 property setters
424         contextsLabelsCombo.setBeanType(ContextDTO.class);
425         menuPanel.setBorder(BorderFactory.createTitledBorder(t("dali.config.menu.title")));
426         contextsLabelsLabel.setLabelFor(contextsLabelsCombo);
427         searchButton.setIcon(SwingUtil.createActionIcon("find"));
428     }
429 
430     private void $initialize() {
431         if (allComponentsCreated) {
432             return;
433         }
434         if (log.isDebugEnabled()) {
435             log.debug(this);
436         }
437         handler.beforeInit(this);
438         $objectMap.put("$JPanel0", $JPanel0);
439         createModel();
440         createBroker();
441         // inline creation of $JPanel1
442         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
443         
444         $JPanel1.setName("$JPanel1");
445         createSelectionPanel();
446         createMenuPanel();
447         createContextsLabelsLabel();
448         createContextsLabelsCombo();
449         createButtonsPanel();
450         createSearchButton();
451         // inline creation of $JPanel0
452         setName("$JPanel0");
453         setLayout(new BorderLayout());
454         
455         $completeSetup();
456         handler.afterInit(this);
457     }
458 
459 }