View Javadoc
1   package fr.ifremer.reefdb.ui.swing.content.manage.context.menu;
2   
3   /*-
4    * #%L
5    * Reef DB :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2022 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  
27  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
28  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
29  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
30  import fr.ifremer.reefdb.dto.configuration.context.ContextDTO;
31  import fr.ifremer.reefdb.ui.swing.ReefDbHelpBroker;
32  import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
33  import fr.ifremer.reefdb.ui.swing.util.ReefDbUI;
34  import java.awt.BorderLayout;
35  import java.awt.Component;
36  import java.awt.Container;
37  import java.awt.FlowLayout;
38  import java.awt.GridBagConstraints;
39  import java.awt.Insets;
40  import java.util.ArrayList;
41  import java.util.HashMap;
42  import java.util.List;
43  import java.util.Map;
44  import java.util.TreeMap;
45  import javax.swing.BorderFactory;
46  import javax.swing.Box;
47  import javax.swing.BoxLayout;
48  import javax.swing.JButton;
49  import javax.swing.JLabel;
50  import javax.swing.JPanel;
51  import javax.swing.JSeparator;
52  import javax.swing.SwingConstants;
53  import jaxx.runtime.JAXXBinding;
54  import jaxx.runtime.JAXXContext;
55  import jaxx.runtime.JAXXObject;
56  import jaxx.runtime.JAXXObjectDescriptor;
57  import jaxx.runtime.JAXXUtil;
58  import jaxx.runtime.SwingUtil;
59  import jaxx.runtime.context.DefaultJAXXContext;
60  import jaxx.runtime.swing.Table;
61  import jaxx.runtime.swing.help.JAXXHelpUI;
62  import org.apache.commons.logging.Log;
63  import org.apache.commons.logging.LogFactory;
64  import static org.nuiton.i18n.I18n.t;
65  
66  public class ManageContextsListMenuUI extends Table implements JAXXHelpUI<ReefDbHelpBroker>, ReefDbUI<ManageContextsListMenuUIModel, ManageContextsListMenuUIHandler>, JAXXObject {
67  
68      /*-----------------------------------------------------------------------*/
69      /*------------------------- Other static fields -------------------------*/
70      /*-----------------------------------------------------------------------*/
71  
72      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAK1US28cRRCu3eza3rUDwcbGBCPFjg+JUGaDOCHziB9YsbUmyLuRrKx49Mz0rjvpne509+CxrCB+Aj8B7lyQuHFCHDhz4IL4Cwhx4Iqo7hnP7toTrw+x5LG7uuqrr6q6vu//gqpWsPyYJImn4siwPvV21w8OHviPaWC2qA4Uk0YoSH9KZSh3YDrM7drAzU7Thjey8Mam6EsR0Wgoeq0JdW2OOdWHlBoDb45GBFo3Wvn1WiJjdYqakypC/fafv8vfhF9/VwZIJLKbxlJujIsaVFJpQpmFBmYx05ekwUnUQxqKRT3ke9XaNjnR+mPSp0/hK5hswoQkCsEMrFy+ZIfh4hNpYHK1TXxO7xp40FUe6yrap8pTlHZD34uZp48wvReIyCCa1ycR6dH0mOCRRrG352ybqUk3mTZ7aH64I6XLMmGg2hch5QbaLzjDnoUdpJnwlXhClYG3Lsizj+ct/z7GbTjvQXjN5vqERJbp4sjQ0kjXJ+tby0OmVnddAHZv1o4nyVxTq3WazX3nglP+xKc8/Z4Nc0brP/+8MBysLwy8P1Th05iEivXoO8PNzMbv+ZRE3kcJtjakoQveEMlohpnV3RbFd0TwkWAhCyOM8pvRYuY15biOTEQbsTEi0nnBr406zmhKVHCYemE1I+Cp1XouD7fUVXrXnq9n7VbwxshAcD+9wX4OFqjUgaqK0YwT7Jxf6X28Spd58cwyW0B3+9/C3O8//fnj9ukG1zD3fKHrkADhZkklJD49ZlO/nK5vbBhv7BG51kEU1y6nTksFxFrZNZLDfK/YcM+Ge/eJPkSI6uQfP/+y8MVvV6C8DXUuSLhNrP8O1Myhwi4IHibyw3uO0czRFH6v4e8VA/Uu44Yq+3QNVIyK8c9V9D/aooFwg8X17BKu0V6z9n2qrSA61wQ7tVTQqZyuX/v137nWD/dOu1VC9q8/133QseojmGARZxF1ipeJWaHCTUtN41AMRKtIxgCF7NrZV55t9h33fftcc0pWMIQKrWCsn2y4/9KuHnuBosTQNjOchunNLXNrJZMSXMgu66XKZKzLyu3bz5LYZnnX9cD+twbDgiLHcCnju+f21W/becyfFOz8MzsTtBlYHvBwEhkM6aLnUIrIFMnPOFoV1KfPiZScBcTu+rrbeAOvnrTcVqdnL7CTQH514s47NhNUuiwKc87XM86ph5eKQkrWwLQRgreZbDvXxUJXw2RRVSPyMq4cO3FOjgU6w0vvhcSQGz6SRCn64Bx2yX4XLoE4ZRW2fSzde/2sGGdpLI41f3oBwsolmNQJZ70I35w5uABp9RJIFRaksnwBxv+tOl4aqQkAAA==";
73      private static final Log log = LogFactory.getLog(ManageContextsListMenuUI.class);
74      private static final long serialVersionUID = 1L;
75  
76      /*-----------------------------------------------------------------------*/
77      /*--------------------------- Internal states ---------------------------*/
78      /*-----------------------------------------------------------------------*/
79  
80      protected List<Object> $activeBindings = new ArrayList<Object>();
81      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
82      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
83      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
84      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
85      private boolean allComponentsCreated;
86      protected final JAXXContext delegateContext = new DefaultJAXXContext();
87  
88      /*-----------------------------------------------------------------------*/
89      /*------------------------ Protected components  ------------------------*/
90      /*-----------------------------------------------------------------------*/
91  
92      protected ReefDbHelpBroker broker;
93      protected ExtendedComboBox<ContextDTO> contextsLabelsCombo;
94      protected JLabel contextsLabelsLabel;
95      protected final ManageContextsListMenuUIHandler handler = createHandler();
96      protected Table menuPanel;
97      protected ManageContextsListMenuUIModel model;
98      protected JButton searchButton;
99      protected JPanel selectionButtonsPanel;
100 
101     /*-----------------------------------------------------------------------*/
102     /*------------------------- Private components  -------------------------*/
103     /*-----------------------------------------------------------------------*/
104 
105     private JLabel $JLabel0;
106     private JPanel $JPanel0;
107     private JSeparator $JSeparator0;
108     private ManageContextsListMenuUI $Table0 = this;
109 
110     /*-----------------------------------------------------------------------*/
111     /*---------------------------- Constructors  ----------------------------*/
112     /*-----------------------------------------------------------------------*/
113 
114     public ManageContextsListMenuUI(ApplicationUI parentUI) {
115         ApplicationUIUtil.setParentUI(this, parentUI);
116             $initialize();
117     }
118 
119     public ManageContextsListMenuUI() {
120         $initialize();
121     }
122 
123     public ManageContextsListMenuUI(JAXXContext parentContext) {
124         JAXXUtil.initContext(this, parentContext);
125         $initialize();
126     }
127 
128     /*-----------------------------------------------------------------------*/
129     /*--------------------------- Statics methods ---------------------------*/
130     /*-----------------------------------------------------------------------*/
131 
132     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
133         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
134     }
135 
136     /*-----------------------------------------------------------------------*/
137     /*---------------------- JAXXObject implementation ----------------------*/
138     /*-----------------------------------------------------------------------*/
139 
140     @Override
141     public void applyDataBinding(String $binding) {
142         if (allComponentsCreated && $bindings.containsKey($binding)) {
143             getDataBinding($binding).applyDataBinding();
144         }
145         processDataBinding($binding);
146     }
147 
148     @Override
149     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
150         super.firePropertyChange(propertyName, oldValue, newValue);
151     }
152 
153     @Override
154     public Map<String, Object> get$objectMap() {
155         return $objectMap;
156     }
157 
158     @Override
159     public JAXXBinding getDataBinding(String bindingId) {
160         return $bindings.get(bindingId);
161     }
162 
163     @Override
164     public JAXXBinding[] getDataBindings() {
165         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
166     }
167 
168     @Override
169     public Object getObjectById(String id) {
170         return $objectMap.get(id);
171     }
172 
173     @Override
174     public void processDataBinding(String $binding, boolean $force) {
175         if (!$force && $activeBindings.contains($binding)) { 
176             return;
177         }
178         $activeBindings.add($binding);
179         try {
180             if (allComponentsCreated && $bindings.containsKey($binding)) {
181                 getDataBinding($binding).processDataBinding();
182             }
183         } finally {
184             $activeBindings.remove($binding);
185         }
186     }
187 
188     @Override
189     public void processDataBinding(String $binding) {
190         processDataBinding($binding, false);
191     }
192 
193     @Override
194     public void registerDataBinding(JAXXBinding binding) {
195         $bindings.put(binding.getId(), binding);
196     }
197 
198     @Override
199     public void removeDataBinding(String $binding) {
200         if (allComponentsCreated && $bindings.containsKey($binding)) {
201             getDataBinding($binding).removeDataBinding();
202         }
203     }
204 
205     /*-----------------------------------------------------------------------*/
206     /*--------------------- JAXXContext implementation  ---------------------*/
207     /*-----------------------------------------------------------------------*/
208 
209     @Override
210     public <T> T getContextValue(Class<T> clazz) {
211         return delegateContext.getContextValue(clazz, null);
212     }
213 
214     @Override
215     public <T> T getContextValue(Class<T> clazz, String name) {
216         return delegateContext.getContextValue(clazz, name);
217     }
218 
219     @Override
220     public JAXXContext getDelegateContext() {
221         return delegateContext;
222     }
223 
224     @Override
225     public <O extends Container> O getParentContainer(Class<O> clazz) {
226         return SwingUtil.getParentContainer(this, clazz);
227     }
228 
229     @Override
230     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
231         return SwingUtil.getParentContainer(source, clazz);
232     }
233 
234     @Override
235     public <T> void removeContextValue(Class<T> clazz) {
236         delegateContext.removeContextValue(clazz, null);
237     }
238 
239     @Override
240     public <T> void removeContextValue(Class<T> clazz, String name) {
241         delegateContext.removeContextValue(clazz, name);
242     }
243 
244     @Override
245     public <T> void setContextValue(T o) {
246         delegateContext.setContextValue(o, null);
247     }
248 
249     @Override
250     public <T> void setContextValue(T o, String name) {
251         delegateContext.setContextValue(o, name);
252     }
253 
254     /*-----------------------------------------------------------------------*/
255     /*----------------------- Public acessor methods  -----------------------*/
256     /*-----------------------------------------------------------------------*/
257 
258     public ReefDbHelpBroker getBroker() {
259         return broker;
260     }
261 
262     public ExtendedComboBox<ContextDTO> getContextsLabelsCombo() {
263         return contextsLabelsCombo;
264     }
265 
266     public JLabel getContextsLabelsLabel() {
267         return contextsLabelsLabel;
268     }
269 
270     public ManageContextsListMenuUIHandler getHandler() {
271         return handler;
272     }
273 
274     public Table getMenuPanel() {
275         return menuPanel;
276     }
277 
278     public ManageContextsListMenuUIModel getModel() {
279         return model;
280     }
281 
282     public JButton getSearchButton() {
283         return searchButton;
284     }
285 
286     public JPanel getSelectionButtonsPanel() {
287         return selectionButtonsPanel;
288     }
289 
290     /*-----------------------------------------------------------------------*/
291     /*---------------------------- Other methods ----------------------------*/
292     /*-----------------------------------------------------------------------*/
293 
294     @Override
295     public void registerHelpId(ReefDbHelpBroker broker, Component component, String helpId) {
296         broker.installUI(component, helpId);
297     }
298 
299     @Override
300     public void showHelp(String helpId) {
301         getBroker().showHelp(this, helpId);
302     }
303 
304     /*-----------------------------------------------------------------------*/
305     /*--------------------- Protected acessors methods  ---------------------*/
306     /*-----------------------------------------------------------------------*/
307 
308     protected JLabel get$JLabel0() {
309         return $JLabel0;
310     }
311 
312     protected JPanel get$JPanel0() {
313         return $JPanel0;
314     }
315 
316     protected JSeparator get$JSeparator0() {
317         return $JSeparator0;
318     }
319 
320     /*-----------------------------------------------------------------------*/
321     /*--------------------- Components creation methods ---------------------*/
322     /*-----------------------------------------------------------------------*/
323 
324     protected void addChildrenToMenuPanel() {
325         if (!allComponentsCreated) {
326             return;
327         }
328         menuPanel.add($JPanel0, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
329         menuPanel.add($JSeparator0, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
330         menuPanel.add(selectionButtonsPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
331     }
332 
333     protected void addChildrenToSelectionButtonsPanel() {
334         if (!allComponentsCreated) {
335             return;
336         }
337         selectionButtonsPanel.add(searchButton);
338     }
339 
340     protected void createBroker() {
341         $objectMap.put("broker", broker = new ReefDbHelpBroker("reefdb.home.help"));
342     }
343 
344     protected void createContextsLabelsCombo() {
345         $objectMap.put("contextsLabelsCombo", contextsLabelsCombo = new ExtendedComboBox<ContextDTO>(this));
346         
347         contextsLabelsCombo.setName("contextsLabelsCombo");
348         contextsLabelsCombo.setFilterable(true);
349         contextsLabelsCombo.setShowDecorator(false);
350         contextsLabelsCombo.setShowReset(true);
351     }
352 
353     protected void createContextsLabelsLabel() {
354         $objectMap.put("contextsLabelsLabel", contextsLabelsLabel = new JLabel());
355         
356         contextsLabelsLabel.setName("contextsLabelsLabel");
357         contextsLabelsLabel.setText(t("reefdb.context.contextsList.label"));
358     }
359 
360     protected ManageContextsListMenuUIHandler createHandler() {
361         return new ManageContextsListMenuUIHandler();
362     }
363 
364     protected void createMenuPanel() {
365         $objectMap.put("menuPanel", menuPanel = new Table());
366         
367         menuPanel.setName("menuPanel");
368     }
369 
370     protected void createModel() {
371         $objectMap.put("model", model = getContextValue(ManageContextsListMenuUIModel.class));
372     }
373 
374     protected void createSearchButton() {
375         $objectMap.put("searchButton", searchButton = new JButton());
376         
377         searchButton.setName("searchButton");
378         searchButton.setText(t("reefdb.action.search.label"));
379         searchButton.setToolTipText(t("reefdb.action.search.tip"));
380         searchButton.putClientProperty("applicationAction", SearchAction.class);
381     }
382 
383     protected void createSelectionButtonsPanel() {
384         $objectMap.put("selectionButtonsPanel", selectionButtonsPanel = new JPanel());
385         
386         selectionButtonsPanel.setName("selectionButtonsPanel");
387         selectionButtonsPanel.setLayout(new FlowLayout());
388     }
389 
390     /*-----------------------------------------------------------------------*/
391     /*------------------------ Internal jaxx methods ------------------------*/
392     /*-----------------------------------------------------------------------*/
393 
394     private void $completeSetup() {
395         allComponentsCreated = true;
396         if (log.isDebugEnabled()) {
397             log.debug(this);
398         }
399         // inline complete setup of $Table0
400         add(menuPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
401         add($JLabel0, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
402         addChildrenToMenuPanel();
403         // inline complete setup of $JPanel0
404         $JPanel0.add(contextsLabelsLabel, BorderLayout.PAGE_START);
405         $JPanel0.add(contextsLabelsCombo, BorderLayout.CENTER);
406         addChildrenToSelectionButtonsPanel();
407         
408         // apply 7 property setters
409         contextsLabelsCombo.setBeanType(ContextDTO.class);
410         searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
411         menuPanel.setBorder(BorderFactory.createTitledBorder(t("reefdb.config.menu.title")));
412         contextsLabelsLabel.setLabelFor(contextsLabelsCombo);
413         searchButton.setIcon(SwingUtil.createActionIcon("find"));
414     }
415 
416     private void $initialize() {
417         if (allComponentsCreated) {
418             return;
419         }
420         if (log.isDebugEnabled()) {
421             log.debug(this);
422         }
423         handler.beforeInit(this);
424         $objectMap.put("$Table0", $Table0);
425         createModel();
426         createBroker();
427         createMenuPanel();
428         // inline creation of $JPanel0
429         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
430         
431         $JPanel0.setName("$JPanel0");
432         $JPanel0.setLayout(new BorderLayout());
433         createContextsLabelsLabel();
434         createContextsLabelsCombo();
435         // inline creation of $JSeparator0
436         $objectMap.put("$JSeparator0", $JSeparator0 = new JSeparator(SwingConstants.HORIZONTAL));
437         
438         $JSeparator0.setName("$JSeparator0");
439         createSelectionButtonsPanel();
440         createSearchButton();
441         // inline creation of $JLabel0
442         $objectMap.put("$JLabel0", $JLabel0 = new JLabel());
443         
444         $JLabel0.setName("$JLabel0");
445         // inline creation of $Table0
446         setName("$Table0");
447         
448         $completeSetup();
449         handler.afterInit(this);
450     }
451 
452 }