View Javadoc
1   package fr.ifremer.dali.ui.swing.content.observation.operation.measurement.ungrouped;
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 fr.ifremer.quadrige3.ui.swing.plaf.WaitBlockingLayerUI;
9   import fr.ifremer.quadrige3.ui.swing.table.SwingTable;
10  import java.awt.BorderLayout;
11  import java.awt.Component;
12  import java.awt.Container;
13  import java.awt.LayoutManager;
14  import java.util.ArrayList;
15  import java.util.HashMap;
16  import java.util.List;
17  import java.util.Map;
18  import java.util.TreeMap;
19  import javax.swing.BorderFactory;
20  import javax.swing.Box;
21  import javax.swing.BoxLayout;
22  import javax.swing.JPanel;
23  import javax.swing.JScrollPane;
24  import jaxx.runtime.JAXXBinding;
25  import jaxx.runtime.JAXXContext;
26  import jaxx.runtime.JAXXObject;
27  import jaxx.runtime.JAXXObjectDescriptor;
28  import jaxx.runtime.JAXXUtil;
29  import jaxx.runtime.SwingUtil;
30  import jaxx.runtime.binding.DefaultJAXXBinding;
31  import jaxx.runtime.context.DefaultJAXXContext;
32  import jaxx.runtime.swing.help.JAXXHelpUI;
33  import org.apache.commons.logging.Log;
34  import org.apache.commons.logging.LogFactory;
35  
36  public class OperationMeasurementsUngroupedTableUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<OperationMeasurementsUngroupedTableUIModel, OperationMeasurementsUngroupedTableUIHandler>, JAXXObject {
37  
38      /*-----------------------------------------------------------------------*/
39      /*------------------ Constants for all public bindings ------------------*/
40      /*-----------------------------------------------------------------------*/
41  
42      public static final String BINDING_TABLE_BLOCK_LAYER_BLOCK = "tableBlockLayer.block";
43  
44      /*-----------------------------------------------------------------------*/
45      /*------------------------- Other static fields -------------------------*/
46      /*-----------------------------------------------------------------------*/
47  
48      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAL1USW8TMRR+SUmgZacqi1qkUhAUBM4BiUsRSzc1KF1EUrHkUJyMm7p1xsb20IkqED+BnwB3LkjcOCEOnDlwQfwFhDhwRTw7y6Q0LCciZeTx8/f5e9+8915+gYzRcGqdxjHRUWh5nZFbN+/eXayss6qdZqaqubJSQ/OXSkO6DHuDzr6xcLpccPBcC56bknUlQxZ2oScKMGBsQzCzxpi1cHI7ompMrtgJT8Qq0m3WjqherM+/fU0/C56+SAPECtVlMZXRv6GSTHYVIM0DC0fwpkc0J2hYQxmahzXUu9/tTQlqzAKts4fwBHYXIKuoRjILY/+esufw+FhZOGRpRTAazdHILtGQCQt6VRO+qlmdaRJQwUnEidlEFaQqQ4ukRFYM04+o5TIkUjHdXNUZNZGD4YkorGkZKRaQxXZ8Pgmb5Xa45G5fzivlFWUtZOoycCI2/7+IeXdzoiRb0XKDaQvnfitlGt/mEDPpTybQg97USSGrGwXacBxXujgeRjTQvMYuJ0RK0FVyh3LrMbjjYd2+DHV9p2JVSyHc17JwzJVF3KK5lUQcrL+DHusY1Em6ywmfvwXyZ41eACm6tQc46iGFFT68rcKxd0jSO0lxp8qQ0RFuWzhe3tlutzHUbLTjvzSaI/TRH0cHP775/Hq23V19ePdQz6NdwwGrXmmXveXu6oPN1oosF7l5qibK0G+YwMniJ8dID2HFVhjF4X2HHZw4OJmjZg0pMrs/vX139MGHPkjPwoCQNJil7nwe+u2aRhekCGJ1/YZXtG9zDz4P4T/tCkzqwBXH2a1Jv2oCG6SqGbWsxK1gQTMyPjZ2/rGFgRXlWrTUUOjs8JYrv+U8mZnOl/KLCytLNxdmCiule0szj2P0caSHj51kKv3vvw8WX91oe5nC3E789njiZ+Y+ZHkoeMj8rGqNoZ6zaa8yLApkMm56DSDoMYFUq+pH/fNML+syFdcnFga3/Lgg3BTQeKzMcWfT/kqri6akkOjvpa01GgYCy7rG7JQMVzmea64xvq3lEB9H7toL3hS3ugg7G/pvElP4dQVtyAhH84GrAbV0tMJDJ/DaDvqUew4g4092Xre6/AYAAA==";
49      private static final Log log = LogFactory.getLog(OperationMeasurementsUngroupedTableUI.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 final OperationMeasurementsUngroupedTableUIHandler handler = createHandler();
70      protected OperationMeasurementsUngroupedTableUIModel model;
71      protected SwingTable operationUngroupedMeasurementTable;
72      protected WaitBlockingLayerUI tableBlockLayer;
73      protected OperationMeasurementsUngroupedTableUI tableauHautPanel = this;
74      protected JScrollPane tableauHautScrollPane;
75  
76      /*-----------------------------------------------------------------------*/
77      /*---------------------------- Constructors  ----------------------------*/
78      /*-----------------------------------------------------------------------*/
79  
80      public OperationMeasurementsUngroupedTableUI(ApplicationUI parentUI) {
81          ApplicationUIUtil.setParentUI(this, parentUI);
82              $initialize();
83      }
84  
85      public OperationMeasurementsUngroupedTableUI() {
86          $initialize();
87      }
88  
89      public OperationMeasurementsUngroupedTableUI(JAXXContext parentContext) {
90          JAXXUtil.initContext(this, parentContext);
91          $initialize();
92      }
93  
94      public OperationMeasurementsUngroupedTableUI(boolean param0) {
95          super(param0);
96          $initialize();
97      }
98  
99      public OperationMeasurementsUngroupedTableUI(JAXXContext parentContext, boolean param1) {
100         super(param1);
101         JAXXUtil.initContext(this, parentContext);
102         $initialize();
103     }
104 
105     public OperationMeasurementsUngroupedTableUI(LayoutManager param0) {
106         super(param0);
107         $initialize();
108     }
109 
110     public OperationMeasurementsUngroupedTableUI(JAXXContext parentContext, LayoutManager param1) {
111         super(param1);
112         JAXXUtil.initContext(this, parentContext);
113         $initialize();
114     }
115 
116     public OperationMeasurementsUngroupedTableUI(LayoutManager param0, boolean param1) {
117         super(param0 ,param1);
118         $initialize();
119     }
120 
121     public OperationMeasurementsUngroupedTableUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
122         super(param1 ,param2);
123         JAXXUtil.initContext(this, parentContext);
124         $initialize();
125     }
126 
127     /*-----------------------------------------------------------------------*/
128     /*--------------------------- Statics methods ---------------------------*/
129     /*-----------------------------------------------------------------------*/
130 
131     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
132         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
133     }
134 
135     /*-----------------------------------------------------------------------*/
136     /*---------------------- JAXXObject implementation ----------------------*/
137     /*-----------------------------------------------------------------------*/
138 
139     @Override
140     public void applyDataBinding(String $binding) {
141         if (allComponentsCreated && $bindings.containsKey($binding)) {
142             getDataBinding($binding).applyDataBinding();
143         }
144         processDataBinding($binding);
145     }
146 
147     @Override
148     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
149         super.firePropertyChange(propertyName, oldValue, newValue);
150     }
151 
152     @Override
153     public Map<String, Object> get$objectMap() {
154         return $objectMap;
155     }
156 
157     @Override
158     public JAXXBinding getDataBinding(String bindingId) {
159         return $bindings.get(bindingId);
160     }
161 
162     @Override
163     public JAXXBinding[] getDataBindings() {
164         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
165     }
166 
167     @Override
168     public Object getObjectById(String id) {
169         return $objectMap.get(id);
170     }
171 
172     @Override
173     public void processDataBinding(String $binding, boolean $force) {
174         if (!$force && $activeBindings.contains($binding)) { 
175             return;
176         }
177         $activeBindings.add($binding);
178         try {
179             if (allComponentsCreated && $bindings.containsKey($binding)) {
180                 getDataBinding($binding).processDataBinding();
181             }
182         } finally {
183             $activeBindings.remove($binding);
184         }
185     }
186 
187     @Override
188     public void processDataBinding(String $binding) {
189         processDataBinding($binding, false);
190     }
191 
192     @Override
193     public void registerDataBinding(JAXXBinding binding) {
194         $bindings.put(binding.getId(), binding);
195     }
196 
197     @Override
198     public void removeDataBinding(String $binding) {
199         if (allComponentsCreated && $bindings.containsKey($binding)) {
200             getDataBinding($binding).removeDataBinding();
201         }
202     }
203 
204     /*-----------------------------------------------------------------------*/
205     /*--------------------- JAXXContext implementation  ---------------------*/
206     /*-----------------------------------------------------------------------*/
207 
208     @Override
209     public <T> T getContextValue(Class<T> clazz) {
210         return delegateContext.getContextValue(clazz, null);
211     }
212 
213     @Override
214     public <T> T getContextValue(Class<T> clazz, String name) {
215         return delegateContext.getContextValue(clazz, name);
216     }
217 
218     @Override
219     public JAXXContext getDelegateContext() {
220         return delegateContext;
221     }
222 
223     @Override
224     public <O extends Container> O getParentContainer(Class<O> clazz) {
225         return SwingUtil.getParentContainer(this, clazz);
226     }
227 
228     @Override
229     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
230         return SwingUtil.getParentContainer(source, clazz);
231     }
232 
233     @Override
234     public <T> void removeContextValue(Class<T> clazz) {
235         delegateContext.removeContextValue(clazz, null);
236     }
237 
238     @Override
239     public <T> void removeContextValue(Class<T> clazz, String name) {
240         delegateContext.removeContextValue(clazz, name);
241     }
242 
243     @Override
244     public <T> void setContextValue(T o) {
245         delegateContext.setContextValue(o, null);
246     }
247 
248     @Override
249     public <T> void setContextValue(T o, String name) {
250         delegateContext.setContextValue(o, name);
251     }
252 
253     /*-----------------------------------------------------------------------*/
254     /*----------------------- Public acessor methods  -----------------------*/
255     /*-----------------------------------------------------------------------*/
256 
257     public DaliHelpBroker getBroker() {
258         return broker;
259     }
260 
261     public OperationMeasurementsUngroupedTableUIHandler getHandler() {
262         return handler;
263     }
264 
265     public OperationMeasurementsUngroupedTableUIModel getModel() {
266         return model;
267     }
268 
269     public SwingTable getOperationUngroupedMeasurementTable() {
270         return operationUngroupedMeasurementTable;
271     }
272 
273     public WaitBlockingLayerUI getTableBlockLayer() {
274         return tableBlockLayer;
275     }
276 
277     public JScrollPane getTableauHautScrollPane() {
278         return tableauHautScrollPane;
279     }
280 
281     /*-----------------------------------------------------------------------*/
282     /*---------------------------- Other methods ----------------------------*/
283     /*-----------------------------------------------------------------------*/
284 
285     @Override
286     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
287         broker.installUI(component, helpId);
288     }
289 
290     @Override
291     public void showHelp(String helpId) {
292         getBroker().showHelp(this, helpId);
293     }
294 
295     /*-----------------------------------------------------------------------*/
296     /*--------------------- Components creation methods ---------------------*/
297     /*-----------------------------------------------------------------------*/
298 
299     protected void addChildrenToTableauHautPanel() {
300         if (!allComponentsCreated) {
301             return;
302         }
303         add(SwingUtil.boxComponentWithJxLayer(tableauHautScrollPane));
304     }
305 
306     protected void addChildrenToTableauHautScrollPane() {
307         if (!allComponentsCreated) {
308             return;
309         }
310         tableauHautScrollPane.getViewport().add(operationUngroupedMeasurementTable);
311     }
312 
313     protected void createBroker() {
314         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
315     }
316 
317     protected OperationMeasurementsUngroupedTableUIHandler createHandler() {
318         return new OperationMeasurementsUngroupedTableUIHandler();
319     }
320 
321     protected void createModel() {
322         $objectMap.put("model", model = getContextValue(OperationMeasurementsUngroupedTableUIModel.class));
323     }
324 
325     protected void createOperationUngroupedMeasurementTable() {
326         $objectMap.put("operationUngroupedMeasurementTable", operationUngroupedMeasurementTable = new SwingTable());
327         
328         operationUngroupedMeasurementTable.setName("operationUngroupedMeasurementTable");
329     }
330 
331     protected void createTableBlockLayer() {
332         $objectMap.put("tableBlockLayer", tableBlockLayer = new WaitBlockingLayerUI());
333     }
334 
335     protected void createTableauHautScrollPane() {
336         $objectMap.put("tableauHautScrollPane", tableauHautScrollPane = new JScrollPane());
337         
338         tableauHautScrollPane.setName("tableauHautScrollPane");
339     }
340 
341     /*-----------------------------------------------------------------------*/
342     /*------------------------ Internal jaxx methods ------------------------*/
343     /*-----------------------------------------------------------------------*/
344 
345     private void $completeSetup() {
346         allComponentsCreated = true;
347         if (log.isDebugEnabled()) {
348             log.debug(this);
349         }
350         addChildrenToTableauHautPanel();
351         addChildrenToTableauHautScrollPane();
352         
353         // apply 1 data bindings
354         JAXXUtil.applyDataBinding(this, $bindings.keySet());
355         
356         // apply 3 property setters
357         setBorder(BorderFactory.createTitledBorder(""));
358         tableBlockLayer.setBlockingColor(handler.getConfig().getColorBlockingLayer());
359     }
360 
361     private void $initialize() {
362         if (allComponentsCreated) {
363             return;
364         }
365         if (log.isDebugEnabled()) {
366             log.debug(this);
367         }
368         handler.beforeInit(this);
369         $objectMap.put("tableauHautPanel", tableauHautPanel);
370         createModel();
371         createBroker();
372         createTableBlockLayer();
373         createTableauHautScrollPane();
374         createOperationUngroupedMeasurementTable();
375         // inline creation of tableauHautPanel
376         setName("tableauHautPanel");
377         setLayout(new BorderLayout());
378         tableauHautPanel.putClientProperty("panelType", DaliUI.EDITION_PANEL_TYPE);
379         
380         // registers 1 data bindings
381         $registerDefaultBindings();
382         $completeSetup();
383         handler.afterInit(this);
384     }
385 
386     private void $registerDefaultBindings() {
387         // register 1 data bindings
388         registerDataBinding(new DefaultJAXXBinding(this, BINDING_TABLE_BLOCK_LAYER_BLOCK, true) {
389         
390             @Override
391             public void applyDataBinding() {
392                 if (model != null) {
393                     model.addPropertyChangeListener("loading", this);
394                 }
395             }
396         
397             @Override
398             public void processDataBinding() {
399                 if (model != null) {
400                     tableBlockLayer.setBlock(model.isLoading());
401                 }
402             }
403         
404             @Override
405             public void removeDataBinding() {
406                 if (model != null) {
407                     model.removePropertyChangeListener("loading", this);
408                 }
409             }
410         });
411     }
412 
413 }