View Javadoc
1   package fr.ifremer.dali.ui.swing.content.observation.operation.measurement.grouped.multiedit;
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.table.SwingTable;
9   import java.awt.BorderLayout;
10  import java.awt.Container;
11  import java.awt.Dialog;
12  import java.awt.Dialog.ModalityType;
13  import java.awt.FlowLayout;
14  import java.awt.Frame;
15  import java.awt.GraphicsConfiguration;
16  import java.awt.GridLayout;
17  import java.awt.Window;
18  import java.awt.event.ActionEvent;
19  import java.awt.event.ActionListener;
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.Box;
26  import javax.swing.BoxLayout;
27  import javax.swing.JButton;
28  import javax.swing.JDialog;
29  import javax.swing.JPanel;
30  import javax.swing.JScrollPane;
31  import jaxx.runtime.JAXXBinding;
32  import jaxx.runtime.JAXXContext;
33  import jaxx.runtime.JAXXObject;
34  import jaxx.runtime.JAXXObjectDescriptor;
35  import jaxx.runtime.JAXXUtil;
36  import jaxx.runtime.SwingUtil;
37  import jaxx.runtime.binding.DefaultJAXXBinding;
38  import jaxx.runtime.context.DefaultJAXXContext;
39  import org.apache.commons.logging.Log;
40  import org.apache.commons.logging.LogFactory;
41  import static org.nuiton.i18n.I18n.t;
42  
43  public class OperationMeasurementsMultiEditUI extends JDialog implements DaliUI<OperationMeasurementsMultiEditUIModel, OperationMeasurementsMultiEditUIHandler>, JAXXObject {
44  
45      /*-----------------------------------------------------------------------*/
46      /*------------------ Constants for all public bindings ------------------*/
47      /*-----------------------------------------------------------------------*/
48  
49      public static final String BINDING_VALID_BUTTON_ENABLED = "validButton.enabled";
50  
51      /*-----------------------------------------------------------------------*/
52      /*------------------------- Other static fields -------------------------*/
53      /*-----------------------------------------------------------------------*/
54  
55      private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAAMVVQW8TRxR+NnESO7RA0tKghMpQipLLGNoLUlCBQkODYkA4rVB96Xh3nAya3RlmZsMGBOIn8BPonQsSN06oh5576KXiL1RVD71WfbPr7NrxGlvigCVvvPPe+9733rz35cVfUDEaTt2jcUx0FFoeMHLjyt27tzr3mGevMeNprqzUkH5KZSi3Yc7Pzo2FL9qbLrzRC29clYGSIQv7otc2oWbsnmBmhzFr4eRghGdMo5WZ12IV6X3UjFQR6vN//i4/85/+UgaIFbKbxVLq46LySqY2ocx9C/OYaZc2BA23kYbm4Tby/cidXRXUmJs0YPfhCcxswrSiGsEsnJ685AQjiY+VhbpUTFPLZdhk1ESaBRhlmpGw/Duf2x82LERdTXjXWTTxqeAk4sQ8QFbEk6FFdyI7hundBIVkeCTIAcm2lpFiPgkcMENgcmtMXqUSktMWKoH0mbDw8IPwaLrkOZnZMzdu05CJc3hN7kbiHoX01DlVM98a9l4K4SwWPhvwbmUW53skC1nNaF9Pmfaxykht0Y5ARNLXj/sR9TXfZl/nTbHOi7Tc7yTAZZgfquO8ez82yPuwR0OPiW8ja7GxsDDAPD11notZwNwuXoefW5Z7Zg1LA9OPe0XyvcoHv9SGio7w2MJie3gV76ApXcLFA0voABPrf8cX/nj99tX6/uZVMfenha59woEbobRrOI4Cpj6Srl1kuWg0qVprIwoTqDqJqiwXEGv1zEgO8x1z4cSFk++p2UGIysyfb349/vPvh6C8DjUhqb9Onf8GVO2Oxi5I4cfq0uWE0eEHs/g8it9DFqpo5Q/Te650qTDur+XWva8kwz9yqt2EkJ6rWx2KqzNldcRibOByQQOzKjrV3/5daL28vN/EEhZ1YqR73sjKTzDNQ8FDlghYT5sKBWtOGRb5MtegIlWCCWRJ9VbyTPJcGerhFI4xP38hbIYskCH3LCwlbfNkgO8knXASZNYaXgxm23BSAtOp2fWNxaiu88OhOPRWSrHF1dYolzhy1M4ljXS/voIDqzWuhspQDSf7syRLRy0bWQX1PKZsVsUnRcEH6xjhNMNCN4z4z+nLR4kcE25+dNaV1frZs/X9IxRL3t1bWX1cVHu/SowrvYT0Bd2T6AwfX0QOtN7hoY8K9M0QdMk9a2MR3XHLPbaKEY5Owqkjtc/0O1AW3pvHiQl4THEvVdoRGEsTsei+A+FzRPgfPWTHnY0JAAA=";
56      private static final Log log = LogFactory.getLog(OperationMeasurementsMultiEditUI.class);
57      private static final long serialVersionUID = 1L;
58  
59      /*-----------------------------------------------------------------------*/
60      /*--------------------------- Internal states ---------------------------*/
61      /*-----------------------------------------------------------------------*/
62  
63      protected List<Object> $activeBindings = new ArrayList<Object>();
64      protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
65      protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
66      protected Map<String, Object> $objectMap = new HashMap<String, Object>();
67      protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
68      private boolean allComponentsCreated;
69      protected final JAXXContext delegateContext = new DefaultJAXXContext();
70  
71      /*-----------------------------------------------------------------------*/
72      /*------------------------ Protected components  ------------------------*/
73      /*-----------------------------------------------------------------------*/
74  
75      protected JButton cancelButton;
76      protected final OperationMeasurementsMultiEditUIHandler handler = createHandler();
77      protected OperationMeasurementsMultiEditUIModel model;
78      protected SwingTable operationGroupedMeasurementMultiEditTable;
79      protected OperationMeasurementsMultiEditUI operationMeasurementsMultiEditUI = this;
80      protected JScrollPane scrollPane;
81      protected JButton validButton;
82  
83      /*-----------------------------------------------------------------------*/
84      /*------------------------- Private components  -------------------------*/
85      /*-----------------------------------------------------------------------*/
86  
87      private JPanel $JPanel0;
88      private JPanel $JPanel1;
89  
90      /*-----------------------------------------------------------------------*/
91      /*---------------------------- Constructors  ----------------------------*/
92      /*-----------------------------------------------------------------------*/
93  
94      public OperationMeasurementsMultiEditUI(ApplicationUI parentUI) {
95          ApplicationUIUtil.setParentUI(this, parentUI);
96              $initialize();
97      }
98  
99      public OperationMeasurementsMultiEditUI(Window param0) {
100         super(param0);
101         $initialize();
102     }
103 
104     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Window param1) {
105         super(param1);
106         JAXXUtil.initContext(this, parentContext);
107         $initialize();
108     }
109 
110     public OperationMeasurementsMultiEditUI(Dialog param0, String param1, boolean param2, GraphicsConfiguration param3) {
111         super(param0 ,param1 ,param2 ,param3);
112         $initialize();
113     }
114 
115     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3, GraphicsConfiguration param4) {
116         super(param1 ,param2 ,param3 ,param4);
117         JAXXUtil.initContext(this, parentContext);
118         $initialize();
119     }
120 
121     public OperationMeasurementsMultiEditUI(Dialog param0, String param1, boolean param2) {
122         super(param0 ,param1 ,param2);
123         $initialize();
124     }
125 
126     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Dialog param1, String param2, boolean param3) {
127         super(param1 ,param2 ,param3);
128         JAXXUtil.initContext(this, parentContext);
129         $initialize();
130     }
131 
132     public OperationMeasurementsMultiEditUI(Dialog param0, String param1) {
133         super(param0 ,param1);
134         $initialize();
135     }
136 
137     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Dialog param1, String param2) {
138         super(param1 ,param2);
139         JAXXUtil.initContext(this, parentContext);
140         $initialize();
141     }
142 
143     public OperationMeasurementsMultiEditUI(Window param0, String param1, ModalityType param2, GraphicsConfiguration param3) {
144         super(param0 ,param1 ,param2 ,param3);
145         $initialize();
146     }
147 
148     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3, GraphicsConfiguration param4) {
149         super(param1 ,param2 ,param3 ,param4);
150         JAXXUtil.initContext(this, parentContext);
151         $initialize();
152     }
153 
154     public OperationMeasurementsMultiEditUI(Window param0, String param1, ModalityType param2) {
155         super(param0 ,param1 ,param2);
156         $initialize();
157     }
158 
159     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Window param1, String param2, ModalityType param3) {
160         super(param1 ,param2 ,param3);
161         JAXXUtil.initContext(this, parentContext);
162         $initialize();
163     }
164 
165     public OperationMeasurementsMultiEditUI(Window param0, String param1) {
166         super(param0 ,param1);
167         $initialize();
168     }
169 
170     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Window param1, String param2) {
171         super(param1 ,param2);
172         JAXXUtil.initContext(this, parentContext);
173         $initialize();
174     }
175 
176     public OperationMeasurementsMultiEditUI(Window param0, ModalityType param1) {
177         super(param0 ,param1);
178         $initialize();
179     }
180 
181     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Window param1, ModalityType param2) {
182         super(param1 ,param2);
183         JAXXUtil.initContext(this, parentContext);
184         $initialize();
185     }
186 
187     public OperationMeasurementsMultiEditUI(Frame param0, String param1) {
188         super(param0 ,param1);
189         $initialize();
190     }
191 
192     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Frame param1, String param2) {
193         super(param1 ,param2);
194         JAXXUtil.initContext(this, parentContext);
195         $initialize();
196     }
197 
198     public OperationMeasurementsMultiEditUI(Frame param0, boolean param1) {
199         super(param0 ,param1);
200         $initialize();
201     }
202 
203     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Frame param1, boolean param2) {
204         super(param1 ,param2);
205         JAXXUtil.initContext(this, parentContext);
206         $initialize();
207     }
208 
209     public OperationMeasurementsMultiEditUI(Frame param0) {
210         super(param0);
211         $initialize();
212     }
213 
214     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Frame param1) {
215         super(param1);
216         JAXXUtil.initContext(this, parentContext);
217         $initialize();
218     }
219 
220     public OperationMeasurementsMultiEditUI() {
221         $initialize();
222     }
223 
224     public OperationMeasurementsMultiEditUI(JAXXContext parentContext) {
225         JAXXUtil.initContext(this, parentContext);
226         $initialize();
227     }
228 
229     public OperationMeasurementsMultiEditUI(Dialog param0, boolean param1) {
230         super(param0 ,param1);
231         $initialize();
232     }
233 
234     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Dialog param1, boolean param2) {
235         super(param1 ,param2);
236         JAXXUtil.initContext(this, parentContext);
237         $initialize();
238     }
239 
240     public OperationMeasurementsMultiEditUI(Dialog param0) {
241         super(param0);
242         $initialize();
243     }
244 
245     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Dialog param1) {
246         super(param1);
247         JAXXUtil.initContext(this, parentContext);
248         $initialize();
249     }
250 
251     public OperationMeasurementsMultiEditUI(Frame param0, String param1, boolean param2, GraphicsConfiguration param3) {
252         super(param0 ,param1 ,param2 ,param3);
253         $initialize();
254     }
255 
256     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Frame param1, String param2, boolean param3, GraphicsConfiguration param4) {
257         super(param1 ,param2 ,param3 ,param4);
258         JAXXUtil.initContext(this, parentContext);
259         $initialize();
260     }
261 
262     public OperationMeasurementsMultiEditUI(Frame param0, String param1, boolean param2) {
263         super(param0 ,param1 ,param2);
264         $initialize();
265     }
266 
267     public OperationMeasurementsMultiEditUI(JAXXContext parentContext, Frame param1, String param2, boolean param3) {
268         super(param1 ,param2 ,param3);
269         JAXXUtil.initContext(this, parentContext);
270         $initialize();
271     }
272 
273     /*-----------------------------------------------------------------------*/
274     /*--------------------------- Statics methods ---------------------------*/
275     /*-----------------------------------------------------------------------*/
276 
277     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
278         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
279     }
280 
281     /*-----------------------------------------------------------------------*/
282     /*---------------------- JAXXObject implementation ----------------------*/
283     /*-----------------------------------------------------------------------*/
284 
285     @Override
286     public void applyDataBinding(String $binding) {
287         if (allComponentsCreated && $bindings.containsKey($binding)) {
288             getDataBinding($binding).applyDataBinding();
289         }
290         processDataBinding($binding);
291     }
292 
293     @Override
294     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
295         super.firePropertyChange(propertyName, oldValue, newValue);
296     }
297 
298     @Override
299     public Map<String, Object> get$objectMap() {
300         return $objectMap;
301     }
302 
303     @Override
304     public JAXXBinding getDataBinding(String bindingId) {
305         return $bindings.get(bindingId);
306     }
307 
308     @Override
309     public JAXXBinding[] getDataBindings() {
310         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
311     }
312 
313     @Override
314     public Object getObjectById(String id) {
315         return $objectMap.get(id);
316     }
317 
318     @Override
319     public void processDataBinding(String $binding, boolean $force) {
320         if (!$force && $activeBindings.contains($binding)) { 
321             return;
322         }
323         $activeBindings.add($binding);
324         try {
325             if (allComponentsCreated && $bindings.containsKey($binding)) {
326                 getDataBinding($binding).processDataBinding();
327             }
328         } finally {
329             $activeBindings.remove($binding);
330         }
331     }
332 
333     @Override
334     public void processDataBinding(String $binding) {
335         processDataBinding($binding, false);
336     }
337 
338     @Override
339     public void registerDataBinding(JAXXBinding binding) {
340         $bindings.put(binding.getId(), binding);
341     }
342 
343     @Override
344     public void removeDataBinding(String $binding) {
345         if (allComponentsCreated && $bindings.containsKey($binding)) {
346             getDataBinding($binding).removeDataBinding();
347         }
348     }
349 
350     /*-----------------------------------------------------------------------*/
351     /*--------------------- JAXXContext implementation  ---------------------*/
352     /*-----------------------------------------------------------------------*/
353 
354     @Override
355     public <T> T getContextValue(Class<T> clazz) {
356         return delegateContext.getContextValue(clazz, null);
357     }
358 
359     @Override
360     public <T> T getContextValue(Class<T> clazz, String name) {
361         return delegateContext.getContextValue(clazz, name);
362     }
363 
364     @Override
365     public JAXXContext getDelegateContext() {
366         return delegateContext;
367     }
368 
369     @Override
370     public <O extends Container> O getParentContainer(Class<O> clazz) {
371         return SwingUtil.getParentContainer(this, clazz);
372     }
373 
374     @Override
375     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
376         return SwingUtil.getParentContainer(source, clazz);
377     }
378 
379     @Override
380     public <T> void removeContextValue(Class<T> clazz) {
381         delegateContext.removeContextValue(clazz, null);
382     }
383 
384     @Override
385     public <T> void removeContextValue(Class<T> clazz, String name) {
386         delegateContext.removeContextValue(clazz, name);
387     }
388 
389     @Override
390     public <T> void setContextValue(T o) {
391         delegateContext.setContextValue(o, null);
392     }
393 
394     @Override
395     public <T> void setContextValue(T o, String name) {
396         delegateContext.setContextValue(o, name);
397     }
398 
399     /*-----------------------------------------------------------------------*/
400     /*---------------------------- Event methods ----------------------------*/
401     /*-----------------------------------------------------------------------*/
402 
403     public void doActionPerformed__on__cancelButton(ActionEvent event) {
404         if (log.isDebugEnabled()) {
405             log.debug(event);
406         }
407         handler.cancel();
408     }
409 
410     public void doActionPerformed__on__validButton(ActionEvent event) {
411         if (log.isDebugEnabled()) {
412             log.debug(event);
413         }
414         handler.valid();
415     }
416 
417     /*-----------------------------------------------------------------------*/
418     /*----------------------- Public acessor methods  -----------------------*/
419     /*-----------------------------------------------------------------------*/
420 
421     public JButton getCancelButton() {
422         return cancelButton;
423     }
424 
425     public OperationMeasurementsMultiEditUIHandler getHandler() {
426         return handler;
427     }
428 
429     public OperationMeasurementsMultiEditUIModel getModel() {
430         return model;
431     }
432 
433     public SwingTable getOperationGroupedMeasurementMultiEditTable() {
434         return operationGroupedMeasurementMultiEditTable;
435     }
436 
437     public JScrollPane getScrollPane() {
438         return scrollPane;
439     }
440 
441     public JButton getValidButton() {
442         return validButton;
443     }
444 
445     /*-----------------------------------------------------------------------*/
446     /*--------------------- Protected acessors methods  ---------------------*/
447     /*-----------------------------------------------------------------------*/
448 
449     protected JPanel get$JPanel0() {
450         return $JPanel0;
451     }
452 
453     protected JPanel get$JPanel1() {
454         return $JPanel1;
455     }
456 
457     /*-----------------------------------------------------------------------*/
458     /*--------------------- Components creation methods ---------------------*/
459     /*-----------------------------------------------------------------------*/
460 
461     protected void addChildrenToOperationMeasurementsMultiEditUI() {
462         if (!allComponentsCreated) {
463             return;
464         }
465         add($JPanel0);
466         add($JPanel1, BorderLayout.PAGE_END);
467     }
468 
469     protected void addChildrenToScrollPane() {
470         if (!allComponentsCreated) {
471             return;
472         }
473         scrollPane.getViewport().add(operationGroupedMeasurementMultiEditTable);
474     }
475 
476     protected void createCancelButton() {
477         $objectMap.put("cancelButton", cancelButton = new JButton());
478         
479         cancelButton.setName("cancelButton");
480         cancelButton.setText(t("dali.common.cancel"));
481         cancelButton.setToolTipText(t("dali.common.cancel"));
482         cancelButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__cancelButton"));
483     }
484 
485     protected OperationMeasurementsMultiEditUIHandler createHandler() {
486         return new OperationMeasurementsMultiEditUIHandler();
487     }
488 
489     protected void createModel() {
490         $objectMap.put("model", model = getContextValue(OperationMeasurementsMultiEditUIModel.class));
491     }
492 
493     protected void createOperationGroupedMeasurementMultiEditTable() {
494         $objectMap.put("operationGroupedMeasurementMultiEditTable", operationGroupedMeasurementMultiEditTable = new SwingTable());
495         
496         operationGroupedMeasurementMultiEditTable.setName("operationGroupedMeasurementMultiEditTable");
497     }
498 
499     protected void createScrollPane() {
500         $objectMap.put("scrollPane", scrollPane = new JScrollPane());
501         
502         scrollPane.setName("scrollPane");
503     }
504 
505     protected void createValidButton() {
506         $objectMap.put("validButton", validButton = new JButton());
507         
508         validButton.setName("validButton");
509         validButton.setText(t("dali.common.validate"));
510         validButton.setToolTipText(t("dali.common.validate"));
511         validButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__validButton"));
512     }
513 
514     /*-----------------------------------------------------------------------*/
515     /*------------------------ Internal jaxx methods ------------------------*/
516     /*-----------------------------------------------------------------------*/
517 
518     private void $completeSetup() {
519         allComponentsCreated = true;
520         if (log.isDebugEnabled()) {
521             log.debug(this);
522         }
523         addChildrenToOperationMeasurementsMultiEditUI();
524         // inline complete setup of $JPanel0
525         $JPanel0.add(SwingUtil.boxComponentWithJxLayer(scrollPane));
526         addChildrenToScrollPane();
527         // inline complete setup of $JPanel1
528         $JPanel1.add(cancelButton);
529         $JPanel1.add(validButton);
530         
531         // apply 1 data bindings
532         JAXXUtil.applyDataBinding(this, $bindings.keySet());
533         
534         // apply 8 property setters
535         scrollPane.setBorder(null);
536         cancelButton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.cancel.mnemonic"),'Z'));
537         cancelButton.setIcon(SwingUtil.createActionIcon("cancel"));
538         validButton.setMnemonic(SwingUtil.getFirstCharAt(t("dali.common.validate.mnemonic"),'Z'));
539         validButton.setIcon(SwingUtil.createActionIcon("accept"));
540         // late initializer
541         operationMeasurementsMultiEditUI.pack();
542     }
543 
544     private void $initialize() {
545         if (allComponentsCreated) {
546             return;
547         }
548         if (log.isDebugEnabled()) {
549             log.debug(this);
550         }
551         handler.beforeInit(this);
552         $objectMap.put("operationMeasurementsMultiEditUI", operationMeasurementsMultiEditUI);
553         createModel();
554         // inline creation of $JPanel0
555         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
556         
557         $JPanel0.setName("$JPanel0");
558         $JPanel0.setLayout(new BorderLayout());
559         createScrollPane();
560         createOperationGroupedMeasurementMultiEditTable();
561         // inline creation of $JPanel1
562         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
563         
564         $JPanel1.setName("$JPanel1");
565         $JPanel1.setLayout(new GridLayout(1,0));
566         createCancelButton();
567         createValidButton();
568         // inline creation of operationMeasurementsMultiEditUI
569         setName("operationMeasurementsMultiEditUI");
570         operationMeasurementsMultiEditUI.getContentPane().setLayout(new BorderLayout());
571         setResizable(false);
572         setTitle(t("dali.measurement.grouped.multiEdit.title"));
573         setModal(true);
574         
575         // registers 1 data bindings
576         $registerDefaultBindings();
577         $completeSetup();
578         handler.afterInit(this);
579     }
580 
581     private void $registerDefaultBindings() {
582         // register 1 data bindings
583         registerDataBinding(new DefaultJAXXBinding(this, BINDING_VALID_BUTTON_ENABLED, true, true) {
584         
585             @Override
586             public void applyDataBinding() {
587                 if (model != null) {
588                     model.addPropertyChangeListener("valid", this);
589                 }
590                 if (model != null) {
591                     model.addPropertyChangeListener("modify", this);
592                 }
593             }
594         
595             @Override
596             public void processDataBinding() {
597                 if (model != null) {
598                     validButton.setEnabled(model.isValid() && model.isModify());
599                 }
600             }
601         
602             @Override
603             public void removeDataBinding() {
604                 if (model != null) {
605                     model.removePropertyChangeListener("valid", this);
606                 }
607                 if (model != null) {
608                     model.removePropertyChangeListener("modify", this);
609                 }
610             }
611         });
612     }
613 
614 }