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