View Javadoc
1   package fr.ifremer.dali.ui.swing.content.config;
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.LayoutManager;
12  import java.util.ArrayList;
13  import java.util.HashMap;
14  import java.util.List;
15  import java.util.Map;
16  import java.util.TreeMap;
17  import javax.swing.JPanel;
18  import jaxx.runtime.JAXXBinding;
19  import jaxx.runtime.JAXXContext;
20  import jaxx.runtime.JAXXObject;
21  import jaxx.runtime.JAXXObjectDescriptor;
22  import jaxx.runtime.JAXXUtil;
23  import jaxx.runtime.SwingUtil;
24  import jaxx.runtime.context.DefaultJAXXContext;
25  import jaxx.runtime.swing.help.JAXXHelpUI;
26  import org.apache.commons.logging.Log;
27  import org.apache.commons.logging.LogFactory;
28  
29  public class DaliConfigUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<DaliUIContext, DaliConfigUIHandler>, JAXXObject {
30  
31      /*-----------------------------------------------------------------------*/
32      /*------------------------- Other static fields -------------------------*/
33      /*-----------------------------------------------------------------------*/
34  
35      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAI1TPW9TMRS9eSUpaaF8FEpRi2iDBJuzsAVBIVXUoPAhQqWKDODkOYmL82xsP/oqBOIn8BNgZ0FiY0IMzAwsiL+AEAMr4tr5aukrkMF68r3n+NxzT15/g6zRsLxJk4ToOLK8x8j1qxsbt5qbrGVXmWlprqzU0P9lAggaMB2O7o2Fc42agxcH8GJZ9pSMWLQDXarBlLHbgpkuY9bCmd2IljHF+qhcSlSsh6wjUWmsL398D16Ez18FAIlCdRM4ytK/UONJDtQg4KGF4/jSY1oUNOqgDM2jDuo97O7Kghpzk/bYI3gGkzXIKaqRzELh/0f2HB6fKAszLRm1eeeuVLdpxISFi21NeFuzHtMkpIKTmBOzhRoIdlqkJH0EWcVi2X+uV5XyjDkL2Z4MHc35fWkcbr1admSJHQNzTS0fMm3hwl+Ra0yoa74ToRoWdrmLeyPjvY2NzTQgq2O8tjDf2LvqO1jqL3n+jyU7Ql/9NTf7+d3Xt5XhZgN8+2Rq645gouNKS4VDcff0kf5aY8tF8QZVpQbkDROYap/axRRh9UEZxeF7xxycODhZo6aLFNnJL+8/zD34NAFBBaaEpGGFuv4q5G1XowtShIm6suIVHdo6iOdRpw3XdL+LRlo48aTgPR7s1F0WniboxGKKEyM5zfzHn7P1NytDNzKo7vS+7WNHsvcgxyPBI+aTPghxarKnlWFxKMdhTYsv7MmvGgTqlD8X0kbPCbotY/zPzFwKqaVLTR6FmK7LSewgZ/047ms5484pZPwNL0z7fZUEAAA=";
36      private static final Log log = LogFactory.getLog(DaliConfigUI.class);
37      private static final long serialVersionUID = 1L;
38  
39      /*-----------------------------------------------------------------------*/
40      /*--------------------------- Internal states ---------------------------*/
41      /*-----------------------------------------------------------------------*/
42  
43      protected List<Object> $activeBindings = new ArrayList<Object>();
44      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
45      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
46      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
47      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
48      private boolean allComponentsCreated;
49      protected final JAXXContext delegateContext = new DefaultJAXXContext();
50  
51      /*-----------------------------------------------------------------------*/
52      /*------------------------ Protected components  ------------------------*/
53      /*-----------------------------------------------------------------------*/
54  
55      protected DaliHelpBroker broker;
56      protected DaliConfigUI configTopPanel = this;
57      protected final DaliConfigUIHandler handler = createHandler();
58      protected DaliUIContext model;
59  
60      /*-----------------------------------------------------------------------*/
61      /*---------------------------- Constructors  ----------------------------*/
62      /*-----------------------------------------------------------------------*/
63  
64      public DaliConfigUI(ApplicationUI parentUI) {
65          ApplicationUIUtil.setParentUI(this, parentUI);
66              $initialize();
67      }
68  
69      public DaliConfigUI() {
70          $initialize();
71      }
72  
73      public DaliConfigUI(JAXXContext parentContext) {
74          JAXXUtil.initContext(this, parentContext);
75          $initialize();
76      }
77  
78      public DaliConfigUI(boolean param0) {
79          super(param0);
80          $initialize();
81      }
82  
83      public DaliConfigUI(JAXXContext parentContext, boolean param1) {
84          super(param1);
85          JAXXUtil.initContext(this, parentContext);
86          $initialize();
87      }
88  
89      public DaliConfigUI(LayoutManager param0) {
90          super(param0);
91          $initialize();
92      }
93  
94      public DaliConfigUI(JAXXContext parentContext, LayoutManager param1) {
95          super(param1);
96          JAXXUtil.initContext(this, parentContext);
97          $initialize();
98      }
99  
100     public DaliConfigUI(LayoutManager param0, boolean param1) {
101         super(param0 ,param1);
102         $initialize();
103     }
104 
105     public DaliConfigUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
106         super(param1 ,param2);
107         JAXXUtil.initContext(this, parentContext);
108         $initialize();
109     }
110 
111     /*-----------------------------------------------------------------------*/
112     /*--------------------------- Statics methods ---------------------------*/
113     /*-----------------------------------------------------------------------*/
114 
115     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
116         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
117     }
118 
119     /*-----------------------------------------------------------------------*/
120     /*---------------------- JAXXObject implementation ----------------------*/
121     /*-----------------------------------------------------------------------*/
122 
123     @Override
124     public void applyDataBinding(String $binding) {
125         if (allComponentsCreated && $bindings.containsKey($binding)) {
126             getDataBinding($binding).applyDataBinding();
127         }
128         processDataBinding($binding);
129     }
130 
131     @Override
132     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
133         super.firePropertyChange(propertyName, oldValue, newValue);
134     }
135 
136     @Override
137     public Map<String, Object> get$objectMap() {
138         return $objectMap;
139     }
140 
141     @Override
142     public JAXXBinding getDataBinding(String bindingId) {
143         return $bindings.get(bindingId);
144     }
145 
146     @Override
147     public JAXXBinding[] getDataBindings() {
148         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
149     }
150 
151     @Override
152     public Object getObjectById(String id) {
153         return $objectMap.get(id);
154     }
155 
156     @Override
157     public void processDataBinding(String $binding, boolean $force) {
158         if (!$force && $activeBindings.contains($binding)) { 
159             return;
160         }
161         $activeBindings.add($binding);
162         try {
163             if (allComponentsCreated && $bindings.containsKey($binding)) {
164                 getDataBinding($binding).processDataBinding();
165             }
166         } finally {
167             $activeBindings.remove($binding);
168         }
169     }
170 
171     @Override
172     public void processDataBinding(String $binding) {
173         processDataBinding($binding, false);
174     }
175 
176     @Override
177     public void registerDataBinding(JAXXBinding binding) {
178         $bindings.put(binding.getId(), binding);
179     }
180 
181     @Override
182     public void removeDataBinding(String $binding) {
183         if (allComponentsCreated && $bindings.containsKey($binding)) {
184             getDataBinding($binding).removeDataBinding();
185         }
186     }
187 
188     /*-----------------------------------------------------------------------*/
189     /*--------------------- JAXXContext implementation  ---------------------*/
190     /*-----------------------------------------------------------------------*/
191 
192     @Override
193     public <T> T getContextValue(Class<T> clazz) {
194         return delegateContext.getContextValue(clazz, null);
195     }
196 
197     @Override
198     public <T> T getContextValue(Class<T> clazz, String name) {
199         return delegateContext.getContextValue(clazz, name);
200     }
201 
202     @Override
203     public JAXXContext getDelegateContext() {
204         return delegateContext;
205     }
206 
207     @Override
208     public <O extends Container> O getParentContainer(Class<O> clazz) {
209         return SwingUtil.getParentContainer(this, clazz);
210     }
211 
212     @Override
213     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
214         return SwingUtil.getParentContainer(source, clazz);
215     }
216 
217     @Override
218     public <T> void removeContextValue(Class<T> clazz) {
219         delegateContext.removeContextValue(clazz, null);
220     }
221 
222     @Override
223     public <T> void removeContextValue(Class<T> clazz, String name) {
224         delegateContext.removeContextValue(clazz, name);
225     }
226 
227     @Override
228     public <T> void setContextValue(T o) {
229         delegateContext.setContextValue(o, null);
230     }
231 
232     @Override
233     public <T> void setContextValue(T o, String name) {
234         delegateContext.setContextValue(o, name);
235     }
236 
237     /*-----------------------------------------------------------------------*/
238     /*----------------------- Public acessor methods  -----------------------*/
239     /*-----------------------------------------------------------------------*/
240 
241     public DaliHelpBroker getBroker() {
242         return broker;
243     }
244 
245     public DaliConfigUIHandler getHandler() {
246         return handler;
247     }
248 
249     public DaliUIContext getModel() {
250         return model;
251     }
252 
253     /*-----------------------------------------------------------------------*/
254     /*---------------------------- Other methods ----------------------------*/
255     /*-----------------------------------------------------------------------*/
256 
257     @Override
258     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
259         broker.installUI(component, helpId);
260     }
261 
262     @Override
263     public void showHelp(String helpId) {
264         getBroker().showHelp(this, helpId);
265     }
266 
267     /*-----------------------------------------------------------------------*/
268     /*--------------------- Components creation methods ---------------------*/
269     /*-----------------------------------------------------------------------*/
270 
271     protected void createBroker() {
272         $objectMap.put("broker", broker = new DaliHelpBroker("dali.config.help"));
273     }
274 
275     protected DaliConfigUIHandler createHandler() {
276         return new DaliConfigUIHandler();
277     }
278 
279     protected void createModel() {
280         $objectMap.put("model", model = getContextValue(DaliUIContext.class));
281     }
282 
283     /*-----------------------------------------------------------------------*/
284     /*------------------------ Internal jaxx methods ------------------------*/
285     /*-----------------------------------------------------------------------*/
286 
287     private void $completeSetup() {
288         allComponentsCreated = true;
289         if (log.isDebugEnabled()) {
290             log.debug(this);
291         }
292         // late initializer
293         // help broker setup
294         DaliHelpBroker _broker = getBroker();
295         registerHelpId(_broker, configTopPanel, "dali.config.help");
296         _broker.prepareUI(this);
297     }
298 
299     private void $initialize() {
300         if (allComponentsCreated) {
301             return;
302         }
303         if (log.isDebugEnabled()) {
304             log.debug(this);
305         }
306         handler.beforeInit(this);
307         $objectMap.put("configTopPanel", configTopPanel);
308         createModel();
309         createBroker();
310         // inline creation of configTopPanel
311         setName("configTopPanel");
312         setLayout(new BorderLayout());
313         configTopPanel.putClientProperty("help", "dali.config.help");
314         
315         $completeSetup();
316         handler.afterInit(this);
317     }
318 
319 }