View Javadoc
1   package fr.ifremer.dali.ui.swing.content.observation.survey;
2   
3   import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
4   import fr.ifremer.dali.dto.data.survey.CampaignDTO;
5   import fr.ifremer.dali.dto.referential.LocationDTO;
6   import fr.ifremer.dali.dto.referential.PersonDTO;
7   import fr.ifremer.dali.dto.referential.PositioningSystemDTO;
8   import fr.ifremer.dali.ui.swing.DaliHelpBroker;
9   import fr.ifremer.dali.ui.swing.DaliUIContext;
10  import fr.ifremer.dali.ui.swing.content.observation.survey.measurement.ungrouped.SurveyMeasurementsUngroupedTableUI;
11  import fr.ifremer.dali.ui.swing.util.DaliUI;
12  import fr.ifremer.dali.ui.swing.util.plaf.BorderValidationUI;
13  import fr.ifremer.quadrige3.core.dao.technical.Dates;
14  import fr.ifremer.quadrige3.ui.swing.ApplicationUI;
15  import fr.ifremer.quadrige3.ui.swing.ApplicationUIUtil;
16  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedBeanDoubleList;
17  import fr.ifremer.quadrige3.ui.swing.component.bean.ExtendedComboBox;
18  import fr.ifremer.quadrige3.ui.swing.component.coordinate.CoordinateEditor;
19  import fr.ifremer.quadrige3.ui.swing.component.coordinate.CoordinateEditor.CoordinateType;
20  import fr.ifremer.quadrige3.ui.swing.component.date.JDatePicker;
21  import fr.ifremer.quadrige3.ui.swing.component.date.JLocalDatePicker;
22  import fr.ifremer.quadrige3.ui.swing.component.number.NumberEditor;
23  import fr.ifremer.quadrige3.ui.swing.component.time.LocalTimeEditor;
24  import java.awt.BorderLayout;
25  import java.awt.Component;
26  import java.awt.Container;
27  import java.awt.GridBagConstraints;
28  import java.awt.GridBagLayout;
29  import java.awt.GridLayout;
30  import java.awt.Insets;
31  import java.awt.LayoutManager;
32  import java.awt.event.ActionEvent;
33  import java.awt.event.ActionListener;
34  import java.awt.event.FocusEvent;
35  import java.awt.event.FocusListener;
36  import java.awt.event.KeyEvent;
37  import java.awt.event.KeyListener;
38  import java.util.ArrayList;
39  import java.util.HashMap;
40  import java.util.List;
41  import java.util.Map;
42  import java.util.TreeMap;
43  import javax.swing.BorderFactory;
44  import javax.swing.BoxLayout;
45  import javax.swing.JButton;
46  import javax.swing.JLabel;
47  import javax.swing.JList;
48  import javax.swing.JPanel;
49  import javax.swing.JScrollPane;
50  import javax.swing.JTextArea;
51  import javax.swing.JTextField;
52  import jaxx.runtime.JAXXBinding;
53  import jaxx.runtime.JAXXContext;
54  import jaxx.runtime.JAXXObject;
55  import jaxx.runtime.JAXXObjectDescriptor;
56  import jaxx.runtime.JAXXUtil;
57  import jaxx.runtime.JAXXValidator;
58  import jaxx.runtime.SwingUtil;
59  import jaxx.runtime.binding.DefaultJAXXBinding;
60  import jaxx.runtime.binding.SimpleJAXXObjectBinding;
61  import jaxx.runtime.context.DefaultJAXXContext;
62  import jaxx.runtime.swing.CardLayout2Ext;
63  import jaxx.runtime.swing.Table;
64  import jaxx.runtime.swing.help.JAXXHelpUI;
65  import jaxx.runtime.validator.swing.SwingValidator;
66  import jaxx.runtime.validator.swing.SwingValidatorUtil;
67  import jaxx.runtime.validator.swing.meta.Validator;
68  import jaxx.runtime.validator.swing.meta.ValidatorField;
69  import org.apache.commons.logging.Log;
70  import org.apache.commons.logging.LogFactory;
71  import static org.nuiton.i18n.I18n.t;
72  
73  public class SurveyDetailsTabUI extends JPanel implements JAXXHelpUI<DaliHelpBroker>, DaliUI<SurveyDetailsTabUIModel, SurveyDetailsTabUIHandler>, JAXXObject, JAXXValidator {
74  
75      /*-----------------------------------------------------------------------*/
76      /*------------------ Constants for all public bindings ------------------*/
77      /*-----------------------------------------------------------------------*/
78  
79      public static final String BINDING_BOTTOM_DEPTH_EDITOR_ENABLED = "bottomDepthEditor.enabled";
80      public static final String BINDING_BOTTOM_DEPTH_EDITOR_NUMBER_PATTERN = "bottomDepthEditor.numberPattern";
81      public static final String BINDING_BOTTOM_DEPTH_EDITOR_NUMBER_VALUE = "bottomDepthEditor.numberValue";
82      public static final String BINDING_CAMPAIGN_COMBO_ENABLED = "campaignCombo.enabled";
83      public static final String BINDING_CAMPAIGN_COMBO_SELECTED_ITEM = "campaignCombo.selectedItem";
84      public static final String BINDING_COMMENT_EDITOR_ENABLED = "commentEditor.enabled";
85      public static final String BINDING_COMMENT_EDITOR_TEXT = "commentEditor.text";
86      public static final String BINDING_CONTROL_DATE_EDITOR_TEXT = "controlDateEditor.text";
87      public static final String BINDING_DATE_EDITOR_ENABLED = "dateEditor.enabled";
88      public static final String BINDING_DATE_EDITOR_LOCAL_DATE = "dateEditor.localDate";
89      public static final String BINDING_LOCATION_COMBO_ENABLED = "locationCombo.enabled";
90      public static final String BINDING_LOCATION_COMBO_SELECTED_ITEM = "locationCombo.selectedItem";
91      public static final String BINDING_LOCATION_MAX_LATITUDE_EDITOR_NUMBER_VALUE = "locationMaxLatitudeEditor.numberValue";
92      public static final String BINDING_LOCATION_MAX_LONGITUDE_EDITOR_NUMBER_VALUE = "locationMaxLongitudeEditor.numberValue";
93      public static final String BINDING_LOCATION_MIN_LATITUDE_EDITOR_NUMBER_VALUE = "locationMinLatitudeEditor.numberValue";
94      public static final String BINDING_LOCATION_MIN_LONGITUDE_EDITOR_NUMBER_VALUE = "locationMinLongitudeEditor.numberValue";
95      public static final String BINDING_NAME_EDITOR_ENABLED = "nameEditor.enabled";
96      public static final String BINDING_NAME_EDITOR_TEXT = "nameEditor.text";
97      public static final String BINDING_OBSERVERS_DOUBLE_LIST_ENABLED = "observersDoubleList.enabled";
98      public static final String BINDING_POSITIONING_COMBO_ENABLED = "positioningCombo.enabled";
99      public static final String BINDING_POSITIONING_COMBO_SELECTED_ITEM = "positioningCombo.selectedItem";
100     public static final String BINDING_POSITIONING_COMMENT_EDITOR_ENABLED = "positioningCommentEditor.enabled";
101     public static final String BINDING_POSITIONING_COMMENT_EDITOR_TEXT = "positioningCommentEditor.text";
102     public static final String BINDING_PROGRAM_COMBO_ENABLED = "programCombo.enabled";
103     public static final String BINDING_PROGRAM_COMBO_SELECTED_ITEM = "programCombo.selectedItem";
104     public static final String BINDING_QUALIFICATION_COMMENT_EDITOR_TEXT = "qualificationCommentEditor.text";
105     public static final String BINDING_QUALIFICATION_DATE_EDITOR_TEXT = "qualificationDateEditor.text";
106     public static final String BINDING_SURVEY_LATITUDE_MAX_EDITOR_ENABLED = "surveyLatitudeMaxEditor.enabled";
107     public static final String BINDING_SURVEY_LATITUDE_MAX_EDITOR_NUMBER_VALUE = "surveyLatitudeMaxEditor.numberValue";
108     public static final String BINDING_SURVEY_LATITUDE_MIN_EDITOR_ENABLED = "surveyLatitudeMinEditor.enabled";
109     public static final String BINDING_SURVEY_LATITUDE_MIN_EDITOR_NUMBER_VALUE = "surveyLatitudeMinEditor.numberValue";
110     public static final String BINDING_SURVEY_LONGITUDE_MAX_EDITOR_ENABLED = "surveyLongitudeMaxEditor.enabled";
111     public static final String BINDING_SURVEY_LONGITUDE_MAX_EDITOR_NUMBER_VALUE = "surveyLongitudeMaxEditor.numberValue";
112     public static final String BINDING_SURVEY_LONGITUDE_MIN_EDITOR_ENABLED = "surveyLongitudeMinEditor.enabled";
113     public static final String BINDING_SURVEY_LONGITUDE_MIN_EDITOR_NUMBER_VALUE = "surveyLongitudeMinEditor.numberValue";
114     public static final String BINDING_TIME_EDITOR_ENABLED = "timeEditor.enabled";
115     public static final String BINDING_TIME_EDITOR_TIME_IN_SECOND = "timeEditor.timeInSecond";
116     public static final String BINDING_UPDATE_DATE_EDITOR_TEXT = "updateDateEditor.text";
117     public static final String BINDING_VALIDATION_COMMENT_EDITOR_TEXT = "validationCommentEditor.text";
118     public static final String BINDING_VALIDATION_DATE_EDITOR_TEXT = "validationDateEditor.text";
119 
120     /*-----------------------------------------------------------------------*/
121     /*------------------------- Other static fields -------------------------*/
122     /*-----------------------------------------------------------------------*/
123 
124     private static final String $jaxxObjectDescriptor = "H4sIAAAAAAAAANVbS28cWRUuO3b8jBO/H3mM8yA4ApWTzAKkJDOxu23Soe144nbIEAlT7r62a6iuqqm6nbTVMmIDC1jAAoFY8JJYsJgFSLMAIRAPzYDYABJsEEL8AYRYsEWcW69bt+reenQ5ICKl06l77nfO/c65r1On3/m71G9b0uW3lHZbtlo6VptIfrjy9OmjvbdQHZeRXbdUExuW5P7p6ZV6n0kjjeC5jaWrz6qk+7LXfblkNE1DR3qo952qNGzjIw3ZhwhhLF1ke9Rte3k7aL7TNluWjxoYxUP9zj//0fuVxue+2ytJbROs+wQMZTGtFx1JX1XqVRtYmgBNz5VlTdEPwAxL1Q/A3jPkWUlTbHtTaaK3pc9KA1XptKlYAIalK9mH7GA4/dsm6LJb1nN0VEZYUTW7puztVLC0vm/J6r6FmsiSG4qmyi1Vtl+AHXLd0DHAysaejaznClYNXXYR5O0YkGk6ek5jqb9pNJCGpY+fDPAGQaPop/cs4zPIwtIHhfBl+N8D6LPqSNKuQ8+hoaEAP1j6EOOpoMFD2CafT/yHFOHMtYfbdcvQtC1FRzexNEv81PY6hZqI+BDV21RUnTwGUiaYHs5DIjUdCE+5pCDLdhqrypHRAp+zk8TtXlKshtt+e62NqZUD14A4jdg3x+nltBHJOToszag7Xqgqe3EjnYdE8lK8A8TenoGleyFfvN1SGpZ6gF4N+9uLUHkPKboMxiK9gRpO51WjzWIPAeco0HmVbRwmjWsN1fFhZq2kE4wDbNbK8HVLrUNcRIAJQz7w3azADq0Obi3ozuKOmpZxYClN0YD8docL8ux6hA0dFgAhG6TRN3qGcVoNtfG6irQG2+MceAsbzTIy8aEIdTwk44PfycqI3mrugcym8w+PkDE2vsnThUhwhSfZLfJwlnzcowIBRFW1YW6Ms+EKz4jg64H8ZCBfNloQ/G6vUlcxuwr/oSgRu+pK01TUA13EbCAg8vYoaG2CTqFrvHZ2pZmNanGFfN9NxwJjxUIKEd4I+oy4PmddQheIwWvuUnUzaHsctM3StcCwGqpOJpgPs0g+aqFlAwRxqxEJ6Cc0PH2BDVUXycz7+hwZV9wfamaf1gNbZWo2DVeeRUo73SIiE7aICHyKFR7TDP0gkYTxQCKBhYUwC768UGkIUjyMhfAwUiGn3Q2b4/QF1ul+7NwK2po0IOxD48WGYq7CFgdnAmmSCVX3KRE1onvbrSC6KNika1GVG2M4EJthxWIcU8nZmGSEDTFolGUxqNIWgk55ovyAiUMKw4aKzsVFhepjsOJBxWATRnXONGyVhBn4WLRQhGVYnV/kyrDrKZWZD+uyUF21/UMOB3COJ0yWS47sLKs8vmZTUWY7ux2s13y9pfDSTdrfIB9fo6tHSz+wjJaJGs40wJLWzSG7iRT4hogmOQD0jt4btM3eYZTtVNiFf0xT91HpqK5Fpv7j6GS9HXj4m5RAIBhWDmTBMUOxcJzAb1N+4qKUn4+wsudg1ddUfLSuKQcivPGQjBDobMskp8Zy7Cwa0kVFxPYQL4Dzk3DGQzJCoEnvigJeTMKaYsWEcDMOB/tqPRVxNiYpBPXc/SrH3TPULu50+XGCZBBds6zkbEwyMm1+yhN9AMc2wzqie4vNos4z400xlisssneBJxwx+T2BtNBqSzrP3PHqti3TbAZNN/Q8k/qtFjyG+fQsngB5DE1u6mMukvoggE7rv2cm//STv7y77uc7DkH3NFc0lK6pSsNwwTHhvq4S1WfdZEcLq9oybPt3nklDNtJQ3c3lXOAYtu01g3Ggzznpy6S7/ECxDwGif+DPv/jVzKf/cErqXZeGNUNprCtEviIN4UMLWDC0Rtt8/b5j0eiLQfg8B3/74PK0r2oYWe4y2oetFvLOI2Wy3LhZgv59RbPh+RB5/hjZJH3kifaRawHEfMfJdhy3gboLHOoC+/eGfv2vye0f3vfp64HhzAvFKYX9n5ROq7qm6shJGBG3DwgSRCOmjVoNg+Z8eFkgyYRVKXoD93IHv3c+/xhjqwcW+13XUY/0daPeAmed7hAeYNyky1+dAZFvfyP4Iw/pNTsFuh/IVVrY2DLMFvRc7hwqekODzewA4ZKh76sHSzdk1V7xRcIXy6UbxxBSxDVOk3+IvCnA2AbBcHdX3gERjS6b5zkMjIYVpbM7vGuSRaN2ZAL++Q5JYO1U5LVypVZ5tLm7tbK5Vt2tvbm1xlHGzeqZKSp7wUIScxV9G4Jdb8Am5I6GUEZSGQ4rA0gnswNap7xW1SYjIg9BgGdLKI2SZkMPyeU5+zqWyp1V55s7d4/kOlxQMaqpGLS7LUt46YpzvvGOMMGVXsZE6soNvj2RbEOaTf35loVBb207Av7cAEKNR77CWKB0RSgvd5GBWarJtZUHzaZR8rhrM7e74jmCFMeJsgoZzOzDcGaHg4Sj3/eQ7N/juUwweYkMk2dQI4LrJBbOd4T5iOPAlnHWlqaq88yIZT/SLDnNhOAkxxDe+uhH7xhNgrgLz8VOiXkiV1dqldpOeW13o7IJgxlxk3tPFI1MikW6YlTjip0FJLx4+lqzRKY4xdO1b6KZGbFvYEtO9I13C+7WN9SQk/LNytNMvqGKT8g3UUqzT83ZyNT00wbcFZzNl+ULgAsdcZos7+yMp+XyhcAUz5RcMXApFgOPNj8mnqCX+RPUV10oChLSj117KJZ1zDtH41nObj0UMuXEPMSZpjwPhVSfkIdivGbw0DDs7NC3QlIT0qmmQg712DC0mmrWHI/MOR5xpcAfpkzMhC3d5O6vTJo3z0ljPfdJo571hMFPYGdfxBZFWpNOGrwcdb4JM98RZKXpbJlkZ4uNFQvzjBFkwtPs6WMmzUjo0FL4TDEXmhAUttvLiCh/X5BwP7ctXJ7gap2F7oxrlIhupV34mMCjW2mfFN0+T9mn1GXhlEo6IXBfk+Tz8UJH9F4k/6wSvY3J5+fR8Gmj+FlgPrzTUOBuXS18jVSU9m7nluhdVdekc2dXzu2dS3r380v4ku3lbqiht1PJG2rsxd7LzQAFb59SMkDsW6p8AXq2w1RsHIuSC74U9/DDVIXk0z/WCZcHUfXTrHpPiKedqT/KO3imyks4eF+Kn1kJV5bl0z/aocVeVPkEq5yI8BTTKrJ8Sic7seonqnshopvIyK48d0JEi62ypB/dFcRdb8Y6btJPrpMEPthxxm3dUjBGFmwLE53yWqmysVK9tbu1UqutPSYrf/i0ELIgYfNfpVLdLk7xorG8zqa1bMJIa+qoCctLnevwoFAug2J/b6EUkNcoXSe9qem5l5fwW0Dh/PakuPM7XDGWfeRTdOTei8huB89Wm+Ub/0QnWsMhnOeE4rRNJxMHp4AzP1dfwajJTIQtCubwEZ5KIUVhot7kELV4/foi/yKzePneot7SNFaCOZH5Iql7rENY3gOXqMblWJScM30pbjJQWF9TwK5S0TkhKs7JPj1e4YZEwZkirPPJy5WoHuY4cpEKb1SeoOz35fImqMnJu4PG6muoYfOsYSFJbrRHq3nyLi/RCh1qyCvxY4QMfgwKLnjmRGuCsl9s1zpl5x67b1hNBZPvS0GA7QSgSzc+TBeFsnP8bSJvr18SHbqjQ8zrrFjxkfi4QzjyxLmmRGudsvOznsBPiaJ2Q1C8uiofQzMdXkkVJekihyTag5sD5JRyZaeqkkDVEwa4G7a49WN582WCirHjSOqU5YzpxE2f8UvWsjNXTWDujSh2N+SJSuXy8ieoaxPy522FKWEnKMHLzt+lDifQ6J7IZUQwlLxvIAZeKLBzkoMXk4wjAzd0+dAtjksxgCmhy/uSSly6R71yle+V1MAWVxzmyJx2+KGc7J6EisT/mocS6hzTbBiI2DDY0t3indgRfzr+oi16vh/0MxWwz+8Gvwf0fhB3seMnn2JZjysEZ9w1o+a+Iavc+iigTIUJoJadI+/CVhxx/3WiV2XUzeWLydCcHF+h6+GWmz+K0jXg5ZV4bF2Is+VJ/0/JYn5q91Jiq+Rl+mKx5acA/4/YYn+rlmE5GNL831cyiRV3M+0ysdLIvIf28KiVO5GcMf+HD44JVwTpY/YHF1lS2pr3k92xu2CLsrin6g1YGF+LofeQz+HsSXJoP/UFPspMKgrp/PkEhPkMdgySekaSmUzA+UAmS76agHC78Fhey4TwpQSE+4VHsVYY4WFhHrYLI+wURkiv9khDMAsz+eXC8fD1LCcxy3hhY2nirlutvwh3BUvda2EkmPnfKMzMt3IUAhOY9/kw38tkyO8SEL5fGOGdwgg/KIzwbmGEHxUOtJ8VtuHnmRDeK4yQNIr3C4/iN4VHkY4AU1atO7+mKrSZ9UkJCJk2s0SETNtAIkL62SkN4ZeFEX4LCP8BbU8nxe9HAAA=";
125     private static final Log log = LogFactory.getLog(SurveyDetailsTabUI.class);
126     private static final long serialVersionUID = 1L;
127 
128     /*-----------------------------------------------------------------------*/
129     /*--------------------------- Internal states ---------------------------*/
130     /*-----------------------------------------------------------------------*/
131 
132     protected List<Object> $activeBindings = new ArrayList<Object>();
133     protected Map<String, Object> $bindingSources = new HashMap<String, Object>();
134     protected final Map<String, JAXXBinding> $bindings = new TreeMap<String, JAXXBinding>();
135     protected Map<String, Object> $objectMap = new HashMap<String, Object>();
136     protected Map<?, ?> $previousValues = new HashMap<Object, Object>();
137     private boolean allComponentsCreated;
138     protected final JAXXContext delegateContext = new DefaultJAXXContext();
139 
140     /*-----------------------------------------------------------------------*/
141     /*------------------------ Protected components  ------------------------*/
142     /*-----------------------------------------------------------------------*/
143 
144     @ValidatorField( validatorId = "validator",  propertyName = "bottomDepth",  editorName = "bottomDepthEditor")
145     protected NumberEditor bottomDepthEditor;
146     protected JLabel bottomDepthLabel;
147     protected JPanel bottomPanel;
148     protected DaliHelpBroker broker;
149     @ValidatorField( validatorId = "validator",  propertyName = "campaign",  editorName = "campaignCombo")
150     protected ExtendedComboBox<CampaignDTO> campaignCombo;
151     protected JLabel campaignLabel;
152     protected JTextArea commentEditor;
153     protected JLabel commentLabel;
154     @ValidatorField( validatorId = "validator",  propertyName = "comment",  editorName = "commentScrollPane")
155     protected JScrollPane commentScrollPane;
156     @ValidatorField( validatorId = "validator",  propertyName = "controlDate",  editorName = "controlDateEditor")
157     protected JTextField controlDateEditor;
158     protected JLabel controlDateLabel;
159     @ValidatorField( validatorId = "validator",  propertyName = "date",  editorName = "dateEditor")
160     protected JLocalDatePicker dateEditor;
161     protected JLabel dateLabel;
162     protected final SurveyDetailsTabUIHandler handler = createHandler();
163     protected JLabel latitudeLabel;
164     protected JLabel latitudeMaxLabel;
165     protected JLabel latitudeMinLabel;
166     protected JPanel lifeCyclePanel;
167     @ValidatorField( validatorId = "validator",  propertyName = "location",  editorName = "locationCombo")
168     protected ExtendedComboBox<LocationDTO> locationCombo;
169     protected Table locationCoordinatePanel;
170     protected JLabel locationLabel;
171     @ValidatorField( validatorId = "validator",  propertyName = "locationMaxLatitude",  editorName = "locationMaxLatitudeEditor")
172     protected CoordinateEditor locationMaxLatitudeEditor;
173     @ValidatorField( validatorId = "validator",  propertyName = "locationMaxLongitude",  editorName = "locationMaxLongitudeEditor")
174     protected CoordinateEditor locationMaxLongitudeEditor;
175     @ValidatorField( validatorId = "validator",  propertyName = "locationMinLatitude",  editorName = "locationMinLatitudeEditor")
176     protected CoordinateEditor locationMinLatitudeEditor;
177     @ValidatorField( validatorId = "validator",  propertyName = "locationMinLongitude",  editorName = "locationMinLongitudeEditor")
178     protected CoordinateEditor locationMinLongitudeEditor;
179     protected JLabel longitudeLabel;
180     protected JLabel longitudeMaxLabel;
181     protected JLabel longitudeMinLabel;
182     protected JPanel mainPanel;
183     protected SurveyDetailsTabUIModel model;
184     @ValidatorField( validatorId = "validator",  propertyName = "name",  editorName = "nameEditor")
185     protected JTextField nameEditor;
186     protected JLabel nameLabel;
187     @ValidatorField( validatorId = "validator",  propertyName = "observers",  editorName = "observersDoubleList")
188     protected ExtendedBeanDoubleList<PersonDTO> observersDoubleList;
189     protected JList<PersonDTO> observersList;
190     protected JPanel observersPanel;
191     protected CardLayout2Ext observersPanelLayout;
192     @ValidatorField( validatorId = "validator",  propertyName = "positioning",  editorName = "positioningCombo")
193     protected ExtendedComboBox<PositioningSystemDTO> positioningCombo;
194     protected JTextArea positioningCommentEditor;
195     protected JLabel positioningCommentLabel;
196     protected JLabel positioningLabel;
197     protected Table positioningPanel;
198     protected JLabel positioningPrecisionLabel;
199     @ValidatorField( validatorId = "validator",  propertyName = "positioningPrecision",  editorName = "positioningPrecisionText")
200     protected JLabel positioningPrecisionText;
201     @ValidatorField( validatorId = "validator",  propertyName = "program",  editorName = "programCombo")
202     protected ExtendedComboBox<ProgramDTO> programCombo;
203     protected JLabel programLabel;
204     protected JTextArea qualificationCommentEditor;
205     protected JLabel qualificationCommentLabel;
206     @ValidatorField( validatorId = "validator",  propertyName = "qualificationComment",  editorName = "qualificationCommentPanel")
207     protected JScrollPane qualificationCommentPanel;
208     @ValidatorField( validatorId = "validator",  propertyName = "qualificationDate",  editorName = "qualificationDateEditor")
209     protected JTextField qualificationDateEditor;
210     protected JLabel qualificationDateLabel;
211     protected JButton qualificationHistoryButton;
212     protected JTextField qualityFlagEditor;
213     protected JLabel qualityFlagLabel;
214     protected JTextField recorderDepartmentEditor;
215     protected JLabel recorderDepartmentLabel;
216     protected JButton showMapButton;
217     protected JPanel surveyCoordinatePanel;
218     protected SurveyDetailsTabUI surveyDetailsTabUI = this;
219     protected JLabel surveyLatitudeLabel;
220     @ValidatorField( validatorId = "validator",  propertyName = "latitudeMax",  editorName = "surveyLatitudeMaxEditor")
221     protected CoordinateEditor surveyLatitudeMaxEditor;
222     protected JLabel surveyLatitudeMaxLabel;
223     @ValidatorField( validatorId = "validator",  propertyName = "latitudeMin",  editorName = "surveyLatitudeMinEditor")
224     protected CoordinateEditor surveyLatitudeMinEditor;
225     protected JLabel surveyLatitudeMinLabel;
226     protected JLabel surveyLongitudeLabel;
227     @ValidatorField( validatorId = "validator",  propertyName = "longitudeMax",  editorName = "surveyLongitudeMaxEditor")
228     protected CoordinateEditor surveyLongitudeMaxEditor;
229     protected JLabel surveyLongitudeMaxLabel;
230     @ValidatorField( validatorId = "validator",  propertyName = "longitudeMin",  editorName = "surveyLongitudeMinEditor")
231     protected CoordinateEditor surveyLongitudeMinEditor;
232     protected JLabel surveyLongitudeMinLabel;
233     @ValidatorField( validatorId = "validator",  propertyName = "time",  editorName = "timeEditor")
234     protected LocalTimeEditor timeEditor;
235     @ValidatorField( validatorId = "validator",  propertyName = "ungroupedTableUIModel",  editorName = "ungroupedTable")
236     protected SurveyMeasurementsUngroupedTableUI ungroupedTable;
237     @ValidatorField( validatorId = "validator",  propertyName = "updateDate",  editorName = "updateDateEditor")
238     protected JTextField updateDateEditor;
239     protected JLabel updateDateLabel;
240     protected JTextArea validationCommentEditor;
241     protected JLabel validationCommentLabel;
242     @ValidatorField( validatorId = "validator",  propertyName = "validationComment",  editorName = "validationCommentPanel")
243     protected JScrollPane validationCommentPanel;
244     @ValidatorField( validatorId = "validator",  propertyName = "validationDate",  editorName = "validationDateEditor")
245     protected JTextField validationDateEditor;
246     protected JLabel validationDateLabel;
247     protected JButton validationHistoryButton;
248     @Validator( validatorId = "validator")
249     protected SwingValidator<SurveyDetailsTabUIModel> validator;
250     protected List<String> validatorIds = new ArrayList<String>();
251 
252     /*-----------------------------------------------------------------------*/
253     /*------------------------- Private components  -------------------------*/
254     /*-----------------------------------------------------------------------*/
255 
256     private JPanel $JPanel0;
257     private JPanel $JPanel1;
258     private JScrollPane $JScrollPane0;
259     private JScrollPane $JScrollPane1;
260     private JScrollPane $JScrollPane2;
261     private Table $Table0;
262     private Table $Table1;
263     private Table $Table2;
264     private Table $Table3;
265 
266     /*-----------------------------------------------------------------------*/
267     /*---------------------------- Constructors  ----------------------------*/
268     /*-----------------------------------------------------------------------*/
269 
270     public SurveyDetailsTabUI(ApplicationUI parentUI) {
271         ApplicationUIUtil.setParentUI(this, parentUI);
272             $initialize();
273     }
274 
275     public SurveyDetailsTabUI() {
276         $initialize();
277     }
278 
279     public SurveyDetailsTabUI(JAXXContext parentContext) {
280         JAXXUtil.initContext(this, parentContext);
281         $initialize();
282     }
283 
284     public SurveyDetailsTabUI(boolean param0) {
285         super(param0);
286         $initialize();
287     }
288 
289     public SurveyDetailsTabUI(JAXXContext parentContext, boolean param1) {
290         super(param1);
291         JAXXUtil.initContext(this, parentContext);
292         $initialize();
293     }
294 
295     public SurveyDetailsTabUI(LayoutManager param0) {
296         super(param0);
297         $initialize();
298     }
299 
300     public SurveyDetailsTabUI(JAXXContext parentContext, LayoutManager param1) {
301         super(param1);
302         JAXXUtil.initContext(this, parentContext);
303         $initialize();
304     }
305 
306     public SurveyDetailsTabUI(LayoutManager param0, boolean param1) {
307         super(param0 ,param1);
308         $initialize();
309     }
310 
311     public SurveyDetailsTabUI(JAXXContext parentContext, LayoutManager param1, boolean param2) {
312         super(param1 ,param2);
313         JAXXUtil.initContext(this, parentContext);
314         $initialize();
315     }
316 
317     /*-----------------------------------------------------------------------*/
318     /*--------------------------- Statics methods ---------------------------*/
319     /*-----------------------------------------------------------------------*/
320 
321     public static JAXXObjectDescriptor $getJAXXObjectDescriptor() {
322         return JAXXUtil.decodeCompressedJAXXObjectDescriptor($jaxxObjectDescriptor);
323     }
324 
325     /*-----------------------------------------------------------------------*/
326     /*---------------------- JAXXObject implementation ----------------------*/
327     /*-----------------------------------------------------------------------*/
328 
329     @Override
330     public void applyDataBinding(String $binding) {
331         if (allComponentsCreated && $bindings.containsKey($binding)) {
332             getDataBinding($binding).applyDataBinding();
333         }
334         processDataBinding($binding);
335     }
336 
337     @Override
338     public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
339         super.firePropertyChange(propertyName, oldValue, newValue);
340     }
341 
342     @Override
343     public Map<String, Object> get$objectMap() {
344         return $objectMap;
345     }
346 
347     @Override
348     public JAXXBinding getDataBinding(String bindingId) {
349         return $bindings.get(bindingId);
350     }
351 
352     @Override
353     public JAXXBinding[] getDataBindings() {
354         return $bindings.values().toArray(new JAXXBinding[$bindings.size()]);
355     }
356 
357     @Override
358     public Object getObjectById(String id) {
359         return $objectMap.get(id);
360     }
361 
362     @Override
363     public void processDataBinding(String $binding, boolean $force) {
364         if (!$force && $activeBindings.contains($binding)) { 
365             return;
366         }
367         $activeBindings.add($binding);
368         try {
369             if (allComponentsCreated && $bindings.containsKey($binding)) {
370                 getDataBinding($binding).processDataBinding();
371             }
372         } finally {
373             $activeBindings.remove($binding);
374         }
375     }
376 
377     @Override
378     public void processDataBinding(String $binding) {
379         processDataBinding($binding, false);
380     }
381 
382     @Override
383     public void registerDataBinding(JAXXBinding binding) {
384         $bindings.put(binding.getId(), binding);
385     }
386 
387     @Override
388     public void removeDataBinding(String $binding) {
389         if (allComponentsCreated && $bindings.containsKey($binding)) {
390             getDataBinding($binding).removeDataBinding();
391         }
392     }
393 
394     /*-----------------------------------------------------------------------*/
395     /*--------------------- JAXXContext implementation  ---------------------*/
396     /*-----------------------------------------------------------------------*/
397 
398     @Override
399     public <T> T getContextValue(Class<T> clazz) {
400         return delegateContext.getContextValue(clazz, null);
401     }
402 
403     @Override
404     public <T> T getContextValue(Class<T> clazz, String name) {
405         return delegateContext.getContextValue(clazz, name);
406     }
407 
408     @Override
409     public JAXXContext getDelegateContext() {
410         return delegateContext;
411     }
412 
413     @Override
414     public <O extends Container> O getParentContainer(Class<O> clazz) {
415         return SwingUtil.getParentContainer(this, clazz);
416     }
417 
418     @Override
419     public <O extends Container> O getParentContainer(Object source, Class<O> clazz) {
420         return SwingUtil.getParentContainer(source, clazz);
421     }
422 
423     @Override
424     public <T> void removeContextValue(Class<T> clazz) {
425         delegateContext.removeContextValue(clazz, null);
426     }
427 
428     @Override
429     public <T> void removeContextValue(Class<T> clazz, String name) {
430         delegateContext.removeContextValue(clazz, name);
431     }
432 
433     @Override
434     public <T> void setContextValue(T o) {
435         delegateContext.setContextValue(o, null);
436     }
437 
438     @Override
439     public <T> void setContextValue(T o, String name) {
440         delegateContext.setContextValue(o, name);
441     }
442 
443     /*-----------------------------------------------------------------------*/
444     /*-------------------- JAXXValidator implementation  --------------------*/
445     /*-----------------------------------------------------------------------*/
446 
447     @Override
448     public SwingValidator<?> getValidator(String validatorId) {
449         return (SwingValidator<?>) (validatorIds.contains(validatorId) ? getObjectById(validatorId) : null);
450     }
451 
452     @Override
453     public List<String> getValidatorIds() {
454         return validatorIds;
455     }
456 
457     @Override
458     public void registerValidatorFields() {
459         SwingValidatorUtil.detectValidatorFields(this);
460     }
461 
462     /*-----------------------------------------------------------------------*/
463     /*---------------------------- Event methods ----------------------------*/
464     /*-----------------------------------------------------------------------*/
465 
466     public void doActionPerformed__on__dateEditor(ActionEvent event) {
467         if (log.isDebugEnabled()) {
468             log.debug(event);
469         }
470         handler.setLocalDate(event, "date");
471     }
472 
473     public void doActionPerformed__on__qualificationHistoryButton(ActionEvent event) {
474         if (log.isDebugEnabled()) {
475             log.debug(event);
476         }
477         handler.showQualificationHistory();
478     }
479 
480     public void doActionPerformed__on__showMapButton(ActionEvent event) {
481         if (log.isDebugEnabled()) {
482             log.debug(event);
483         }
484         handler.showMap();
485     }
486 
487     public void doActionPerformed__on__timeEditor(ActionEvent event) {
488         if (log.isDebugEnabled()) {
489             log.debug(event);
490         }
491         handler.setTimeInSecond(event, "time");
492     }
493 
494     public void doActionPerformed__on__validationHistoryButton(ActionEvent event) {
495         if (log.isDebugEnabled()) {
496             log.debug(event);
497         }
498         handler.showValidationHistory();
499     }
500 
501     public void doFocusGained__on__$JScrollPane2(FocusEvent event) {
502         if (log.isDebugEnabled()) {
503             log.debug(event);
504         }
505         positioningCommentEditor.requestFocus();
506     }
507 
508     public void doFocusGained__on__commentScrollPane(FocusEvent event) {
509         if (log.isDebugEnabled()) {
510             log.debug(event);
511         }
512         commentEditor.requestFocus();
513     }
514 
515     public void doKeyReleased__on__commentEditor(KeyEvent event) {
516         if (log.isDebugEnabled()) {
517             log.debug(event);
518         }
519         handler.setText(event, "comment");
520     }
521 
522     public void doKeyReleased__on__nameEditor(KeyEvent event) {
523         if (log.isDebugEnabled()) {
524             log.debug(event);
525         }
526         handler.setText(event, "name");
527     }
528 
529     public void doKeyReleased__on__positioningCommentEditor(KeyEvent event) {
530         if (log.isDebugEnabled()) {
531             log.debug(event);
532         }
533         handler.setText(event, "positioningComment");
534     }
535 
536     /*-----------------------------------------------------------------------*/
537     /*----------------------- Public acessor methods  -----------------------*/
538     /*-----------------------------------------------------------------------*/
539 
540     public NumberEditor getBottomDepthEditor() {
541         return bottomDepthEditor;
542     }
543 
544     public JLabel getBottomDepthLabel() {
545         return bottomDepthLabel;
546     }
547 
548     public JPanel getBottomPanel() {
549         return bottomPanel;
550     }
551 
552     public DaliHelpBroker getBroker() {
553         return broker;
554     }
555 
556     public ExtendedComboBox<CampaignDTO> getCampaignCombo() {
557         return campaignCombo;
558     }
559 
560     public JLabel getCampaignLabel() {
561         return campaignLabel;
562     }
563 
564     public JTextArea getCommentEditor() {
565         return commentEditor;
566     }
567 
568     public JLabel getCommentLabel() {
569         return commentLabel;
570     }
571 
572     public JScrollPane getCommentScrollPane() {
573         return commentScrollPane;
574     }
575 
576     public JTextField getControlDateEditor() {
577         return controlDateEditor;
578     }
579 
580     public JLabel getControlDateLabel() {
581         return controlDateLabel;
582     }
583 
584     public JLocalDatePicker getDateEditor() {
585         return dateEditor;
586     }
587 
588     public JLabel getDateLabel() {
589         return dateLabel;
590     }
591 
592     public SurveyDetailsTabUIHandler getHandler() {
593         return handler;
594     }
595 
596     public JLabel getLatitudeLabel() {
597         return latitudeLabel;
598     }
599 
600     public JLabel getLatitudeMaxLabel() {
601         return latitudeMaxLabel;
602     }
603 
604     public JLabel getLatitudeMinLabel() {
605         return latitudeMinLabel;
606     }
607 
608     public JPanel getLifeCyclePanel() {
609         return lifeCyclePanel;
610     }
611 
612     public ExtendedComboBox<LocationDTO> getLocationCombo() {
613         return locationCombo;
614     }
615 
616     public Table getLocationCoordinatePanel() {
617         return locationCoordinatePanel;
618     }
619 
620     public JLabel getLocationLabel() {
621         return locationLabel;
622     }
623 
624     public CoordinateEditor getLocationMaxLatitudeEditor() {
625         return locationMaxLatitudeEditor;
626     }
627 
628     public CoordinateEditor getLocationMaxLongitudeEditor() {
629         return locationMaxLongitudeEditor;
630     }
631 
632     public CoordinateEditor getLocationMinLatitudeEditor() {
633         return locationMinLatitudeEditor;
634     }
635 
636     public CoordinateEditor getLocationMinLongitudeEditor() {
637         return locationMinLongitudeEditor;
638     }
639 
640     public JLabel getLongitudeLabel() {
641         return longitudeLabel;
642     }
643 
644     public JLabel getLongitudeMaxLabel() {
645         return longitudeMaxLabel;
646     }
647 
648     public JLabel getLongitudeMinLabel() {
649         return longitudeMinLabel;
650     }
651 
652     public JPanel getMainPanel() {
653         return mainPanel;
654     }
655 
656     public SurveyDetailsTabUIModel getModel() {
657         return model;
658     }
659 
660     public JTextField getNameEditor() {
661         return nameEditor;
662     }
663 
664     public JLabel getNameLabel() {
665         return nameLabel;
666     }
667 
668     public ExtendedBeanDoubleList<PersonDTO> getObserversDoubleList() {
669         return observersDoubleList;
670     }
671 
672     public JList<PersonDTO> getObserversList() {
673         return observersList;
674     }
675 
676     public JPanel getObserversPanel() {
677         return observersPanel;
678     }
679 
680     public CardLayout2Ext getObserversPanelLayout() {
681         return observersPanelLayout;
682     }
683 
684     public ExtendedComboBox<PositioningSystemDTO> getPositioningCombo() {
685         return positioningCombo;
686     }
687 
688     public JTextArea getPositioningCommentEditor() {
689         return positioningCommentEditor;
690     }
691 
692     public JLabel getPositioningCommentLabel() {
693         return positioningCommentLabel;
694     }
695 
696     public JLabel getPositioningLabel() {
697         return positioningLabel;
698     }
699 
700     public Table getPositioningPanel() {
701         return positioningPanel;
702     }
703 
704     public JLabel getPositioningPrecisionLabel() {
705         return positioningPrecisionLabel;
706     }
707 
708     public JLabel getPositioningPrecisionText() {
709         return positioningPrecisionText;
710     }
711 
712     public ExtendedComboBox<ProgramDTO> getProgramCombo() {
713         return programCombo;
714     }
715 
716     public JLabel getProgramLabel() {
717         return programLabel;
718     }
719 
720     public JTextArea getQualificationCommentEditor() {
721         return qualificationCommentEditor;
722     }
723 
724     public JLabel getQualificationCommentLabel() {
725         return qualificationCommentLabel;
726     }
727 
728     public JScrollPane getQualificationCommentPanel() {
729         return qualificationCommentPanel;
730     }
731 
732     public JTextField getQualificationDateEditor() {
733         return qualificationDateEditor;
734     }
735 
736     public JLabel getQualificationDateLabel() {
737         return qualificationDateLabel;
738     }
739 
740     public JButton getQualificationHistoryButton() {
741         return qualificationHistoryButton;
742     }
743 
744     public JTextField getQualityFlagEditor() {
745         return qualityFlagEditor;
746     }
747 
748     public JLabel getQualityFlagLabel() {
749         return qualityFlagLabel;
750     }
751 
752     public JTextField getRecorderDepartmentEditor() {
753         return recorderDepartmentEditor;
754     }
755 
756     public JLabel getRecorderDepartmentLabel() {
757         return recorderDepartmentLabel;
758     }
759 
760     public JButton getShowMapButton() {
761         return showMapButton;
762     }
763 
764     public JPanel getSurveyCoordinatePanel() {
765         return surveyCoordinatePanel;
766     }
767 
768     public JLabel getSurveyLatitudeLabel() {
769         return surveyLatitudeLabel;
770     }
771 
772     public CoordinateEditor getSurveyLatitudeMaxEditor() {
773         return surveyLatitudeMaxEditor;
774     }
775 
776     public JLabel getSurveyLatitudeMaxLabel() {
777         return surveyLatitudeMaxLabel;
778     }
779 
780     public CoordinateEditor getSurveyLatitudeMinEditor() {
781         return surveyLatitudeMinEditor;
782     }
783 
784     public JLabel getSurveyLatitudeMinLabel() {
785         return surveyLatitudeMinLabel;
786     }
787 
788     public JLabel getSurveyLongitudeLabel() {
789         return surveyLongitudeLabel;
790     }
791 
792     public CoordinateEditor getSurveyLongitudeMaxEditor() {
793         return surveyLongitudeMaxEditor;
794     }
795 
796     public JLabel getSurveyLongitudeMaxLabel() {
797         return surveyLongitudeMaxLabel;
798     }
799 
800     public CoordinateEditor getSurveyLongitudeMinEditor() {
801         return surveyLongitudeMinEditor;
802     }
803 
804     public JLabel getSurveyLongitudeMinLabel() {
805         return surveyLongitudeMinLabel;
806     }
807 
808     public LocalTimeEditor getTimeEditor() {
809         return timeEditor;
810     }
811 
812     public SurveyMeasurementsUngroupedTableUI getUngroupedTable() {
813         return ungroupedTable;
814     }
815 
816     public JTextField getUpdateDateEditor() {
817         return updateDateEditor;
818     }
819 
820     public JLabel getUpdateDateLabel() {
821         return updateDateLabel;
822     }
823 
824     public JTextArea getValidationCommentEditor() {
825         return validationCommentEditor;
826     }
827 
828     public JLabel getValidationCommentLabel() {
829         return validationCommentLabel;
830     }
831 
832     public JScrollPane getValidationCommentPanel() {
833         return validationCommentPanel;
834     }
835 
836     public JTextField getValidationDateEditor() {
837         return validationDateEditor;
838     }
839 
840     public JLabel getValidationDateLabel() {
841         return validationDateLabel;
842     }
843 
844     public JButton getValidationHistoryButton() {
845         return validationHistoryButton;
846     }
847 
848     public SwingValidator<SurveyDetailsTabUIModel> getValidator() {
849         return validator;
850     }
851 
852     /*-----------------------------------------------------------------------*/
853     /*---------------------------- Other methods ----------------------------*/
854     /*-----------------------------------------------------------------------*/
855 
856     @Override
857     public void registerHelpId(DaliHelpBroker broker, Component component, String helpId) {
858         broker.installUI(component, helpId);
859     }
860 
861     @Override
862     public void showHelp(String helpId) {
863         getBroker().showHelp(this, helpId);
864     }
865 
866     /*-----------------------------------------------------------------------*/
867     /*--------------------- Protected acessors methods  ---------------------*/
868     /*-----------------------------------------------------------------------*/
869 
870     protected JPanel get$JPanel0() {
871         return $JPanel0;
872     }
873 
874     protected JPanel get$JPanel1() {
875         return $JPanel1;
876     }
877 
878     protected JScrollPane get$JScrollPane0() {
879         return $JScrollPane0;
880     }
881 
882     protected JScrollPane get$JScrollPane1() {
883         return $JScrollPane1;
884     }
885 
886     protected JScrollPane get$JScrollPane2() {
887         return $JScrollPane2;
888     }
889 
890     protected Table get$Table0() {
891         return $Table0;
892     }
893 
894     protected Table get$Table1() {
895         return $Table1;
896     }
897 
898     protected Table get$Table2() {
899         return $Table2;
900     }
901 
902     protected Table get$Table3() {
903         return $Table3;
904     }
905 
906     /*-----------------------------------------------------------------------*/
907     /*--------------------- Components creation methods ---------------------*/
908     /*-----------------------------------------------------------------------*/
909 
910     protected void addChildrenToBottomPanel() {
911         if (!allComponentsCreated) {
912             return;
913         }
914         bottomPanel.add($JPanel0);
915         bottomPanel.add(SwingUtil.boxComponentWithJxLayer(ungroupedTable));
916         bottomPanel.add(lifeCyclePanel);
917     }
918 
919     protected void addChildrenToCommentScrollPane() {
920         if (!allComponentsCreated) {
921             return;
922         }
923         commentScrollPane.getViewport().add(commentEditor);
924     }
925 
926     protected void addChildrenToLifeCyclePanel() {
927         if (!allComponentsCreated) {
928             return;
929         }
930         lifeCyclePanel.add($Table2, BorderLayout.NORTH);
931         lifeCyclePanel.add($Table3);
932     }
933 
934     protected void addChildrenToLocationCoordinatePanel() {
935         if (!allComponentsCreated) {
936             return;
937         }
938         locationCoordinatePanel.add(latitudeLabel, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
939         locationCoordinatePanel.add(latitudeMinLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
940         locationCoordinatePanel.add(SwingUtil.boxComponentWithJxLayer(locationMinLatitudeEditor), new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
941         locationCoordinatePanel.add(latitudeMaxLabel, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
942         locationCoordinatePanel.add(SwingUtil.boxComponentWithJxLayer(locationMaxLatitudeEditor), new GridBagConstraints(4, 0, 1, 1, 1.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
943         locationCoordinatePanel.add(longitudeLabel, new GridBagConstraints(0, 1, 1, 1, 0.1, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
944         locationCoordinatePanel.add(longitudeMinLabel, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
945         locationCoordinatePanel.add(SwingUtil.boxComponentWithJxLayer(locationMinLongitudeEditor), new GridBagConstraints(2, 1, 1, 1, 1.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
946         locationCoordinatePanel.add(longitudeMaxLabel, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
947         locationCoordinatePanel.add(SwingUtil.boxComponentWithJxLayer(locationMaxLongitudeEditor), new GridBagConstraints(4, 1, 1, 1, 1.0, 0.0, 10, 2, new Insets(3, 3, 3, 3), 0, 0));
948     }
949 
950     protected void addChildrenToMainPanel() {
951         if (!allComponentsCreated) {
952             return;
953         }
954         mainPanel.add($Table0);
955         mainPanel.add(bottomPanel, BorderLayout.PAGE_END);
956     }
957 
958     protected void addChildrenToObserversPanel() {
959         if (!allComponentsCreated) {
960             return;
961         }
962         observersPanel.add($JScrollPane1, SurveyDetailsTabUIHandler.OBSERVERS_LIST);
963         observersPanel.add(SwingUtil.boxComponentWithJxLayer(observersDoubleList), SurveyDetailsTabUIHandler.OBSERVERS_DOUBLE_LIST);
964     }
965 
966     protected void addChildrenToPositioningPanel() {
967         if (!allComponentsCreated) {
968             return;
969         }
970         positioningPanel.add(positioningLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
971         positioningPanel.add(SwingUtil.boxComponentWithJxLayer(positioningCombo), new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
972         positioningPanel.add(positioningPrecisionLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
973         positioningPanel.add(SwingUtil.boxComponentWithJxLayer(positioningPrecisionText), new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
974         positioningPanel.add(positioningCommentLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
975         positioningPanel.add($JScrollPane2, new GridBagConstraints(1, 2, 1, 1, 1.0, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
976     }
977 
978     protected void addChildrenToQualificationCommentPanel() {
979         if (!allComponentsCreated) {
980             return;
981         }
982         qualificationCommentPanel.getViewport().add(qualificationCommentEditor);
983     }
984 
985     protected void addChildrenToSurveyCoordinatePanel() {
986         if (!allComponentsCreated) {
987             return;
988         }
989         surveyCoordinatePanel.add($JPanel1, BorderLayout.LINE_END);
990         surveyCoordinatePanel.add($Table1);
991     }
992 
993     protected void addChildrenToSurveyDetailsTabUI() {
994         if (!allComponentsCreated) {
995             return;
996         }
997         add($JScrollPane0);
998     }
999 
1000     protected void addChildrenToValidationCommentPanel() {
1001         if (!allComponentsCreated) {
1002             return;
1003         }
1004         validationCommentPanel.getViewport().add(validationCommentEditor);
1005     }
1006 
1007     protected void addChildrenToValidator() {
1008         if (!allComponentsCreated) {
1009             return;
1010         }
1011         validator.setUiClass(BorderValidationUI.class);
1012         validator.setBean(model);
1013     }
1014 
1015     protected void createBottomDepthEditor() {
1016         $objectMap.put("bottomDepthEditor", bottomDepthEditor = new NumberEditor(this));
1017         
1018         bottomDepthEditor.setName("bottomDepthEditor");
1019         bottomDepthEditor.setProperty("bottomDepth");
1020         bottomDepthEditor.setShowReset(true);
1021         bottomDepthEditor.putClientProperty("selectOnFocus", true);
1022     }
1023 
1024     protected void createBottomDepthLabel() {
1025         $objectMap.put("bottomDepthLabel", bottomDepthLabel = new JLabel());
1026         
1027         bottomDepthLabel.setName("bottomDepthLabel");
1028         bottomDepthLabel.setText(t("dali.property.depth.bottom"));
1029     }
1030 
1031     protected void createBottomPanel() {
1032         $objectMap.put("bottomPanel", bottomPanel = new JPanel());
1033         
1034         bottomPanel.setName("bottomPanel");
1035         bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.PAGE_AXIS));
1036     }
1037 
1038     protected void createBroker() {
1039         $objectMap.put("broker", broker = new DaliHelpBroker("dali.home.help"));
1040     }
1041 
1042     protected void createCampaignCombo() {
1043         $objectMap.put("campaignCombo", campaignCombo = new ExtendedComboBox<CampaignDTO>(this));
1044         
1045         campaignCombo.setName("campaignCombo");
1046         campaignCombo.setFilterable(true);
1047         campaignCombo.setShowDecorator(false);
1048         campaignCombo.setProperty("campaign");
1049         campaignCombo.setActionToolTipI18n("dali.common.unfilter");
1050         campaignCombo.setShowReset(true);
1051         campaignCombo.setShowActionButton(true);
1052         campaignCombo.putClientProperty("validatorLabel", t("dali.property.program"));
1053     }
1054 
1055     protected void createCampaignLabel() {
1056         $objectMap.put("campaignLabel", campaignLabel = new JLabel());
1057         
1058         campaignLabel.setName("campaignLabel");
1059         campaignLabel.setText(t("dali.property.campaign"));
1060     }
1061 
1062     protected void createCommentEditor() {
1063         $objectMap.put("commentEditor", commentEditor = new JTextArea());
1064         
1065         commentEditor.setName("commentEditor");
1066         commentEditor.setColumns(15);
1067         commentEditor.setLineWrap(true);
1068         commentEditor.setWrapStyleWord(true);
1069         commentEditor.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__commentEditor"));
1070     }
1071 
1072     protected void createCommentLabel() {
1073         $objectMap.put("commentLabel", commentLabel = new JLabel());
1074         
1075         commentLabel.setName("commentLabel");
1076         commentLabel.setText(t("dali.property.comment"));
1077     }
1078 
1079     protected void createCommentScrollPane() {
1080         $objectMap.put("commentScrollPane", commentScrollPane = new JScrollPane());
1081         
1082         commentScrollPane.setName("commentScrollPane");
1083         commentScrollPane.addFocusListener(JAXXUtil.getEventListener(FocusListener.class, "focusGained", this, "doFocusGained__on__commentScrollPane"));
1084     }
1085 
1086     protected void createControlDateEditor() {
1087         $objectMap.put("controlDateEditor", controlDateEditor = new JTextField());
1088         
1089         controlDateEditor.setName("controlDateEditor");
1090         controlDateEditor.setColumns(15);
1091         controlDateEditor.setEnabled(false);
1092     }
1093 
1094     protected void createControlDateLabel() {
1095         $objectMap.put("controlDateLabel", controlDateLabel = new JLabel());
1096         
1097         controlDateLabel.setName("controlDateLabel");
1098         controlDateLabel.setText(t("dali.property.date.control"));
1099     }
1100 
1101     protected void createDateEditor() {
1102         $objectMap.put("dateEditor", dateEditor = new JLocalDatePicker());
1103         
1104         dateEditor.setName("dateEditor");
1105         dateEditor.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__dateEditor"));
1106     }
1107 
1108     protected void createDateLabel() {
1109         $objectMap.put("dateLabel", dateLabel = new JLabel());
1110         
1111         dateLabel.setName("dateLabel");
1112         dateLabel.setText(t("dali.property.date"));
1113     }
1114 
1115     protected SurveyDetailsTabUIHandler createHandler() {
1116         return new SurveyDetailsTabUIHandler();
1117     }
1118 
1119     protected void createLatitudeLabel() {
1120         $objectMap.put("latitudeLabel", latitudeLabel = new JLabel());
1121         
1122         latitudeLabel.setName("latitudeLabel");
1123         latitudeLabel.setText(t("dali.property.latitude"));
1124     }
1125 
1126     protected void createLatitudeMaxLabel() {
1127         $objectMap.put("latitudeMaxLabel", latitudeMaxLabel = new JLabel());
1128         
1129         latitudeMaxLabel.setName("latitudeMaxLabel");
1130         latitudeMaxLabel.setText(t("dali.property.max"));
1131     }
1132 
1133     protected void createLatitudeMinLabel() {
1134         $objectMap.put("latitudeMinLabel", latitudeMinLabel = new JLabel());
1135         
1136         latitudeMinLabel.setName("latitudeMinLabel");
1137         latitudeMinLabel.setText(t("dali.property.min"));
1138     }
1139 
1140     protected void createLifeCyclePanel() {
1141         $objectMap.put("lifeCyclePanel", lifeCyclePanel = new JPanel());
1142         
1143         lifeCyclePanel.setName("lifeCyclePanel");
1144         lifeCyclePanel.setLayout(new BorderLayout());
1145     }
1146 
1147     protected void createLocationCombo() {
1148         $objectMap.put("locationCombo", locationCombo = new ExtendedComboBox<LocationDTO>(this));
1149         
1150         locationCombo.setName("locationCombo");
1151         locationCombo.setFilterable(true);
1152         locationCombo.setShowDecorator(false);
1153         locationCombo.setProperty("location");
1154         locationCombo.setActionToolTipI18n("dali.common.unfilter");
1155         locationCombo.setShowReset(true);
1156         locationCombo.setShowActionButton(true);
1157         locationCombo.putClientProperty("validatorLabel", t("dali.property.location"));
1158     }
1159 
1160     protected void createLocationCoordinatePanel() {
1161         $objectMap.put("locationCoordinatePanel", locationCoordinatePanel = new Table());
1162         
1163         locationCoordinatePanel.setName("locationCoordinatePanel");
1164     }
1165 
1166     protected void createLocationLabel() {
1167         $objectMap.put("locationLabel", locationLabel = new JLabel());
1168         
1169         locationLabel.setName("locationLabel");
1170         locationLabel.setText(t("dali.property.location"));
1171     }
1172 
1173     protected void createLocationMaxLatitudeEditor() {
1174         $objectMap.put("locationMaxLatitudeEditor", locationMaxLatitudeEditor = new CoordinateEditor(this));
1175         
1176         locationMaxLatitudeEditor.setName("locationMaxLatitudeEditor");
1177         locationMaxLatitudeEditor.setShowPopupButton(false);
1178         locationMaxLatitudeEditor.setProperty("locationMaxLatitude");
1179         locationMaxLatitudeEditor.setShowReset(false);
1180         locationMaxLatitudeEditor.setEnabled(false);
1181         locationMaxLatitudeEditor.putClientProperty("selectOnFocus", true);
1182     }
1183 
1184     protected void createLocationMaxLongitudeEditor() {
1185         $objectMap.put("locationMaxLongitudeEditor", locationMaxLongitudeEditor = new CoordinateEditor(this));
1186         
1187         locationMaxLongitudeEditor.setName("locationMaxLongitudeEditor");
1188         locationMaxLongitudeEditor.setShowPopupButton(false);
1189         locationMaxLongitudeEditor.setProperty("locationMaxLongitude");
1190         locationMaxLongitudeEditor.setShowReset(false);
1191         locationMaxLongitudeEditor.setEnabled(false);
1192         locationMaxLongitudeEditor.putClientProperty("selectOnFocus", true);
1193     }
1194 
1195     protected void createLocationMinLatitudeEditor() {
1196         $objectMap.put("locationMinLatitudeEditor", locationMinLatitudeEditor = new CoordinateEditor(this));
1197         
1198         locationMinLatitudeEditor.setName("locationMinLatitudeEditor");
1199         locationMinLatitudeEditor.setShowPopupButton(false);
1200         locationMinLatitudeEditor.setProperty("locationMinLatitude");
1201         locationMinLatitudeEditor.setShowReset(false);
1202         locationMinLatitudeEditor.setEnabled(false);
1203         locationMinLatitudeEditor.putClientProperty("selectOnFocus", true);
1204     }
1205 
1206     protected void createLocationMinLongitudeEditor() {
1207         $objectMap.put("locationMinLongitudeEditor", locationMinLongitudeEditor = new CoordinateEditor(this));
1208         
1209         locationMinLongitudeEditor.setName("locationMinLongitudeEditor");
1210         locationMinLongitudeEditor.setShowPopupButton(false);
1211         locationMinLongitudeEditor.setProperty("locationMinLongitude");
1212         locationMinLongitudeEditor.setShowReset(false);
1213         locationMinLongitudeEditor.setEnabled(false);
1214         locationMinLongitudeEditor.putClientProperty("selectOnFocus", true);
1215     }
1216 
1217     protected void createLongitudeLabel() {
1218         $objectMap.put("longitudeLabel", longitudeLabel = new JLabel());
1219         
1220         longitudeLabel.setName("longitudeLabel");
1221         longitudeLabel.setText(t("dali.property.longitude"));
1222     }
1223 
1224     protected void createLongitudeMaxLabel() {
1225         $objectMap.put("longitudeMaxLabel", longitudeMaxLabel = new JLabel());
1226         
1227         longitudeMaxLabel.setName("longitudeMaxLabel");
1228         longitudeMaxLabel.setText(t("dali.property.max"));
1229     }
1230 
1231     protected void createLongitudeMinLabel() {
1232         $objectMap.put("longitudeMinLabel", longitudeMinLabel = new JLabel());
1233         
1234         longitudeMinLabel.setName("longitudeMinLabel");
1235         longitudeMinLabel.setText(t("dali.property.min"));
1236     }
1237 
1238     protected void createMainPanel() {
1239         $objectMap.put("mainPanel", mainPanel = new JPanel());
1240         
1241         mainPanel.setName("mainPanel");
1242         mainPanel.setLayout(new BorderLayout());
1243     }
1244 
1245     protected void createModel() {
1246         $objectMap.put("model", model = getContextValue(SurveyDetailsTabUIModel.class));
1247     }
1248 
1249     protected void createNameEditor() {
1250         $objectMap.put("nameEditor", nameEditor = new JTextField());
1251         
1252         nameEditor.setName("nameEditor");
1253         nameEditor.setColumns(15);
1254         nameEditor.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__nameEditor"));
1255     }
1256 
1257     protected void createNameLabel() {
1258         $objectMap.put("nameLabel", nameLabel = new JLabel());
1259         
1260         nameLabel.setName("nameLabel");
1261         nameLabel.setText(t("dali.property.mnemonic"));
1262     }
1263 
1264     protected void createObserversDoubleList() {
1265         $objectMap.put("observersDoubleList", observersDoubleList = new ExtendedBeanDoubleList<PersonDTO>());
1266         
1267         observersDoubleList.setName("observersDoubleList");
1268         observersDoubleList.setFilterable(true);
1269         observersDoubleList.setShowDecorator(false);
1270         observersDoubleList.setProperty("selectedObservers");
1271     }
1272 
1273     protected void createObserversList() {
1274         $objectMap.put("observersList", observersList = new JList<PersonDTO>());
1275         
1276         observersList.setName("observersList");
1277         observersList.setEnabled(false);
1278     }
1279 
1280     protected void createObserversPanel() {
1281         $objectMap.put("observersPanel", observersPanel = new JPanel());
1282         
1283         observersPanel.setName("observersPanel");
1284         observersPanel.setLayout(observersPanelLayout);
1285     }
1286 
1287     protected void createObserversPanelLayout() {
1288         $objectMap.put("observersPanelLayout", observersPanelLayout = new CardLayout2Ext(this, "observersPanel"));
1289     }
1290 
1291     protected void createPositioningCombo() {
1292         $objectMap.put("positioningCombo", positioningCombo = new ExtendedComboBox<PositioningSystemDTO>(this));
1293         
1294         positioningCombo.setName("positioningCombo");
1295         positioningCombo.setFilterable(true);
1296         positioningCombo.setShowDecorator(false);
1297         positioningCombo.setProperty("positioning");
1298         positioningCombo.setShowReset(true);
1299     }
1300 
1301     protected void createPositioningCommentEditor() {
1302         $objectMap.put("positioningCommentEditor", positioningCommentEditor = new JTextArea());
1303         
1304         positioningCommentEditor.setName("positioningCommentEditor");
1305         positioningCommentEditor.setColumns(15);
1306         positioningCommentEditor.setLineWrap(true);
1307         positioningCommentEditor.setWrapStyleWord(true);
1308         positioningCommentEditor.setRows(2);
1309         positioningCommentEditor.addKeyListener(JAXXUtil.getEventListener(KeyListener.class, "keyReleased", this, "doKeyReleased__on__positioningCommentEditor"));
1310     }
1311 
1312     protected void createPositioningCommentLabel() {
1313         $objectMap.put("positioningCommentLabel", positioningCommentLabel = new JLabel());
1314         
1315         positioningCommentLabel.setName("positioningCommentLabel");
1316         positioningCommentLabel.setText(t("dali.property.comment"));
1317     }
1318 
1319     protected void createPositioningLabel() {
1320         $objectMap.put("positioningLabel", positioningLabel = new JLabel());
1321         
1322         positioningLabel.setName("positioningLabel");
1323         positioningLabel.setText(t("dali.property.name"));
1324     }
1325 
1326     protected void createPositioningPanel() {
1327         $objectMap.put("positioningPanel", positioningPanel = new Table());
1328         
1329         positioningPanel.setName("positioningPanel");
1330     }
1331 
1332     protected void createPositioningPrecisionLabel() {
1333         $objectMap.put("positioningPrecisionLabel", positioningPrecisionLabel = new JLabel());
1334         
1335         positioningPrecisionLabel.setName("positioningPrecisionLabel");
1336         positioningPrecisionLabel.setText(t("dali.property.precision"));
1337     }
1338 
1339     protected void createPositioningPrecisionText() {
1340         $objectMap.put("positioningPrecisionText", positioningPrecisionText = new JLabel());
1341         
1342         positioningPrecisionText.setName("positioningPrecisionText");
1343     }
1344 
1345     protected void createProgramCombo() {
1346         $objectMap.put("programCombo", programCombo = new ExtendedComboBox<ProgramDTO>(this));
1347         
1348         programCombo.setName("programCombo");
1349         programCombo.setFilterable(true);
1350         programCombo.setShowDecorator(false);
1351         programCombo.setProperty("program");
1352         programCombo.setActionToolTipI18n("dali.common.unfilter");
1353         programCombo.setShowReset(true);
1354         programCombo.setShowActionButton(true);
1355         programCombo.putClientProperty("validatorLabel", t("dali.property.program"));
1356     }
1357 
1358     protected void createProgramLabel() {
1359         $objectMap.put("programLabel", programLabel = new JLabel());
1360         
1361         programLabel.setName("programLabel");
1362         programLabel.setText(t("dali.property.program"));
1363     }
1364 
1365     protected void createQualificationCommentEditor() {
1366         $objectMap.put("qualificationCommentEditor", qualificationCommentEditor = new JTextArea());
1367         
1368         qualificationCommentEditor.setName("qualificationCommentEditor");
1369         qualificationCommentEditor.setColumns(15);
1370         qualificationCommentEditor.setLineWrap(true);
1371         qualificationCommentEditor.setWrapStyleWord(true);
1372         qualificationCommentEditor.setEnabled(false);
1373         qualificationCommentEditor.setRows(2);
1374     }
1375 
1376     protected void createQualificationCommentLabel() {
1377         $objectMap.put("qualificationCommentLabel", qualificationCommentLabel = new JLabel());
1378         
1379         qualificationCommentLabel.setName("qualificationCommentLabel");
1380         qualificationCommentLabel.setText(t("dali.property.comment.qualification"));
1381     }
1382 
1383     protected void createQualificationCommentPanel() {
1384         $objectMap.put("qualificationCommentPanel", qualificationCommentPanel = new JScrollPane());
1385         
1386         qualificationCommentPanel.setName("qualificationCommentPanel");
1387     }
1388 
1389     protected void createQualificationDateEditor() {
1390         $objectMap.put("qualificationDateEditor", qualificationDateEditor = new JTextField());
1391         
1392         qualificationDateEditor.setName("qualificationDateEditor");
1393         qualificationDateEditor.setColumns(15);
1394         qualificationDateEditor.setEnabled(false);
1395     }
1396 
1397     protected void createQualificationDateLabel() {
1398         $objectMap.put("qualificationDateLabel", qualificationDateLabel = new JLabel());
1399         
1400         qualificationDateLabel.setName("qualificationDateLabel");
1401         qualificationDateLabel.setText(t("dali.property.date.qualification"));
1402     }
1403 
1404     protected void createQualificationHistoryButton() {
1405         $objectMap.put("qualificationHistoryButton", qualificationHistoryButton = new JButton());
1406         
1407         qualificationHistoryButton.setName("qualificationHistoryButton");
1408         qualificationHistoryButton.setText(t("dali.common.history"));
1409         qualificationHistoryButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__qualificationHistoryButton"));
1410     }
1411 
1412     protected void createQualityFlagEditor() {
1413         $objectMap.put("qualityFlagEditor", qualityFlagEditor = new JTextField());
1414         
1415         qualityFlagEditor.setName("qualityFlagEditor");
1416         qualityFlagEditor.setColumns(15);
1417         qualityFlagEditor.setEnabled(false);
1418     }
1419 
1420     protected void createQualityFlagLabel() {
1421         $objectMap.put("qualityFlagLabel", qualityFlagLabel = new JLabel());
1422         
1423         qualityFlagLabel.setName("qualityFlagLabel");
1424         qualityFlagLabel.setText(t("dali.property.qualityFlag"));
1425     }
1426 
1427     protected void createRecorderDepartmentEditor() {
1428         $objectMap.put("recorderDepartmentEditor", recorderDepartmentEditor = new JTextField());
1429         
1430         recorderDepartmentEditor.setName("recorderDepartmentEditor");
1431         recorderDepartmentEditor.setColumns(15);
1432         recorderDepartmentEditor.setEnabled(false);
1433     }
1434 
1435     protected void createRecorderDepartmentLabel() {
1436         $objectMap.put("recorderDepartmentLabel", recorderDepartmentLabel = new JLabel());
1437         
1438         recorderDepartmentLabel.setName("recorderDepartmentLabel");
1439         recorderDepartmentLabel.setText(t("dali.property.department.recorder"));
1440     }
1441 
1442     protected void createShowMapButton() {
1443         $objectMap.put("showMapButton", showMapButton = new JButton());
1444         
1445         showMapButton.setName("showMapButton");
1446         showMapButton.setToolTipText(t("dali.action.map.show.tip"));
1447         showMapButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__showMapButton"));
1448     }
1449 
1450     protected void createSurveyCoordinatePanel() {
1451         $objectMap.put("surveyCoordinatePanel", surveyCoordinatePanel = new JPanel());
1452         
1453         surveyCoordinatePanel.setName("surveyCoordinatePanel");
1454         surveyCoordinatePanel.setLayout(new BorderLayout());
1455     }
1456 
1457     protected void createSurveyLatitudeLabel() {
1458         $objectMap.put("surveyLatitudeLabel", surveyLatitudeLabel = new JLabel());
1459         
1460         surveyLatitudeLabel.setName("surveyLatitudeLabel");
1461         surveyLatitudeLabel.setText(t("dali.survey.coordinates.latitude"));
1462     }
1463 
1464     protected void createSurveyLatitudeMaxEditor() {
1465         $objectMap.put("surveyLatitudeMaxEditor", surveyLatitudeMaxEditor = new CoordinateEditor(this));
1466         
1467         surveyLatitudeMaxEditor.setName("surveyLatitudeMaxEditor");
1468         surveyLatitudeMaxEditor.setProperty("latitudeMax");
1469         surveyLatitudeMaxEditor.setShowReset(true);
1470         surveyLatitudeMaxEditor.putClientProperty("selectOnFocus", true);
1471     }
1472 
1473     protected void createSurveyLatitudeMaxLabel() {
1474         $objectMap.put("surveyLatitudeMaxLabel", surveyLatitudeMaxLabel = new JLabel());
1475         
1476         surveyLatitudeMaxLabel.setName("surveyLatitudeMaxLabel");
1477         surveyLatitudeMaxLabel.setText(t("dali.property.end"));
1478     }
1479 
1480     protected void createSurveyLatitudeMinEditor() {
1481         $objectMap.put("surveyLatitudeMinEditor", surveyLatitudeMinEditor = new CoordinateEditor(this));
1482         
1483         surveyLatitudeMinEditor.setName("surveyLatitudeMinEditor");
1484         surveyLatitudeMinEditor.setProperty("latitudeMin");
1485         surveyLatitudeMinEditor.setShowReset(true);
1486         surveyLatitudeMinEditor.putClientProperty("selectOnFocus", true);
1487     }
1488 
1489     protected void createSurveyLatitudeMinLabel() {
1490         $objectMap.put("surveyLatitudeMinLabel", surveyLatitudeMinLabel = new JLabel());
1491         
1492         surveyLatitudeMinLabel.setName("surveyLatitudeMinLabel");
1493         surveyLatitudeMinLabel.setText(t("dali.property.start"));
1494     }
1495 
1496     protected void createSurveyLongitudeLabel() {
1497         $objectMap.put("surveyLongitudeLabel", surveyLongitudeLabel = new JLabel());
1498         
1499         surveyLongitudeLabel.setName("surveyLongitudeLabel");
1500         surveyLongitudeLabel.setText(t("dali.survey.coordinates.longitude"));
1501     }
1502 
1503     protected void createSurveyLongitudeMaxEditor() {
1504         $objectMap.put("surveyLongitudeMaxEditor", surveyLongitudeMaxEditor = new CoordinateEditor(this));
1505         
1506         surveyLongitudeMaxEditor.setName("surveyLongitudeMaxEditor");
1507         surveyLongitudeMaxEditor.setProperty("longitudeMax");
1508         surveyLongitudeMaxEditor.setShowReset(true);
1509         surveyLongitudeMaxEditor.putClientProperty("selectOnFocus", true);
1510     }
1511 
1512     protected void createSurveyLongitudeMaxLabel() {
1513         $objectMap.put("surveyLongitudeMaxLabel", surveyLongitudeMaxLabel = new JLabel());
1514         
1515         surveyLongitudeMaxLabel.setName("surveyLongitudeMaxLabel");
1516         surveyLongitudeMaxLabel.setText(t("dali.property.end"));
1517     }
1518 
1519     protected void createSurveyLongitudeMinEditor() {
1520         $objectMap.put("surveyLongitudeMinEditor", surveyLongitudeMinEditor = new CoordinateEditor(this));
1521         
1522         surveyLongitudeMinEditor.setName("surveyLongitudeMinEditor");
1523         surveyLongitudeMinEditor.setProperty("longitudeMin");
1524         surveyLongitudeMinEditor.setShowReset(true);
1525         surveyLongitudeMinEditor.putClientProperty("selectOnFocus", true);
1526     }
1527 
1528     protected void createSurveyLongitudeMinLabel() {
1529         $objectMap.put("surveyLongitudeMinLabel", surveyLongitudeMinLabel = new JLabel());
1530         
1531         surveyLongitudeMinLabel.setName("surveyLongitudeMinLabel");
1532         surveyLongitudeMinLabel.setText(t("dali.property.start"));
1533     }
1534 
1535     protected void createTimeEditor() {
1536         $objectMap.put("timeEditor", timeEditor = new LocalTimeEditor());
1537         
1538         timeEditor.setName("timeEditor");
1539         timeEditor.setColumns(15);
1540         timeEditor.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__timeEditor"));
1541     }
1542 
1543     protected void createUngroupedTable() {
1544         $objectMap.put("ungroupedTable", ungroupedTable = new SurveyMeasurementsUngroupedTableUI(this));
1545         
1546         ungroupedTable.setName("ungroupedTable");
1547         ungroupedTable.putClientProperty("validatorLabel", t("dali.survey.measurement.ungrouped.table"));
1548     }
1549 
1550     protected void createUpdateDateEditor() {
1551         $objectMap.put("updateDateEditor", updateDateEditor = new JTextField());
1552         
1553         updateDateEditor.setName("updateDateEditor");
1554         updateDateEditor.setColumns(15);
1555         updateDateEditor.setEnabled(false);
1556     }
1557 
1558     protected void createUpdateDateLabel() {
1559         $objectMap.put("updateDateLabel", updateDateLabel = new JLabel());
1560         
1561         updateDateLabel.setName("updateDateLabel");
1562         updateDateLabel.setText(t("dali.property.date.modification"));
1563     }
1564 
1565     protected void createValidationCommentEditor() {
1566         $objectMap.put("validationCommentEditor", validationCommentEditor = new JTextArea());
1567         
1568         validationCommentEditor.setName("validationCommentEditor");
1569         validationCommentEditor.setColumns(15);
1570         validationCommentEditor.setLineWrap(true);
1571         validationCommentEditor.setWrapStyleWord(true);
1572         validationCommentEditor.setEnabled(false);
1573         validationCommentEditor.setRows(2);
1574     }
1575 
1576     protected void createValidationCommentLabel() {
1577         $objectMap.put("validationCommentLabel", validationCommentLabel = new JLabel());
1578         
1579         validationCommentLabel.setName("validationCommentLabel");
1580         validationCommentLabel.setText(t("dali.property.comment.validation"));
1581     }
1582 
1583     protected void createValidationCommentPanel() {
1584         $objectMap.put("validationCommentPanel", validationCommentPanel = new JScrollPane());
1585         
1586         validationCommentPanel.setName("validationCommentPanel");
1587     }
1588 
1589     protected void createValidationDateEditor() {
1590         $objectMap.put("validationDateEditor", validationDateEditor = new JTextField());
1591         
1592         validationDateEditor.setName("validationDateEditor");
1593         validationDateEditor.setColumns(15);
1594         validationDateEditor.setEnabled(false);
1595     }
1596 
1597     protected void createValidationDateLabel() {
1598         $objectMap.put("validationDateLabel", validationDateLabel = new JLabel());
1599         
1600         validationDateLabel.setName("validationDateLabel");
1601         validationDateLabel.setText(t("dali.property.date.validation"));
1602     }
1603 
1604     protected void createValidationHistoryButton() {
1605         $objectMap.put("validationHistoryButton", validationHistoryButton = new JButton());
1606         
1607         validationHistoryButton.setName("validationHistoryButton");
1608         validationHistoryButton.setText(t("dali.common.history"));
1609         validationHistoryButton.addActionListener(JAXXUtil.getEventListener(ActionListener.class, "actionPerformed", this, "doActionPerformed__on__validationHistoryButton"));
1610     }
1611 
1612     protected void createValidator() {
1613         $objectMap.put("validator", validator = SwingValidator.newValidator(SurveyDetailsTabUIModel.class, null));
1614     }
1615 
1616     /*-----------------------------------------------------------------------*/
1617     /*------------------------ Internal jaxx methods ------------------------*/
1618     /*-----------------------------------------------------------------------*/
1619 
1620     private void $completeSetup() {
1621         allComponentsCreated = true;
1622         if (log.isDebugEnabled()) {
1623             log.debug(this);
1624         }
1625         addChildrenToSurveyDetailsTabUI();
1626         addChildrenToValidator();
1627         // inline complete setup of $JScrollPane0
1628         $JScrollPane0.getViewport().add(mainPanel);
1629         addChildrenToMainPanel();
1630         // inline complete setup of $Table0
1631         $Table0.add(locationLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1632         $Table0.add(SwingUtil.boxComponentWithJxLayer(locationCombo), new GridBagConstraints(1, 0, 1, 1, 0.5, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1633         $Table0.add(dateLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1634         $Table0.add(SwingUtil.boxComponentWithJxLayer(dateEditor), new GridBagConstraints(3, 0, 1, 1, 0.25, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1635         $Table0.add(SwingUtil.boxComponentWithJxLayer(timeEditor), new GridBagConstraints(4, 0, 1, 1, 0.25, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1636         $Table0.add(programLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1637         $Table0.add(SwingUtil.boxComponentWithJxLayer(programCombo), new GridBagConstraints(1, 1, 1, 1, 0.5, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1638         $Table0.add(nameLabel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1639         $Table0.add(SwingUtil.boxComponentWithJxLayer(nameEditor), new GridBagConstraints(3, 1, 2, 1, 0.5, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1640         $Table0.add(bottomDepthLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1641         $Table0.add(SwingUtil.boxComponentWithJxLayer(bottomDepthEditor), new GridBagConstraints(1, 2, 1, 1, 0.5, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1642         $Table0.add(observersPanel, new GridBagConstraints(2, 2, 3, 3, 0.5, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1643         $Table0.add(campaignLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1644         $Table0.add(SwingUtil.boxComponentWithJxLayer(campaignCombo), new GridBagConstraints(1, 3, 1, 1, 0.5, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1645         $Table0.add(commentLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1646         $Table0.add(SwingUtil.boxComponentWithJxLayer(commentScrollPane), new GridBagConstraints(1, 4, 1, 1, 0.5, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1647         addChildrenToObserversPanel();
1648         // inline complete setup of $JScrollPane1
1649         $JScrollPane1.getViewport().add(observersList);
1650         addChildrenToCommentScrollPane();
1651         addChildrenToBottomPanel();
1652         // inline complete setup of $JPanel0
1653         $JPanel0.add(locationCoordinatePanel);
1654         $JPanel0.add(surveyCoordinatePanel);
1655         $JPanel0.add(positioningPanel);
1656         addChildrenToLocationCoordinatePanel();
1657         addChildrenToSurveyCoordinatePanel();
1658         // inline complete setup of $JPanel1
1659         $JPanel1.add(showMapButton);
1660         // inline complete setup of $Table1
1661         $Table1.add(surveyLatitudeLabel, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1662         $Table1.add(surveyLatitudeMinLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1663         $Table1.add(SwingUtil.boxComponentWithJxLayer(surveyLatitudeMinEditor), new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1664         $Table1.add(surveyLatitudeMaxLabel, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1665         $Table1.add(SwingUtil.boxComponentWithJxLayer(surveyLatitudeMaxEditor), new GridBagConstraints(4, 0, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1666         $Table1.add(surveyLongitudeLabel, new GridBagConstraints(0, 1, 1, 1, 0.1, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1667         $Table1.add(surveyLongitudeMinLabel, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1668         $Table1.add(SwingUtil.boxComponentWithJxLayer(surveyLongitudeMinEditor), new GridBagConstraints(2, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1669         $Table1.add(surveyLongitudeMaxLabel, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1670         $Table1.add(SwingUtil.boxComponentWithJxLayer(surveyLongitudeMaxEditor), new GridBagConstraints(4, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1671         addChildrenToPositioningPanel();
1672         // inline complete setup of $JScrollPane2
1673         $JScrollPane2.getViewport().add(positioningCommentEditor);
1674         addChildrenToLifeCyclePanel();
1675         // inline complete setup of $Table2
1676         $Table2.add(recorderDepartmentLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1677         $Table2.add(recorderDepartmentEditor, new GridBagConstraints(1, 0, 3, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1678         $Table2.add(qualityFlagLabel, new GridBagConstraints(4, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1679         $Table2.add(qualityFlagEditor, new GridBagConstraints(5, 0, 3, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1680         $Table2.add(updateDateLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1681         $Table2.add(SwingUtil.boxComponentWithJxLayer(updateDateEditor), new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1682         $Table2.add(controlDateLabel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1683         $Table2.add(SwingUtil.boxComponentWithJxLayer(controlDateEditor), new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1684         $Table2.add(validationDateLabel, new GridBagConstraints(4, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1685         $Table2.add(SwingUtil.boxComponentWithJxLayer(validationDateEditor), new GridBagConstraints(5, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1686         $Table2.add(qualificationDateLabel, new GridBagConstraints(6, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1687         $Table2.add(SwingUtil.boxComponentWithJxLayer(qualificationDateEditor), new GridBagConstraints(7, 1, 1, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1688         // inline complete setup of $Table3
1689         $Table3.add(validationCommentLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1690         $Table3.add(SwingUtil.boxComponentWithJxLayer(validationCommentPanel), new GridBagConstraints(1, 0, 1, 1, 1.0, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1691         $Table3.add(validationHistoryButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1692         $Table3.add(qualificationCommentLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1693         $Table3.add(SwingUtil.boxComponentWithJxLayer(qualificationCommentPanel), new GridBagConstraints(1, 1, 1, 1, 1.0, 1.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1694         $Table3.add(qualificationHistoryButton, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0));
1695         addChildrenToValidationCommentPanel();
1696         addChildrenToQualificationCommentPanel();
1697         
1698         // apply 40 data bindings
1699         JAXXUtil.applyDataBinding(this, $bindings.keySet());
1700         
1701         // apply 92 property setters
1702         $JScrollPane0.setBorder(null);
1703         locationCombo.setBeanType(LocationDTO.class);
1704         programCombo.setBeanType(ProgramDTO.class);
1705         $JScrollPane1.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
1706         observersDoubleList.setBeanType(PersonDTO.class);
1707         campaignCombo.setBeanType(CampaignDTO.class);
1708         positioningCombo.setBeanType(PositioningSystemDTO.class);
1709         $JScrollPane2.setBorder(null);
1710         validationCommentPanel.setBorder(null);
1711         qualificationCommentPanel.setBorder(null);
1712         locationLabel.setLabelFor(locationCombo);
1713         locationCombo.setIcon(SwingUtil.createActionIcon("unfilter"));
1714         locationCombo.setBean(model);
1715         dateLabel.setLabelFor(dateEditor);
1716         programLabel.setLabelFor(programCombo);
1717         programCombo.setIcon(SwingUtil.createActionIcon("unfilter"));
1718         programCombo.setBean(model);
1719         nameLabel.setLabelFor(nameEditor);
1720         bottomDepthLabel.setLabelFor(bottomDepthEditor);
1721         bottomDepthEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1722         bottomDepthEditor.setNumberType(Double.class);
1723         bottomDepthEditor.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
1724         bottomDepthEditor.setBean(model);
1725         observersPanel.setBorder(BorderFactory.createTitledBorder(t("dali.survey.observers.title")));
1726         observersDoubleList.setBean(model);
1727         campaignLabel.setLabelFor(campaignCombo);
1728         campaignCombo.setIcon(SwingUtil.createActionIcon("unfilter"));
1729         campaignCombo.setBean(model);
1730         commentLabel.setLabelFor(commentEditor);
1731         locationCoordinatePanel.setBorder(BorderFactory.createTitledBorder(t("dali.survey.locationCoordinates.title")));
1732         latitudeMinLabel.setLabelFor(locationMinLatitudeEditor);
1733         locationMinLatitudeEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1734         locationMinLatitudeEditor.setCoordinateType(CoordinateType.LATITUDE_MIN);
1735         locationMinLatitudeEditor.setBean(model);
1736         latitudeMaxLabel.setLabelFor(locationMaxLatitudeEditor);
1737         locationMaxLatitudeEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1738         locationMaxLatitudeEditor.setCoordinateType(CoordinateType.LATITUDE_MAX);
1739         locationMaxLatitudeEditor.setBean(model);
1740         longitudeMinLabel.setLabelFor(locationMinLongitudeEditor);
1741         locationMinLongitudeEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1742         locationMinLongitudeEditor.setCoordinateType(CoordinateType.LONGITUDE_MIN);
1743         locationMinLongitudeEditor.setBean(model);
1744         longitudeMaxLabel.setLabelFor(locationMaxLongitudeEditor);
1745         locationMaxLongitudeEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1746         locationMaxLongitudeEditor.setCoordinateType(CoordinateType.LONGITUDE_MAX);
1747         locationMaxLongitudeEditor.setBean(model);
1748         surveyCoordinatePanel.setBorder(BorderFactory.createTitledBorder(t("dali.survey.coordinates.title")));
1749         showMapButton.setIcon(SwingUtil.createActionIcon("map"));
1750         surveyLatitudeMinLabel.setLabelFor(surveyLatitudeMinEditor);
1751         surveyLatitudeMinEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1752         surveyLatitudeMinEditor.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
1753         surveyLatitudeMinEditor.setCoordinateType(CoordinateType.LATITUDE_MIN);
1754         surveyLatitudeMinEditor.setBean(model);
1755         surveyLatitudeMaxLabel.setLabelFor(surveyLatitudeMaxEditor);
1756         surveyLatitudeMaxEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1757         surveyLatitudeMaxEditor.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
1758         surveyLatitudeMaxEditor.setCoordinateType(CoordinateType.LATITUDE_MAX);
1759         surveyLatitudeMaxEditor.setBean(model);
1760         surveyLongitudeMinLabel.setLabelFor(surveyLongitudeMinEditor);
1761         surveyLongitudeMinEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1762         surveyLongitudeMinEditor.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
1763         surveyLongitudeMinEditor.setCoordinateType(CoordinateType.LONGITUDE_MIN);
1764         surveyLongitudeMinEditor.setBean(model);
1765         surveyLongitudeMaxLabel.setLabelFor(surveyLongitudeMaxEditor);
1766         surveyLongitudeMaxEditor.setAutoPopup(handler.getConfig().isAutoPopupNumberEditor());
1767         surveyLongitudeMaxEditor.setShowPopupButton(handler.getConfig().isShowNumberEditorButton());
1768         surveyLongitudeMaxEditor.setCoordinateType(CoordinateType.LONGITUDE_MAX);
1769         surveyLongitudeMaxEditor.setBean(model);
1770         positioningPanel.setBorder(BorderFactory.createTitledBorder(t("dali.survey.positioning.title")));
1771         positioningLabel.setLabelFor(positioningCombo);
1772         positioningCombo.setBean(model);
1773         positioningPrecisionLabel.setLabelFor(positioningPrecisionText);
1774         positioningCommentLabel.setLabelFor(positioningCommentEditor);
1775         lifeCyclePanel.setBorder(BorderFactory.createTitledBorder(t("dali.survey.lifeCycle.title")));
1776         recorderDepartmentLabel.setLabelFor(recorderDepartmentEditor);
1777         qualityFlagLabel.setLabelFor(qualityFlagEditor);
1778         updateDateLabel.setLabelFor(updateDateEditor);
1779         controlDateLabel.setLabelFor(controlDateEditor);
1780         validationDateLabel.setLabelFor(validationDateEditor);
1781         qualificationDateLabel.setLabelFor(qualificationDateEditor);
1782         validationCommentLabel.setLabelFor(validationCommentEditor);
1783         validationHistoryButton.setIcon(SwingUtil.createActionIcon("waiting"));
1784         qualificationCommentLabel.setLabelFor(qualificationCommentEditor);
1785         qualificationHistoryButton.setIcon(SwingUtil.createActionIcon("waiting"));
1786         // late initializer
1787         // register 1 validator(s)
1788         validatorIds = SwingValidatorUtil.detectValidators(this);
1789         SwingValidatorUtil.installUI(this);
1790     }
1791 
1792     private void $initialize() {
1793         if (allComponentsCreated) {
1794             return;
1795         }
1796         if (log.isDebugEnabled()) {
1797             log.debug(this);
1798         }
1799         handler.beforeInit(this);
1800         $objectMap.put("surveyDetailsTabUI", surveyDetailsTabUI);
1801         createModel();
1802         createBroker();
1803         createValidator();
1804         // inline creation of $JScrollPane0
1805         $objectMap.put("$JScrollPane0", $JScrollPane0 = new JScrollPane());
1806         
1807         $JScrollPane0.setName("$JScrollPane0");
1808         $JScrollPane0.putClientProperty("onlyVerticalScrollable", true);
1809         createMainPanel();
1810         createObserversPanelLayout();
1811         // inline creation of $Table0
1812         $objectMap.put("$Table0", $Table0 = new Table());
1813         
1814         $Table0.setName("$Table0");
1815         createLocationLabel();
1816         createLocationCombo();
1817         createDateLabel();
1818         createDateEditor();
1819         createTimeEditor();
1820         createProgramLabel();
1821         createProgramCombo();
1822         createNameLabel();
1823         createNameEditor();
1824         createBottomDepthLabel();
1825         createBottomDepthEditor();
1826         createObserversPanel();
1827         // inline creation of $JScrollPane1
1828         $objectMap.put("$JScrollPane1", $JScrollPane1 = new JScrollPane());
1829         
1830         $JScrollPane1.setName("$JScrollPane1");
1831         createObserversList();
1832         createObserversDoubleList();
1833         createCampaignLabel();
1834         createCampaignCombo();
1835         createCommentLabel();
1836         createCommentScrollPane();
1837         createCommentEditor();
1838         createBottomPanel();
1839         // inline creation of $JPanel0
1840         $objectMap.put("$JPanel0", $JPanel0 = new JPanel());
1841         
1842         $JPanel0.setName("$JPanel0");
1843         $JPanel0.setLayout(new GridLayout(1,0));
1844         createLocationCoordinatePanel();
1845         createLatitudeLabel();
1846         createLatitudeMinLabel();
1847         createLocationMinLatitudeEditor();
1848         createLatitudeMaxLabel();
1849         createLocationMaxLatitudeEditor();
1850         createLongitudeLabel();
1851         createLongitudeMinLabel();
1852         createLocationMinLongitudeEditor();
1853         createLongitudeMaxLabel();
1854         createLocationMaxLongitudeEditor();
1855         createSurveyCoordinatePanel();
1856         // inline creation of $JPanel1
1857         $objectMap.put("$JPanel1", $JPanel1 = new JPanel());
1858         
1859         $JPanel1.setName("$JPanel1");
1860         $JPanel1.setLayout(new GridBagLayout());
1861         createShowMapButton();
1862         // inline creation of $Table1
1863         $objectMap.put("$Table1", $Table1 = new Table());
1864         
1865         $Table1.setName("$Table1");
1866         createSurveyLatitudeLabel();
1867         createSurveyLatitudeMinLabel();
1868         createSurveyLatitudeMinEditor();
1869         createSurveyLatitudeMaxLabel();
1870         createSurveyLatitudeMaxEditor();
1871         createSurveyLongitudeLabel();
1872         createSurveyLongitudeMinLabel();
1873         createSurveyLongitudeMinEditor();
1874         createSurveyLongitudeMaxLabel();
1875         createSurveyLongitudeMaxEditor();
1876         createPositioningPanel();
1877         createPositioningLabel();
1878         createPositioningCombo();
1879         createPositioningPrecisionLabel();
1880         createPositioningPrecisionText();
1881         createPositioningCommentLabel();
1882         // inline creation of $JScrollPane2
1883         $objectMap.put("$JScrollPane2", $JScrollPane2 = new JScrollPane());
1884         
1885         $JScrollPane2.setName("$JScrollPane2");
1886         $JScrollPane2.addFocusListener(JAXXUtil.getEventListener(FocusListener.class, "focusGained", this, "doFocusGained__on__$JScrollPane2"));
1887         createPositioningCommentEditor();
1888         createUngroupedTable();
1889         createLifeCyclePanel();
1890         // inline creation of $Table2
1891         $objectMap.put("$Table2", $Table2 = new Table());
1892         
1893         $Table2.setName("$Table2");
1894         createRecorderDepartmentLabel();
1895         createRecorderDepartmentEditor();
1896         createQualityFlagLabel();
1897         createQualityFlagEditor();
1898         createUpdateDateLabel();
1899         createUpdateDateEditor();
1900         createControlDateLabel();
1901         createControlDateEditor();
1902         createValidationDateLabel();
1903         createValidationDateEditor();
1904         createQualificationDateLabel();
1905         createQualificationDateEditor();
1906         // inline creation of $Table3
1907         $objectMap.put("$Table3", $Table3 = new Table());
1908         
1909         $Table3.setName("$Table3");
1910         createValidationCommentLabel();
1911         createValidationCommentPanel();
1912         createValidationCommentEditor();
1913         createValidationHistoryButton();
1914         createQualificationCommentLabel();
1915         createQualificationCommentPanel();
1916         createQualificationCommentEditor();
1917         createQualificationHistoryButton();
1918         // inline creation of surveyDetailsTabUI
1919         setName("surveyDetailsTabUI");
1920         setLayout(new BorderLayout());
1921         surveyDetailsTabUI.putClientProperty("panelType", DaliUI.EDITION_PANEL_TYPE);
1922         
1923         // registers 40 data bindings
1924         $registerDefaultBindings();
1925         $completeSetup();
1926         handler.afterInit(this);
1927     }
1928 
1929     private void $registerDefaultBindings() {
1930         // register 40 data bindings
1931         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_COMBO_SELECTED_ITEM, true) {
1932         
1933             @Override
1934             public void applyDataBinding() {
1935                 if (model != null) {
1936                     model.addPropertyChangeListener("location", this);
1937                 }
1938             }
1939         
1940             @Override
1941             public void processDataBinding() {
1942                 if (model != null) {
1943                     locationCombo.setSelectedItem(model.getLocation());
1944                 }
1945             }
1946         
1947             @Override
1948             public void removeDataBinding() {
1949                 if (model != null) {
1950                     model.removePropertyChangeListener("location", this);
1951                 }
1952             }
1953         });
1954         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_COMBO_ENABLED, true) {
1955         
1956             @Override
1957             public void applyDataBinding() {
1958                 if (model != null) {
1959                     model.addPropertyChangeListener("editable", this);
1960                 }
1961             }
1962         
1963             @Override
1964             public void processDataBinding() {
1965                 if (model != null) {
1966                     locationCombo.setEnabled(model.isEditable());
1967                 }
1968             }
1969         
1970             @Override
1971             public void removeDataBinding() {
1972                 if (model != null) {
1973                     model.removePropertyChangeListener("editable", this);
1974                 }
1975             }
1976         });
1977         registerDataBinding(new DefaultJAXXBinding(this, BINDING_DATE_EDITOR_LOCAL_DATE, true) {
1978         
1979             @Override
1980             public void applyDataBinding() {
1981                 if (model != null) {
1982                     model.addPropertyChangeListener("date", this);
1983                 }
1984             }
1985         
1986             @Override
1987             public void processDataBinding() {
1988                 if (model != null) {
1989                     dateEditor.setLocalDate(model.getDate());
1990                 }
1991             }
1992         
1993             @Override
1994             public void removeDataBinding() {
1995                 if (model != null) {
1996                     model.removePropertyChangeListener("date", this);
1997                 }
1998             }
1999         });
2000         registerDataBinding(new DefaultJAXXBinding(this, BINDING_DATE_EDITOR_ENABLED, true) {
2001         
2002             @Override
2003             public void applyDataBinding() {
2004                 if (model != null) {
2005                     model.addPropertyChangeListener("editable", this);
2006                 }
2007             }
2008         
2009             @Override
2010             public void processDataBinding() {
2011                 if (model != null) {
2012                     dateEditor.setEnabled(model.isEditable());
2013                 }
2014             }
2015         
2016             @Override
2017             public void removeDataBinding() {
2018                 if (model != null) {
2019                     model.removePropertyChangeListener("editable", this);
2020                 }
2021             }
2022         });
2023         registerDataBinding(new DefaultJAXXBinding(this, BINDING_TIME_EDITOR_TIME_IN_SECOND, true) {
2024         
2025             @Override
2026             public void applyDataBinding() {
2027                 if (model != null) {
2028                     model.addPropertyChangeListener("time", this);
2029                 }
2030             }
2031         
2032             @Override
2033             public void processDataBinding() {
2034                 if (model != null) {
2035                     timeEditor.setTimeInSecond(model.getTime());
2036                 }
2037             }
2038         
2039             @Override
2040             public void removeDataBinding() {
2041                 if (model != null) {
2042                     model.removePropertyChangeListener("time", this);
2043                 }
2044             }
2045         });
2046         registerDataBinding(new DefaultJAXXBinding(this, BINDING_TIME_EDITOR_ENABLED, true) {
2047         
2048             @Override
2049             public void applyDataBinding() {
2050                 if (model != null) {
2051                     model.addPropertyChangeListener("editable", this);
2052                 }
2053             }
2054         
2055             @Override
2056             public void processDataBinding() {
2057                 if (model != null) {
2058                     timeEditor.setEnabled(model.isEditable());
2059                 }
2060             }
2061         
2062             @Override
2063             public void removeDataBinding() {
2064                 if (model != null) {
2065                     model.removePropertyChangeListener("editable", this);
2066                 }
2067             }
2068         });
2069         registerDataBinding(new DefaultJAXXBinding(this, BINDING_PROGRAM_COMBO_SELECTED_ITEM, true) {
2070         
2071             @Override
2072             public void applyDataBinding() {
2073                 if (model != null) {
2074                     model.addPropertyChangeListener("program", this);
2075                 }
2076             }
2077         
2078             @Override
2079             public void processDataBinding() {
2080                 if (model != null) {
2081                     programCombo.setSelectedItem(model.getProgram());
2082                 }
2083             }
2084         
2085             @Override
2086             public void removeDataBinding() {
2087                 if (model != null) {
2088                     model.removePropertyChangeListener("program", this);
2089                 }
2090             }
2091         });
2092         registerDataBinding(new DefaultJAXXBinding(this, BINDING_PROGRAM_COMBO_ENABLED, true) {
2093         
2094             @Override
2095             public void applyDataBinding() {
2096                 if (model != null) {
2097                     model.addPropertyChangeListener("editable", this);
2098                 }
2099             }
2100         
2101             @Override
2102             public void processDataBinding() {
2103                 if (model != null) {
2104                     programCombo.setEnabled(model.isEditable());
2105                 }
2106             }
2107         
2108             @Override
2109             public void removeDataBinding() {
2110                 if (model != null) {
2111                     model.removePropertyChangeListener("editable", this);
2112                 }
2113             }
2114         });
2115         registerDataBinding(new DefaultJAXXBinding(this, BINDING_NAME_EDITOR_TEXT, true) {
2116         
2117             @Override
2118             public void applyDataBinding() {
2119                 if (model != null) {
2120                     model.addPropertyChangeListener("name", this);
2121                 }
2122             }
2123         
2124             @Override
2125             public void processDataBinding() {
2126                 if (model != null) {
2127                     SwingUtil.setText(nameEditor, model.getName());
2128                 }
2129             }
2130         
2131             @Override
2132             public void removeDataBinding() {
2133                 if (model != null) {
2134                     model.removePropertyChangeListener("name", this);
2135                 }
2136             }
2137         });
2138         registerDataBinding(new DefaultJAXXBinding(this, BINDING_NAME_EDITOR_ENABLED, true) {
2139         
2140             @Override
2141             public void applyDataBinding() {
2142                 if (model != null) {
2143                     model.addPropertyChangeListener("editable", this);
2144                 }
2145             }
2146         
2147             @Override
2148             public void processDataBinding() {
2149                 if (model != null) {
2150                     nameEditor.setEnabled(model.isEditable());
2151                 }
2152             }
2153         
2154             @Override
2155             public void removeDataBinding() {
2156                 if (model != null) {
2157                     model.removePropertyChangeListener("editable", this);
2158                 }
2159             }
2160         });
2161         registerDataBinding(new SimpleJAXXObjectBinding(this, BINDING_BOTTOM_DEPTH_EDITOR_NUMBER_PATTERN, true ,"DECIMAL1_PATTERN") {
2162         
2163             @Override
2164             public void processDataBinding() {
2165                 bottomDepthEditor.setNumberPattern(DECIMAL1_PATTERN);
2166             }
2167         });
2168         registerDataBinding(new DefaultJAXXBinding(this, BINDING_BOTTOM_DEPTH_EDITOR_NUMBER_VALUE, true) {
2169         
2170             @Override
2171             public void applyDataBinding() {
2172                 if (model != null) {
2173                     model.addPropertyChangeListener("bottomDepth", this);
2174                 }
2175             }
2176         
2177             @Override
2178             public void processDataBinding() {
2179                 if (model != null) {
2180                     bottomDepthEditor.setNumberValue(model.getBottomDepth());
2181                 }
2182             }
2183         
2184             @Override
2185             public void removeDataBinding() {
2186                 if (model != null) {
2187                     model.removePropertyChangeListener("bottomDepth", this);
2188                 }
2189             }
2190         });
2191         registerDataBinding(new DefaultJAXXBinding(this, BINDING_BOTTOM_DEPTH_EDITOR_ENABLED, true) {
2192         
2193             @Override
2194             public void applyDataBinding() {
2195                 if (model != null) {
2196                     model.addPropertyChangeListener("editable", this);
2197                 }
2198             }
2199         
2200             @Override
2201             public void processDataBinding() {
2202                 if (model != null) {
2203                     bottomDepthEditor.setEnabled(model.isEditable());
2204                 }
2205             }
2206         
2207             @Override
2208             public void removeDataBinding() {
2209                 if (model != null) {
2210                     model.removePropertyChangeListener("editable", this);
2211                 }
2212             }
2213         });
2214         registerDataBinding(new DefaultJAXXBinding(this, BINDING_OBSERVERS_DOUBLE_LIST_ENABLED, true) {
2215         
2216             @Override
2217             public void applyDataBinding() {
2218                 if (model != null) {
2219                     model.addPropertyChangeListener("editable", this);
2220                 }
2221             }
2222         
2223             @Override
2224             public void processDataBinding() {
2225                 if (model != null) {
2226                     observersDoubleList.setEnabled(model.isEditable());
2227                 }
2228             }
2229         
2230             @Override
2231             public void removeDataBinding() {
2232                 if (model != null) {
2233                     model.removePropertyChangeListener("editable", this);
2234                 }
2235             }
2236         });
2237         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CAMPAIGN_COMBO_SELECTED_ITEM, true) {
2238         
2239             @Override
2240             public void applyDataBinding() {
2241                 if (model != null) {
2242                     model.addPropertyChangeListener("campaign", this);
2243                 }
2244             }
2245         
2246             @Override
2247             public void processDataBinding() {
2248                 if (model != null) {
2249                     campaignCombo.setSelectedItem(model.getCampaign());
2250                 }
2251             }
2252         
2253             @Override
2254             public void removeDataBinding() {
2255                 if (model != null) {
2256                     model.removePropertyChangeListener("campaign", this);
2257                 }
2258             }
2259         });
2260         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CAMPAIGN_COMBO_ENABLED, true) {
2261         
2262             @Override
2263             public void applyDataBinding() {
2264                 if (model != null) {
2265                     model.addPropertyChangeListener("editable", this);
2266                 }
2267             }
2268         
2269             @Override
2270             public void processDataBinding() {
2271                 if (model != null) {
2272                     campaignCombo.setEnabled(model.isEditable());
2273                 }
2274             }
2275         
2276             @Override
2277             public void removeDataBinding() {
2278                 if (model != null) {
2279                     model.removePropertyChangeListener("editable", this);
2280                 }
2281             }
2282         });
2283         registerDataBinding(new DefaultJAXXBinding(this, BINDING_COMMENT_EDITOR_TEXT, true) {
2284         
2285             @Override
2286             public void applyDataBinding() {
2287                 if (model != null) {
2288                     model.addPropertyChangeListener("comment", this);
2289                 }
2290             }
2291         
2292             @Override
2293             public void processDataBinding() {
2294                 if (model != null) {
2295                     SwingUtil.setText(commentEditor, model.getComment());
2296                 }
2297             }
2298         
2299             @Override
2300             public void removeDataBinding() {
2301                 if (model != null) {
2302                     model.removePropertyChangeListener("comment", this);
2303                 }
2304             }
2305         });
2306         registerDataBinding(new DefaultJAXXBinding(this, BINDING_COMMENT_EDITOR_ENABLED, true) {
2307         
2308             @Override
2309             public void applyDataBinding() {
2310                 if (model != null) {
2311                     model.addPropertyChangeListener("editable", this);
2312                 }
2313             }
2314         
2315             @Override
2316             public void processDataBinding() {
2317                 if (model != null) {
2318                     commentEditor.setEnabled(model.isEditable());
2319                 }
2320             }
2321         
2322             @Override
2323             public void removeDataBinding() {
2324                 if (model != null) {
2325                     model.removePropertyChangeListener("editable", this);
2326                 }
2327             }
2328         });
2329         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_MIN_LATITUDE_EDITOR_NUMBER_VALUE, true) {
2330         
2331             @Override
2332             public void applyDataBinding() {
2333                 if (model != null) {
2334                     model.addPropertyChangeListener("locationMinLatitude", this);
2335                 }
2336             }
2337         
2338             @Override
2339             public void processDataBinding() {
2340                 if (model != null) {
2341                     locationMinLatitudeEditor.setNumberValue(model.getLocationMinLatitude());
2342                 }
2343             }
2344         
2345             @Override
2346             public void removeDataBinding() {
2347                 if (model != null) {
2348                     model.removePropertyChangeListener("locationMinLatitude", this);
2349                 }
2350             }
2351         });
2352         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_MAX_LATITUDE_EDITOR_NUMBER_VALUE, true) {
2353         
2354             @Override
2355             public void applyDataBinding() {
2356                 if (model != null) {
2357                     model.addPropertyChangeListener("locationMaxLatitude", this);
2358                 }
2359             }
2360         
2361             @Override
2362             public void processDataBinding() {
2363                 if (model != null) {
2364                     locationMaxLatitudeEditor.setNumberValue(model.getLocationMaxLatitude());
2365                 }
2366             }
2367         
2368             @Override
2369             public void removeDataBinding() {
2370                 if (model != null) {
2371                     model.removePropertyChangeListener("locationMaxLatitude", this);
2372                 }
2373             }
2374         });
2375         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_MIN_LONGITUDE_EDITOR_NUMBER_VALUE, true) {
2376         
2377             @Override
2378             public void applyDataBinding() {
2379                 if (model != null) {
2380                     model.addPropertyChangeListener("locationMinLongitude", this);
2381                 }
2382             }
2383         
2384             @Override
2385             public void processDataBinding() {
2386                 if (model != null) {
2387                     locationMinLongitudeEditor.setNumberValue(model.getLocationMinLongitude());
2388                 }
2389             }
2390         
2391             @Override
2392             public void removeDataBinding() {
2393                 if (model != null) {
2394                     model.removePropertyChangeListener("locationMinLongitude", this);
2395                 }
2396             }
2397         });
2398         registerDataBinding(new DefaultJAXXBinding(this, BINDING_LOCATION_MAX_LONGITUDE_EDITOR_NUMBER_VALUE, true) {
2399         
2400             @Override
2401             public void applyDataBinding() {
2402                 if (model != null) {
2403                     model.addPropertyChangeListener("locationMaxLongitude", this);
2404                 }
2405             }
2406         
2407             @Override
2408             public void processDataBinding() {
2409                 if (model != null) {
2410                     locationMaxLongitudeEditor.setNumberValue(model.getLocationMaxLongitude());
2411                 }
2412             }
2413         
2414             @Override
2415             public void removeDataBinding() {
2416                 if (model != null) {
2417                     model.removePropertyChangeListener("locationMaxLongitude", this);
2418                 }
2419             }
2420         });
2421         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LATITUDE_MIN_EDITOR_NUMBER_VALUE, true) {
2422         
2423             @Override
2424             public void applyDataBinding() {
2425                 if (model != null) {
2426                     model.addPropertyChangeListener("latitudeMin", this);
2427                 }
2428             }
2429         
2430             @Override
2431             public void processDataBinding() {
2432                 if (model != null) {
2433                     surveyLatitudeMinEditor.setNumberValue(model.getLatitudeMin());
2434                 }
2435             }
2436         
2437             @Override
2438             public void removeDataBinding() {
2439                 if (model != null) {
2440                     model.removePropertyChangeListener("latitudeMin", this);
2441                 }
2442             }
2443         });
2444         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LATITUDE_MIN_EDITOR_ENABLED, true) {
2445         
2446             @Override
2447             public void applyDataBinding() {
2448                 if (model != null) {
2449                     model.addPropertyChangeListener("editable", this);
2450                 }
2451             }
2452         
2453             @Override
2454             public void processDataBinding() {
2455                 if (model != null) {
2456                     surveyLatitudeMinEditor.setEnabled(model.isEditable());
2457                 }
2458             }
2459         
2460             @Override
2461             public void removeDataBinding() {
2462                 if (model != null) {
2463                     model.removePropertyChangeListener("editable", this);
2464                 }
2465             }
2466         });
2467         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LATITUDE_MAX_EDITOR_NUMBER_VALUE, true) {
2468         
2469             @Override
2470             public void applyDataBinding() {
2471                 if (model != null) {
2472                     model.addPropertyChangeListener("latitudeMax", this);
2473                 }
2474             }
2475         
2476             @Override
2477             public void processDataBinding() {
2478                 if (model != null) {
2479                     surveyLatitudeMaxEditor.setNumberValue(model.getLatitudeMax());
2480                 }
2481             }
2482         
2483             @Override
2484             public void removeDataBinding() {
2485                 if (model != null) {
2486                     model.removePropertyChangeListener("latitudeMax", this);
2487                 }
2488             }
2489         });
2490         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LATITUDE_MAX_EDITOR_ENABLED, true) {
2491         
2492             @Override
2493             public void applyDataBinding() {
2494                 if (model != null) {
2495                     model.addPropertyChangeListener("editable", this);
2496                 }
2497             }
2498         
2499             @Override
2500             public void processDataBinding() {
2501                 if (model != null) {
2502                     surveyLatitudeMaxEditor.setEnabled(model.isEditable());
2503                 }
2504             }
2505         
2506             @Override
2507             public void removeDataBinding() {
2508                 if (model != null) {
2509                     model.removePropertyChangeListener("editable", this);
2510                 }
2511             }
2512         });
2513         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LONGITUDE_MIN_EDITOR_NUMBER_VALUE, true) {
2514         
2515             @Override
2516             public void applyDataBinding() {
2517                 if (model != null) {
2518                     model.addPropertyChangeListener("longitudeMin", this);
2519                 }
2520             }
2521         
2522             @Override
2523             public void processDataBinding() {
2524                 if (model != null) {
2525                     surveyLongitudeMinEditor.setNumberValue(model.getLongitudeMin());
2526                 }
2527             }
2528         
2529             @Override
2530             public void removeDataBinding() {
2531                 if (model != null) {
2532                     model.removePropertyChangeListener("longitudeMin", this);
2533                 }
2534             }
2535         });
2536         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LONGITUDE_MIN_EDITOR_ENABLED, true) {
2537         
2538             @Override
2539             public void applyDataBinding() {
2540                 if (model != null) {
2541                     model.addPropertyChangeListener("editable", this);
2542                 }
2543             }
2544         
2545             @Override
2546             public void processDataBinding() {
2547                 if (model != null) {
2548                     surveyLongitudeMinEditor.setEnabled(model.isEditable());
2549                 }
2550             }
2551         
2552             @Override
2553             public void removeDataBinding() {
2554                 if (model != null) {
2555                     model.removePropertyChangeListener("editable", this);
2556                 }
2557             }
2558         });
2559         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LONGITUDE_MAX_EDITOR_NUMBER_VALUE, true) {
2560         
2561             @Override
2562             public void applyDataBinding() {
2563                 if (model != null) {
2564                     model.addPropertyChangeListener("longitudeMax", this);
2565                 }
2566             }
2567         
2568             @Override
2569             public void processDataBinding() {
2570                 if (model != null) {
2571                     surveyLongitudeMaxEditor.setNumberValue(model.getLongitudeMax());
2572                 }
2573             }
2574         
2575             @Override
2576             public void removeDataBinding() {
2577                 if (model != null) {
2578                     model.removePropertyChangeListener("longitudeMax", this);
2579                 }
2580             }
2581         });
2582         registerDataBinding(new DefaultJAXXBinding(this, BINDING_SURVEY_LONGITUDE_MAX_EDITOR_ENABLED, true) {
2583         
2584             @Override
2585             public void applyDataBinding() {
2586                 if (model != null) {
2587                     model.addPropertyChangeListener("editable", this);
2588                 }
2589             }
2590         
2591             @Override
2592             public void processDataBinding() {
2593                 if (model != null) {
2594                     surveyLongitudeMaxEditor.setEnabled(model.isEditable());
2595                 }
2596             }
2597         
2598             @Override
2599             public void removeDataBinding() {
2600                 if (model != null) {
2601                     model.removePropertyChangeListener("editable", this);
2602                 }
2603             }
2604         });
2605         registerDataBinding(new DefaultJAXXBinding(this, BINDING_POSITIONING_COMBO_SELECTED_ITEM, true) {
2606         
2607             @Override
2608             public void applyDataBinding() {
2609                 if (model != null) {
2610                     model.addPropertyChangeListener("positioning", this);
2611                 }
2612             }
2613         
2614             @Override
2615             public void processDataBinding() {
2616                 if (model != null) {
2617                     positioningCombo.setSelectedItem(model.getPositioning());
2618                 }
2619             }
2620         
2621             @Override
2622             public void removeDataBinding() {
2623                 if (model != null) {
2624                     model.removePropertyChangeListener("positioning", this);
2625                 }
2626             }
2627         });
2628         registerDataBinding(new DefaultJAXXBinding(this, BINDING_POSITIONING_COMBO_ENABLED, true, true) {
2629         
2630             @Override
2631             public void applyDataBinding() {
2632                 if (model != null) {
2633                     model.addPropertyChangeListener("editable", this);
2634                 }
2635                 if (model != null) {
2636                     model.addPropertyChangeListener("latitudeMin", this);
2637                 }
2638                 if (model != null) {
2639                     model.addPropertyChangeListener("longitudeMin", this);
2640                 }
2641             }
2642         
2643             @Override
2644             public void processDataBinding() {
2645                 if (model != null) {
2646                     positioningCombo.setEnabled(model.isEditable() && model.getLatitudeMin() != null && model.getLongitudeMin() != null);
2647                 }
2648             }
2649         
2650             @Override
2651             public void removeDataBinding() {
2652                 if (model != null) {
2653                     model.removePropertyChangeListener("editable", this);
2654                 }
2655                 if (model != null) {
2656                     model.removePropertyChangeListener("latitudeMin", this);
2657                 }
2658                 if (model != null) {
2659                     model.removePropertyChangeListener("longitudeMin", this);
2660                 }
2661             }
2662         });
2663         registerDataBinding(new DefaultJAXXBinding(this, BINDING_POSITIONING_COMMENT_EDITOR_TEXT, true) {
2664         
2665             @Override
2666             public void applyDataBinding() {
2667                 if (model != null) {
2668                     model.addPropertyChangeListener("positioningComment", this);
2669                 }
2670             }
2671         
2672             @Override
2673             public void processDataBinding() {
2674                 if (model != null) {
2675                     SwingUtil.setText(positioningCommentEditor, model.getPositioningComment());
2676                 }
2677             }
2678         
2679             @Override
2680             public void removeDataBinding() {
2681                 if (model != null) {
2682                     model.removePropertyChangeListener("positioningComment", this);
2683                 }
2684             }
2685         });
2686         registerDataBinding(new DefaultJAXXBinding(this, BINDING_POSITIONING_COMMENT_EDITOR_ENABLED, true) {
2687         
2688             @Override
2689             public void applyDataBinding() {
2690                 if (model != null) {
2691                     model.addPropertyChangeListener("editable", this);
2692                 }
2693             }
2694         
2695             @Override
2696             public void processDataBinding() {
2697                 if (model != null) {
2698                     positioningCommentEditor.setEnabled(model.isEditable());
2699                 }
2700             }
2701         
2702             @Override
2703             public void removeDataBinding() {
2704                 if (model != null) {
2705                     model.removePropertyChangeListener("editable", this);
2706                 }
2707             }
2708         });
2709         registerDataBinding(new DefaultJAXXBinding(this, BINDING_UPDATE_DATE_EDITOR_TEXT, true, true) {
2710         
2711             @Override
2712             public void applyDataBinding() {
2713                 if (model != null) {
2714                     model.addPropertyChangeListener("updateDate", this);
2715                 }
2716                 if (model != null) {
2717                     model.addPropertyChangeListener("dateTimePattern", this);
2718                 }
2719             }
2720         
2721             @Override
2722             public void processDataBinding() {
2723                 if (model != null) {
2724                     SwingUtil.setText(updateDateEditor, Dates.formatDate(model.getUpdateDate(), model.getDateTimePattern()));
2725                 }
2726             }
2727         
2728             @Override
2729             public void removeDataBinding() {
2730                 if (model != null) {
2731                     model.removePropertyChangeListener("updateDate", this);
2732                 }
2733                 if (model != null) {
2734                     model.removePropertyChangeListener("dateTimePattern", this);
2735                 }
2736             }
2737         });
2738         registerDataBinding(new DefaultJAXXBinding(this, BINDING_CONTROL_DATE_EDITOR_TEXT, true, true) {
2739         
2740             @Override
2741             public void applyDataBinding() {
2742                 if (model != null) {
2743                     model.addPropertyChangeListener("controlDate", this);
2744                 }
2745                 if (model != null) {
2746                     model.addPropertyChangeListener("dateTimePattern", this);
2747                 }
2748             }
2749         
2750             @Override
2751             public void processDataBinding() {
2752                 if (model != null) {
2753                     SwingUtil.setText(controlDateEditor, Dates.formatDate(model.getControlDate(), model.getDateTimePattern()));
2754                 }
2755             }
2756         
2757             @Override
2758             public void removeDataBinding() {
2759                 if (model != null) {
2760                     model.removePropertyChangeListener("controlDate", this);
2761                 }
2762                 if (model != null) {
2763                     model.removePropertyChangeListener("dateTimePattern", this);
2764                 }
2765             }
2766         });
2767         registerDataBinding(new DefaultJAXXBinding(this, BINDING_VALIDATION_DATE_EDITOR_TEXT, true, true) {
2768         
2769             @Override
2770             public void applyDataBinding() {
2771                 if (model != null) {
2772                     model.addPropertyChangeListener("validationDate", this);
2773                 }
2774                 if (model != null) {
2775                     model.addPropertyChangeListener("dateTimePattern", this);
2776                 }
2777             }
2778         
2779             @Override
2780             public void processDataBinding() {
2781                 if (model != null) {
2782                     SwingUtil.setText(validationDateEditor, Dates.formatDate(model.getValidationDate(), model.getDateTimePattern()));
2783                 }
2784             }
2785         
2786             @Override
2787             public void removeDataBinding() {
2788                 if (model != null) {
2789                     model.removePropertyChangeListener("validationDate", this);
2790                 }
2791                 if (model != null) {
2792                     model.removePropertyChangeListener("dateTimePattern", this);
2793                 }
2794             }
2795         });
2796         registerDataBinding(new DefaultJAXXBinding(this, BINDING_QUALIFICATION_DATE_EDITOR_TEXT, true, true) {
2797         
2798             @Override
2799             public void applyDataBinding() {
2800                 if (model != null) {
2801                     model.addPropertyChangeListener("qualificationDate", this);
2802                 }
2803                 if (model != null) {
2804                     model.addPropertyChangeListener("dateTimePattern", this);
2805                 }
2806             }
2807         
2808             @Override
2809             public void processDataBinding() {
2810                 if (model != null) {
2811                     SwingUtil.setText(qualificationDateEditor, Dates.formatDate(model.getQualificationDate(), model.getDateTimePattern()));
2812                 }
2813             }
2814         
2815             @Override
2816             public void removeDataBinding() {
2817                 if (model != null) {
2818                     model.removePropertyChangeListener("qualificationDate", this);
2819                 }
2820                 if (model != null) {
2821                     model.removePropertyChangeListener("dateTimePattern", this);
2822                 }
2823             }
2824         });
2825         registerDataBinding(new DefaultJAXXBinding(this, BINDING_VALIDATION_COMMENT_EDITOR_TEXT, true) {
2826         
2827             @Override
2828             public void applyDataBinding() {
2829                 if (model != null) {
2830                     model.addPropertyChangeListener("validationComment", this);
2831                 }
2832             }
2833         
2834             @Override
2835             public void processDataBinding() {
2836                 if (model != null) {
2837                     SwingUtil.setText(validationCommentEditor, model.getValidationComment());
2838                 }
2839             }
2840         
2841             @Override
2842             public void removeDataBinding() {
2843                 if (model != null) {
2844                     model.removePropertyChangeListener("validationComment", this);
2845                 }
2846             }
2847         });
2848         registerDataBinding(new DefaultJAXXBinding(this, BINDING_QUALIFICATION_COMMENT_EDITOR_TEXT, true) {
2849         
2850             @Override
2851             public void applyDataBinding() {
2852                 if (model != null) {
2853                     model.addPropertyChangeListener("qualificationComment", this);
2854                 }
2855             }
2856         
2857             @Override
2858             public void processDataBinding() {
2859                 if (model != null) {
2860                     SwingUtil.setText(qualificationCommentEditor, model.getQualificationComment());
2861                 }
2862             }
2863         
2864             @Override
2865             public void removeDataBinding() {
2866                 if (model != null) {
2867                     model.removePropertyChangeListener("qualificationComment", this);
2868                 }
2869             }
2870         });
2871     }
2872 
2873 }