~ubuntu-branches/ubuntu/raring/geotranz/raring

« back to all changes in this revision

Viewing changes to geotrans2/java_gui/geotrans/gui/CoordPanel.java

  • Committer: Bazaar Package Importer
  • Author(s): Roberto Lumbreras
  • Date: 2008-10-17 14:43:09 UTC
  • Revision ID: james.westby@ubuntu.com-20081017144309-jb7uzfi1y1lvez8j
Tags: upstream-2.4.2
ImportĀ upstreamĀ versionĀ 2.4.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * coordPanel.java
 
3
 *
 
4
 * Created on April 18, 2001, 4:28 PM
 
5
 */
 
6
 
 
7
package geotrans.gui;
 
8
 
 
9
 
 
10
import geotrans.enumerations.ConversionState;
 
11
import geotrans.enumerations.CoordinateTypes;
 
12
import geotrans.jni.*;
 
13
import geotrans.projections.*;
 
14
import geotrans.utility.Platform;
 
15
 
 
16
 
 
17
/**
 
18
 *
 
19
 * @author  amyc
 
20
 * @version
 
21
 */
 
22
public class CoordPanel extends javax.swing.JPanel{
 
23
 
 
24
    private JNIStrtoval jniStrtoval;
 
25
    private JNIEngine jniEngine = new JNIEngine();
 
26
    private jOptions formatOptions;
 
27
    private boolean useNSEW;
 
28
    private boolean useMinutes;
 
29
    private boolean useSeconds;
 
30
    private char hemisphere;
 
31
    private int zone;
 
32
    // Flag to test if accuracy has been selected or is from previous conversion
 
33
    private boolean usePrevAccuracies = false;
 
34
    private boolean _3dConversion = false;
 
35
 
 
36
    /** Creates new form coordPanel */
 
37
    public CoordPanel(jOptions options, JNIStrtoval jniStr) {
 
38
        formatOptions = options;
 
39
        jniStrtoval = jniStr;
 
40
 
 
41
        setFormat();
 
42
        initComponents ();
 
43
 
 
44
        tempLabel1.setVisible(false);
 
45
        tempLabel2.setVisible(false);
 
46
        tempTextField1.setVisible(false);
 
47
        tempTextField2.setVisible(false);
 
48
 
 
49
        if (Platform.isJavaV1_3)
 
50
        {
 
51
            _3CoordFieldsLabelA.setForeground(java.awt.Color.black);
 
52
            _3CoordFieldsLabelB.setForeground(java.awt.Color.black);
 
53
            _3CoordFieldsLabelC.setForeground(java.awt.Color.black);
 
54
            _2CoordFieldsLabelA.setForeground(java.awt.Color.black);
 
55
            _2CoordFieldsLabelB.setForeground(java.awt.Color.black);
 
56
            ce90Label.setForeground(java.awt.Color.black);
 
57
            le90Label.setForeground(java.awt.Color.black);
 
58
            se90Label.setForeground(java.awt.Color.black);
 
59
            sourcesLabel.setForeground(java.awt.Color.black);
 
60
        }
 
61
 
 
62
        setPanelSizes();
 
63
        fillAccuracyList();
 
64
        if (Platform.isUnix)
 
65
        {
 
66
            _3CoordFieldsLabelA.setFont(new java.awt.Font("Dialog", 1, 10));
 
67
            _3CoordFieldsLabelB.setFont(new java.awt.Font("Dialog", 1, 10));
 
68
            _3CoordFieldsLabelC.setFont(new java.awt.Font("Dialog", 1, 10));
 
69
            _2CoordFieldsLabelA.setFont(new java.awt.Font("Dialog", 1, 10));
 
70
            _2CoordFieldsLabelB.setFont(new java.awt.Font("Dialog", 1, 10));
 
71
            ce90Label.setFont(new java.awt.Font("Dialog", 1, 10));
 
72
            le90Label.setFont(new java.awt.Font("Dialog", 1, 10));
 
73
            se90Label.setFont(new java.awt.Font("Dialog", 1, 10));
 
74
            sourcesLabel.setFont(new java.awt.Font("Dialog", 1, 10));
 
75
            sourcesComboBox.setFont(new java.awt.Font("Dialog", 1, 10));
 
76
            sourcesComboBox.setMaximumSize(new java.awt.Dimension(265, 22));
 
77
            sourcesComboBox.setMinimumSize(new java.awt.Dimension(265, 22));
 
78
            sourcesComboBox.setPreferredSize(new java.awt.Dimension(265, 22));
 
79
            ce90TextField.setToolTipText("90% CE");
 
80
            le90TextField.setToolTipText("90% LE");
 
81
            se90TextField.setToolTipText("90% SE");
 
82
        }
 
83
    }
 
84
 
 
85
    /** This method is called from within the constructor to
 
86
     * initialize the form.
 
87
     * WARNING: Do NOT modify this code. The content of this method is
 
88
     * always regenerated by the FormEditor.
 
89
     */
 
90
    private void initComponents() {//GEN-BEGIN:initComponents
 
91
        java.awt.GridBagConstraints gridBagConstraints;
 
92
 
 
93
        coordLayeredPane = new javax.swing.JLayeredPane();
 
94
        _3CoordFieldsPanel = new javax.swing.JPanel();
 
95
        _3CoordFieldsLabelA = new javax.swing.JLabel();
 
96
        _3CoordFieldsLabelB = new javax.swing.JLabel();
 
97
        _3CoordFieldsLabelC = new javax.swing.JLabel();
 
98
        _3CoordFieldsTextFieldA = new javax.swing.JTextField();
 
99
        _3CoordFieldsTextFieldB = new javax.swing.JTextField();
 
100
        _3CoordFieldsTextFieldC = new javax.swing.JTextField();
 
101
        _2CoordFieldsPanel = new javax.swing.JPanel();
 
102
        _2CoordFieldsLabelA = new javax.swing.JLabel();
 
103
        _2CoordFieldsLabelB = new javax.swing.JLabel();
 
104
        _2CoordFieldsTextFieldA = new javax.swing.JTextField();
 
105
        _2CoordFieldsTextFieldB = new javax.swing.JTextField();
 
106
        tempLabel1 = new javax.swing.JLabel();
 
107
        tempLabel2 = new javax.swing.JLabel();
 
108
        tempTextField1 = new javax.swing.JTextField();
 
109
        tempTextField2 = new javax.swing.JTextField();
 
110
        errorsPanel = new javax.swing.JPanel();
 
111
        outputErrorPanel = new javax.swing.JPanel();
 
112
        ce90Label = new javax.swing.JLabel();
 
113
        le90Label = new javax.swing.JLabel();
 
114
        se90Label = new javax.swing.JLabel();
 
115
        ce90TextField = new javax.swing.JTextField();
 
116
        le90TextField = new javax.swing.JTextField();
 
117
        se90TextField = new javax.swing.JTextField();
 
118
        inputErrorPanel = new javax.swing.JPanel();
 
119
        sourcesLabel = new javax.swing.JLabel();
 
120
        sourcesComboBox = new javax.swing.JComboBox();
 
121
 
 
122
        setLayout(new java.awt.GridBagLayout());
 
123
 
 
124
        setMinimumSize(new java.awt.Dimension(439, 80));
 
125
        setPreferredSize(new java.awt.Dimension(439, 80));
 
126
        addComponentListener(new java.awt.event.ComponentAdapter() {
 
127
            public void componentResized(java.awt.event.ComponentEvent evt) {
 
128
                formComponentResized(evt);
 
129
            }
 
130
        });
 
131
 
 
132
        coordLayeredPane.setMaximumSize(new java.awt.Dimension(439, 36));
 
133
        coordLayeredPane.setMinimumSize(new java.awt.Dimension(439, 38));
 
134
        coordLayeredPane.setPreferredSize(new java.awt.Dimension(460, 38));
 
135
        coordLayeredPane.setOpaque(true);
 
136
        _3CoordFieldsPanel.setLayout(new java.awt.GridLayout(2, 3, 12, 0));
 
137
 
 
138
        _3CoordFieldsPanel.setMaximumSize(new java.awt.Dimension(339, 36));
 
139
        _3CoordFieldsPanel.setMinimumSize(new java.awt.Dimension(339, 36));
 
140
        _3CoordFieldsPanel.setPreferredSize(new java.awt.Dimension(339, 36));
 
141
        _3CoordFieldsPanel.setOpaque(false);
 
142
        _3CoordFieldsLabelA.setText("X (m):");
 
143
        _3CoordFieldsLabelA.setMaximumSize(new java.awt.Dimension(105, 16));
 
144
        _3CoordFieldsLabelA.setMinimumSize(new java.awt.Dimension(105, 16));
 
145
        _3CoordFieldsLabelA.setPreferredSize(new java.awt.Dimension(105, 16));
 
146
        _3CoordFieldsLabelA.setOpaque(true);
 
147
        _3CoordFieldsPanel.add(_3CoordFieldsLabelA);
 
148
 
 
149
        _3CoordFieldsLabelB.setText("Y (m):");
 
150
        _3CoordFieldsLabelB.setMaximumSize(new java.awt.Dimension(105, 16));
 
151
        _3CoordFieldsLabelB.setMinimumSize(new java.awt.Dimension(105, 16));
 
152
        _3CoordFieldsLabelB.setPreferredSize(new java.awt.Dimension(105, 16));
 
153
        _3CoordFieldsLabelB.setOpaque(true);
 
154
        _3CoordFieldsPanel.add(_3CoordFieldsLabelB);
 
155
 
 
156
        _3CoordFieldsLabelC.setText("Z (m):");
 
157
        _3CoordFieldsLabelC.setMaximumSize(new java.awt.Dimension(105, 16));
 
158
        _3CoordFieldsLabelC.setMinimumSize(new java.awt.Dimension(105, 16));
 
159
        _3CoordFieldsLabelC.setPreferredSize(new java.awt.Dimension(105, 16));
 
160
        _3CoordFieldsLabelC.setOpaque(true);
 
161
        _3CoordFieldsPanel.add(_3CoordFieldsLabelC);
 
162
 
 
163
        _3CoordFieldsTextFieldA.setText("0.0");
 
164
        _3CoordFieldsTextFieldA.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
165
        _3CoordFieldsTextFieldA.setMinimumSize(new java.awt.Dimension(105, 20));
 
166
        _3CoordFieldsTextFieldA.setPreferredSize(new java.awt.Dimension(105, 20));
 
167
        _3CoordFieldsPanel.add(_3CoordFieldsTextFieldA);
 
168
 
 
169
        _3CoordFieldsTextFieldB.setText("0.0");
 
170
        _3CoordFieldsTextFieldB.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
171
        _3CoordFieldsTextFieldB.setMinimumSize(new java.awt.Dimension(105, 20));
 
172
        _3CoordFieldsTextFieldB.setPreferredSize(new java.awt.Dimension(105, 20));
 
173
        _3CoordFieldsPanel.add(_3CoordFieldsTextFieldB);
 
174
 
 
175
        _3CoordFieldsTextFieldC.setText("0.0");
 
176
        _3CoordFieldsTextFieldC.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
177
        _3CoordFieldsTextFieldC.setMinimumSize(new java.awt.Dimension(105, 20));
 
178
        _3CoordFieldsTextFieldC.setPreferredSize(new java.awt.Dimension(105, 20));
 
179
        _3CoordFieldsPanel.add(_3CoordFieldsTextFieldC);
 
180
 
 
181
        _3CoordFieldsPanel.setBounds(2, 2, 439, 37);
 
182
        coordLayeredPane.add(_3CoordFieldsPanel, javax.swing.JLayeredPane.DEFAULT_LAYER);
 
183
 
 
184
        _2CoordFieldsPanel.setLayout(new java.awt.GridBagLayout());
 
185
 
 
186
        _2CoordFieldsPanel.setMaximumSize(new java.awt.Dimension(229, 36));
 
187
        _2CoordFieldsPanel.setMinimumSize(new java.awt.Dimension(229, 36));
 
188
        _2CoordFieldsPanel.setPreferredSize(new java.awt.Dimension(229, 36));
 
189
        _2CoordFieldsPanel.setOpaque(false);
 
190
        _2CoordFieldsLabelA.setText("Easting / X (m):");
 
191
        _2CoordFieldsLabelA.setAlignmentX(1.0F);
 
192
        _2CoordFieldsLabelA.setMaximumSize(new java.awt.Dimension(106, 16));
 
193
        _2CoordFieldsLabelA.setMinimumSize(new java.awt.Dimension(106, 16));
 
194
        _2CoordFieldsLabelA.setPreferredSize(new java.awt.Dimension(106, 16));
 
195
        _2CoordFieldsLabelA.setOpaque(true);
 
196
        gridBagConstraints = new java.awt.GridBagConstraints();
 
197
        gridBagConstraints.gridx = 1;
 
198
        gridBagConstraints.gridy = 0;
 
199
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
200
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 
201
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 6);
 
202
        _2CoordFieldsPanel.add(_2CoordFieldsLabelA, gridBagConstraints);
 
203
 
 
204
        _2CoordFieldsLabelB.setText("Northing / Y (m):");
 
205
        _2CoordFieldsLabelB.setMaximumSize(new java.awt.Dimension(106, 16));
 
206
        _2CoordFieldsLabelB.setMinimumSize(new java.awt.Dimension(106, 16));
 
207
        _2CoordFieldsLabelB.setPreferredSize(new java.awt.Dimension(106, 16));
 
208
        _2CoordFieldsLabelB.setOpaque(true);
 
209
        gridBagConstraints = new java.awt.GridBagConstraints();
 
210
        gridBagConstraints.gridx = 2;
 
211
        gridBagConstraints.gridy = 0;
 
212
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
213
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 
214
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 6);
 
215
        _2CoordFieldsPanel.add(_2CoordFieldsLabelB, gridBagConstraints);
 
216
 
 
217
        _2CoordFieldsTextFieldA.setText("0.0");
 
218
        _2CoordFieldsTextFieldA.setAlignmentX(1.0F);
 
219
        _2CoordFieldsTextFieldA.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
220
        _2CoordFieldsTextFieldA.setMargin(new java.awt.Insets(0, 0, 5, 0));
 
221
        _2CoordFieldsTextFieldA.setMinimumSize(new java.awt.Dimension(106, 20));
 
222
        _2CoordFieldsTextFieldA.setPreferredSize(new java.awt.Dimension(106, 20));
 
223
        gridBagConstraints = new java.awt.GridBagConstraints();
 
224
        gridBagConstraints.gridx = 1;
 
225
        gridBagConstraints.gridy = 1;
 
226
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
227
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 
228
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 1, 6);
 
229
        _2CoordFieldsPanel.add(_2CoordFieldsTextFieldA, gridBagConstraints);
 
230
 
 
231
        _2CoordFieldsTextFieldB.setText("0.0");
 
232
        _2CoordFieldsTextFieldB.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
233
        _2CoordFieldsTextFieldB.setMargin(new java.awt.Insets(0, 0, 5, 0));
 
234
        _2CoordFieldsTextFieldB.setMinimumSize(new java.awt.Dimension(106, 20));
 
235
        _2CoordFieldsTextFieldB.setPreferredSize(new java.awt.Dimension(106, 20));
 
236
        gridBagConstraints = new java.awt.GridBagConstraints();
 
237
        gridBagConstraints.gridx = 2;
 
238
        gridBagConstraints.gridy = 1;
 
239
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
240
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 
241
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 1, 6);
 
242
        _2CoordFieldsPanel.add(_2CoordFieldsTextFieldB, gridBagConstraints);
 
243
 
 
244
        tempLabel1.setText("Easting / X (m):");
 
245
        tempLabel1.setAlignmentX(1.0F);
 
246
        tempLabel1.setMaximumSize(new java.awt.Dimension(106, 16));
 
247
        tempLabel1.setMinimumSize(new java.awt.Dimension(106, 16));
 
248
        tempLabel1.setPreferredSize(new java.awt.Dimension(106, 16));
 
249
        tempLabel1.setOpaque(true);
 
250
        gridBagConstraints = new java.awt.GridBagConstraints();
 
251
        gridBagConstraints.gridx = 0;
 
252
        gridBagConstraints.gridy = 0;
 
253
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
254
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 
255
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 6);
 
256
        _2CoordFieldsPanel.add(tempLabel1, gridBagConstraints);
 
257
 
 
258
        tempLabel2.setText("Northing / Y (m):");
 
259
        tempLabel2.setMaximumSize(new java.awt.Dimension(106, 16));
 
260
        tempLabel2.setMinimumSize(new java.awt.Dimension(106, 16));
 
261
        tempLabel2.setPreferredSize(new java.awt.Dimension(106, 16));
 
262
        tempLabel2.setOpaque(true);
 
263
        gridBagConstraints = new java.awt.GridBagConstraints();
 
264
        gridBagConstraints.gridx = 3;
 
265
        gridBagConstraints.gridy = 0;
 
266
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
267
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 
268
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
 
269
        _2CoordFieldsPanel.add(tempLabel2, gridBagConstraints);
 
270
 
 
271
        tempTextField1.setText("0.0");
 
272
        tempTextField1.setAlignmentX(1.0F);
 
273
        tempTextField1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
274
        tempTextField1.setMargin(new java.awt.Insets(0, 0, 5, 0));
 
275
        tempTextField1.setMinimumSize(new java.awt.Dimension(106, 20));
 
276
        tempTextField1.setPreferredSize(new java.awt.Dimension(106, 20));
 
277
        gridBagConstraints = new java.awt.GridBagConstraints();
 
278
        gridBagConstraints.gridx = 0;
 
279
        gridBagConstraints.gridy = 1;
 
280
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
281
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 
282
        gridBagConstraints.insets = new java.awt.Insets(0, 4, 1, 6);
 
283
        _2CoordFieldsPanel.add(tempTextField1, gridBagConstraints);
 
284
 
 
285
        tempTextField2.setText("0.0");
 
286
        tempTextField2.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
287
        tempTextField2.setMargin(new java.awt.Insets(0, 0, 5, 0));
 
288
        tempTextField2.setMinimumSize(new java.awt.Dimension(106, 20));
 
289
        tempTextField2.setPreferredSize(new java.awt.Dimension(106, 20));
 
290
        gridBagConstraints = new java.awt.GridBagConstraints();
 
291
        gridBagConstraints.gridx = 3;
 
292
        gridBagConstraints.gridy = 1;
 
293
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
294
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 
295
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 1, 0);
 
296
        _2CoordFieldsPanel.add(tempTextField2, gridBagConstraints);
 
297
 
 
298
        _2CoordFieldsPanel.setBounds(4, 2, 460, 45);
 
299
        coordLayeredPane.add(_2CoordFieldsPanel, javax.swing.JLayeredPane.DEFAULT_LAYER);
 
300
 
 
301
        gridBagConstraints = new java.awt.GridBagConstraints();
 
302
        gridBagConstraints.insets = new java.awt.Insets(1, 2, 1, 2);
 
303
        add(coordLayeredPane, gridBagConstraints);
 
304
 
 
305
        errorsPanel.setLayout(new java.awt.GridBagLayout());
 
306
 
 
307
        errorsPanel.setMinimumSize(new java.awt.Dimension(460, 40));
 
308
        errorsPanel.setPreferredSize(new java.awt.Dimension(460, 40));
 
309
        errorsPanel.setOpaque(false);
 
310
        outputErrorPanel.setLayout(new java.awt.GridBagLayout());
 
311
 
 
312
        outputErrorPanel.setMinimumSize(new java.awt.Dimension(170, 40));
 
313
        outputErrorPanel.setPreferredSize(new java.awt.Dimension(170, 40));
 
314
        outputErrorPanel.setOpaque(false);
 
315
        ce90Label.setText("90% CE:");
 
316
        ce90Label.setMaximumSize(new java.awt.Dimension(48, 16));
 
317
        ce90Label.setMinimumSize(new java.awt.Dimension(48, 16));
 
318
        ce90Label.setPreferredSize(new java.awt.Dimension(48, 16));
 
319
        ce90Label.setOpaque(true);
 
320
        gridBagConstraints = new java.awt.GridBagConstraints();
 
321
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
322
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 6);
 
323
        outputErrorPanel.add(ce90Label, gridBagConstraints);
 
324
 
 
325
        le90Label.setText("90% LE:");
 
326
        le90Label.setMaximumSize(new java.awt.Dimension(48, 16));
 
327
        le90Label.setMinimumSize(new java.awt.Dimension(48, 16));
 
328
        le90Label.setPreferredSize(new java.awt.Dimension(48, 16));
 
329
        le90Label.setOpaque(true);
 
330
        gridBagConstraints = new java.awt.GridBagConstraints();
 
331
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
332
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 6);
 
333
        outputErrorPanel.add(le90Label, gridBagConstraints);
 
334
 
 
335
        se90Label.setText("90% SE:");
 
336
        se90Label.setMaximumSize(new java.awt.Dimension(48, 16));
 
337
        se90Label.setMinimumSize(new java.awt.Dimension(48, 16));
 
338
        se90Label.setPreferredSize(new java.awt.Dimension(48, 16));
 
339
        se90Label.setOpaque(true);
 
340
        gridBagConstraints = new java.awt.GridBagConstraints();
 
341
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
342
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
 
343
        outputErrorPanel.add(se90Label, gridBagConstraints);
 
344
 
 
345
        ce90TextField.setToolTipText("");
 
346
        ce90TextField.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
347
        ce90TextField.setMinimumSize(new java.awt.Dimension(48, 20));
 
348
        ce90TextField.setPreferredSize(new java.awt.Dimension(48, 20));
 
349
        ce90TextField.addKeyListener(new java.awt.event.KeyAdapter() {
 
350
            public void keyTyped(java.awt.event.KeyEvent evt) {
 
351
                accuracyTextFieldKeyTyped(evt);
 
352
            }
 
353
        });
 
354
 
 
355
        gridBagConstraints = new java.awt.GridBagConstraints();
 
356
        gridBagConstraints.gridx = 0;
 
357
        gridBagConstraints.gridy = 1;
 
358
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
359
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 6);
 
360
        outputErrorPanel.add(ce90TextField, gridBagConstraints);
 
361
 
 
362
        le90TextField.setToolTipText("");
 
363
        le90TextField.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
364
        le90TextField.setMinimumSize(new java.awt.Dimension(48, 20));
 
365
        le90TextField.setPreferredSize(new java.awt.Dimension(48, 20));
 
366
        le90TextField.addKeyListener(new java.awt.event.KeyAdapter() {
 
367
            public void keyTyped(java.awt.event.KeyEvent evt) {
 
368
                accuracyTextFieldKeyTyped(evt);
 
369
            }
 
370
        });
 
371
 
 
372
        gridBagConstraints = new java.awt.GridBagConstraints();
 
373
        gridBagConstraints.gridx = 1;
 
374
        gridBagConstraints.gridy = 1;
 
375
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
376
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 6);
 
377
        outputErrorPanel.add(le90TextField, gridBagConstraints);
 
378
 
 
379
        se90TextField.setToolTipText("");
 
380
        se90TextField.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
381
        se90TextField.setMinimumSize(new java.awt.Dimension(48, 20));
 
382
        se90TextField.setPreferredSize(new java.awt.Dimension(48, 20));
 
383
        se90TextField.addKeyListener(new java.awt.event.KeyAdapter() {
 
384
            public void keyTyped(java.awt.event.KeyEvent evt) {
 
385
                accuracyTextFieldKeyTyped(evt);
 
386
            }
 
387
        });
 
388
 
 
389
        gridBagConstraints = new java.awt.GridBagConstraints();
 
390
        gridBagConstraints.gridx = 2;
 
391
        gridBagConstraints.gridy = 1;
 
392
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
393
        gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
 
394
        outputErrorPanel.add(se90TextField, gridBagConstraints);
 
395
 
 
396
        gridBagConstraints = new java.awt.GridBagConstraints();
 
397
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
398
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 
399
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 5);
 
400
        errorsPanel.add(outputErrorPanel, gridBagConstraints);
 
401
 
 
402
        inputErrorPanel.setLayout(new java.awt.GridBagLayout());
 
403
 
 
404
        inputErrorPanel.setMinimumSize(new java.awt.Dimension(265, 40));
 
405
        inputErrorPanel.setPreferredSize(new java.awt.Dimension(265, 40));
 
406
        sourcesLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
 
407
        sourcesLabel.setText("Sources:");
 
408
        gridBagConstraints = new java.awt.GridBagConstraints();
 
409
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
410
        inputErrorPanel.add(sourcesLabel, gridBagConstraints);
 
411
 
 
412
        sourcesComboBox.setMinimumSize(new java.awt.Dimension(265, 23));
 
413
        sourcesComboBox.setPreferredSize(new java.awt.Dimension(265, 23));
 
414
        sourcesComboBox.addActionListener(new java.awt.event.ActionListener() {
 
415
            public void actionPerformed(java.awt.event.ActionEvent evt) {
 
416
                sourcesComboBoxActionPerformed(evt);
 
417
            }
 
418
        });
 
419
 
 
420
        gridBagConstraints = new java.awt.GridBagConstraints();
 
421
        gridBagConstraints.gridx = 0;
 
422
        gridBagConstraints.gridy = 1;
 
423
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
424
        inputErrorPanel.add(sourcesComboBox, gridBagConstraints);
 
425
 
 
426
        gridBagConstraints = new java.awt.GridBagConstraints();
 
427
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
428
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 
429
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 3);
 
430
        errorsPanel.add(inputErrorPanel, gridBagConstraints);
 
431
 
 
432
        gridBagConstraints = new java.awt.GridBagConstraints();
 
433
        gridBagConstraints.gridx = 0;
 
434
        gridBagConstraints.gridy = 1;
 
435
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
436
        gridBagConstraints.insets = new java.awt.Insets(1, 2, 1, 2);
 
437
        add(errorsPanel, gridBagConstraints);
 
438
 
 
439
    }//GEN-END:initComponents
 
440
 
 
441
  private void accuracyTextFieldKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_accuracyTextFieldKeyTyped
 
442
      int keyChar = evt.getKeyChar();
 
443
      if (keyChar != java.awt.event.KeyEvent.VK_ENTER)
 
444
          usePrevAccuracies = false;
 
445
  }//GEN-LAST:event_accuracyTextFieldKeyTyped
 
446
 
 
447
  private void sourcesComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sourcesComboBoxActionPerformed
 
448
    updateAccuracy();
 
449
  }//GEN-LAST:event_sourcesComboBoxActionPerformed
 
450
 
 
451
  private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
 
452
    setPanelSizes();
 
453
  }//GEN-LAST:event_formComponentResized
 
454
 
 
455
    private void fillAccuracyList()
 
456
    {
 
457
        try
 
458
        {
 
459
            JNISource jniSource = new JNISource();
 
460
            java.lang.String sourceName = "";
 
461
            long sourceCount = jniSource.JNISourceCount();
 
462
 
 
463
            for (int i = 1; i <= sourceCount; i++)
 
464
            {
 
465
              sourceName = jniSource.JNISourceName(i);
 
466
              sourcesComboBox.addItem(sourceName);
 
467
            }
 
468
        }
 
469
        catch(GeotransError e)
 
470
        {
 
471
            jniStrtoval.displayErrorMsg(new javax.swing.JFrame(), e.getMessage());
 
472
        }
 
473
        catch(JNIException e)
 
474
        {
 
475
            jniStrtoval.displayErrorMsg(new javax.swing.JFrame(), e.getMessage());
 
476
        }
 
477
    }
 
478
 
 
479
 
 
480
    private void setOneCoord()
 
481
    {
 
482
        _2CoordFieldsPanel.setVisible(false);
 
483
        _3CoordFieldsPanel.setVisible(true);
 
484
        coordLayeredPane.moveToFront(_3CoordFieldsPanel);
 
485
 
 
486
        // Hide optional fields.
 
487
        _3CoordFieldsLabelA.setVisible(false);
 
488
        _3CoordFieldsLabelC.setVisible(false);
 
489
        _3CoordFieldsTextFieldA.setVisible(false);
 
490
        _3CoordFieldsTextFieldC.setVisible(false);
 
491
 
 
492
        _3CoordFieldsLabelB.setText("Coordinate String:");
 
493
    }
 
494
 
 
495
    private void setTwoCoords()
 
496
    {
 
497
        _3CoordFieldsPanel.setVisible(false);
 
498
        _2CoordFieldsPanel.setVisible(true);
 
499
        coordLayeredPane.moveToFront(_2CoordFieldsPanel);
 
500
        _2CoordFieldsLabelA.setText("Easting / X (m):");
 
501
        _2CoordFieldsLabelB.setText("Northing / Y (m):");
 
502
        _2CoordFieldsTextFieldA.setText( "0" );
 
503
        _2CoordFieldsTextFieldB.setText( "0" );
 
504
    }
 
505
 
 
506
    private void setThreeCoords()
 
507
    {
 
508
        _2CoordFieldsPanel.setVisible(false);
 
509
        _3CoordFieldsPanel.setVisible(true);
 
510
        coordLayeredPane.moveToFront(_3CoordFieldsPanel);
 
511
 
 
512
        // Show optional fields.
 
513
        _3CoordFieldsLabelA.setVisible(true);
 
514
        _3CoordFieldsLabelC.setVisible(true);
 
515
        _3CoordFieldsTextFieldA.setVisible(true);
 
516
        _3CoordFieldsTextFieldC.setVisible(true);
 
517
 
 
518
        /* may be turned off by height type buttons. */
 
519
        setHeightFieldEditable();
 
520
 
 
521
        _3CoordFieldsLabelA.setText("X (m):");
 
522
        _3CoordFieldsLabelB.setText("Y (m):");
 
523
        _3CoordFieldsLabelC.setText("Z (m):");
 
524
        _3CoordFieldsTextFieldA.setText( "0" );
 
525
        _3CoordFieldsTextFieldB.setText( "0" );
 
526
        _3CoordFieldsTextFieldC.setText( "0" );
 
527
    }
 
528
 
 
529
 
 
530
    private void setFormat()
 
531
    {
 
532
        useNSEW = formatOptions.getUseNSEW();
 
533
        useMinutes = formatOptions.getUseMinutes();
 
534
        useSeconds = formatOptions.getUseSeconds();
 
535
    }
 
536
 
 
537
    // This function is needed to make the fields visible when the gui is displayed
 
538
    private void setPanelSizes()
 
539
    {
 
540
        java.awt.Dimension dsize = new java.awt.Dimension();
 
541
        dsize = coordLayeredPane.getSize();
 
542
 
 
543
        _2CoordFieldsPanel.setBounds (0, 0, dsize.width, dsize.height);
 
544
        _3CoordFieldsPanel.setBounds (0, 0, dsize.width, dsize.height);
 
545
 
 
546
        _2CoordFieldsPanel.updateUI();
 
547
        _3CoordFieldsPanel.updateUI();
 
548
    }
 
549
 
 
550
    // Set the input coordinates in the engine
 
551
    public void setCoords(int state, int direction, int projType)
 
552
    {
 
553
        try
 
554
        {
 
555
            switch(projType)
 
556
            {
 
557
                case CoordinateTypes.ALBERS:
 
558
                {
 
559
                    AlbersEqualAreaConic albersCoords = new AlbersEqualAreaConic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
560
                                                                                 jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
561
                    jniEngine.JNISetAlbersEqualAreaConicCoordinates(state, direction, albersCoords);
 
562
 
 
563
                    break;
 
564
                }
 
565
                case CoordinateTypes.AZIMUTHAL:
 
566
                {
 
567
                    AzimuthalEquidistant azeqCoords = new AzimuthalEquidistant(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
568
                                                                               jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
569
                    jniEngine.JNISetAzimuthalEquidistantCoordinates(state, direction, azeqCoords);
 
570
 
 
571
                    break;
 
572
                }
 
573
                case CoordinateTypes.BNG:
 
574
                {
 
575
                    BNG BNGCoords = new BNG(_3CoordFieldsTextFieldB.getText().trim());
 
576
                    jniEngine.JNISetBNGCoordinates(state, direction, BNGCoords);
 
577
 
 
578
                    break;
 
579
                }
 
580
                case CoordinateTypes.BONNE:
 
581
                {
 
582
                    Bonne bonneCoords = new Bonne(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
583
                                                  jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
584
                    jniEngine.JNISetBonneCoordinates(state, direction, bonneCoords);
 
585
 
 
586
                    break;
 
587
                }
 
588
                case CoordinateTypes.CASSINI:
 
589
                {
 
590
                    Cassini cassiniCoords = new Cassini(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
591
                                                        jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
592
                   jniEngine.JNISetCassiniCoordinates(state, direction, cassiniCoords);
 
593
 
 
594
                    break;
 
595
                }
 
596
                case CoordinateTypes.CYLEQA:
 
597
                {
 
598
                    CylindricalEqualArea cyleqaCoords = new CylindricalEqualArea(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
599
                                                                                 jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
600
                    jniEngine.JNISetCylindricalEqualAreaCoordinates(state, direction, cyleqaCoords);
 
601
 
 
602
                    break;
 
603
                }
 
604
                case CoordinateTypes.ECKERT4:
 
605
                {
 
606
                    Eckert4 eckert4Coords = new Eckert4(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
607
                                                        jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
608
                    jniEngine.JNISetEckert4Coordinates(state, direction, eckert4Coords);
 
609
 
 
610
                    break;
 
611
                }
 
612
                case CoordinateTypes.ECKERT6:
 
613
                {
 
614
                    Eckert6 eckert6Coords = new Eckert6(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
615
                                                        jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
616
                    jniEngine.JNISetEckert6Coordinates(state, direction, eckert6Coords);
 
617
 
 
618
                    break;
 
619
                }
 
620
                case CoordinateTypes.EQDCYL:
 
621
                {
 
622
                    EquidistantCylindrical eqdcylCoords = new EquidistantCylindrical(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
623
                                                                                     jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
624
                    jniEngine.JNISetEquidistantCylindricalCoordinates(state, direction, eqdcylCoords);
 
625
 
 
626
                    break;
 
627
                }
 
628
                case CoordinateTypes.F16GRS:
 
629
                {
 
630
                    java.lang.String coordString = _3CoordFieldsTextFieldB.getText().trim();
 
631
                    int length = coordString.length();
 
632
                    MGRS MGRSCoords;
 
633
                    if ((coordString.charAt(length - 1) == ('0')) && (coordString.charAt(length - 2) == ('0')))
 
634
                        MGRSCoords = new MGRS(coordString.substring(0, length - 2));
 
635
                    else
 
636
                        MGRSCoords = new MGRS(coordString);
 
637
                    jniEngine.JNISetMGRSCoordinates(state, direction, MGRSCoords);
 
638
 
 
639
                    break;
 
640
                }
 
641
                case CoordinateTypes.GARS:
 
642
                {
 
643
                    GARS GARSCoords = new GARS(_3CoordFieldsTextFieldB.getText().trim());
 
644
                    jniEngine.JNISetGARSCoordinates(state, direction, GARSCoords);
 
645
 
 
646
                    break;
 
647
                }
 
648
                case CoordinateTypes.GEOCENTRIC:
 
649
                {
 
650
                    Geocentric geocentricCoords = new Geocentric(jniStrtoval.stringToDouble(_3CoordFieldsTextFieldA.getText().trim(), "Invalid coord X"),
 
651
                                                                 jniStrtoval.stringToDouble(_3CoordFieldsTextFieldB.getText().trim(), "Invalid coord Y"),
 
652
                                                                 jniStrtoval.stringToDouble(_3CoordFieldsTextFieldC.getText().trim(), "Invalid coord Z"));
 
653
                    jniEngine.JNISetGeocentricCoordinates(state, direction, geocentricCoords);
 
654
 
 
655
                    break;
 
656
                }
 
657
                case CoordinateTypes.GEODETIC:
 
658
                {
 
659
                    Geodetic geodeticCoords = new Geodetic(jniStrtoval.stringToLongitude(_3CoordFieldsTextFieldA.getText().trim(), "Invalid Longitude"),
 
660
                                                           jniStrtoval.stringToLatitude(_3CoordFieldsTextFieldB.getText().trim(), "Invalid Latitude"),
 
661
                                                           jniStrtoval.stringToDouble(_3CoordFieldsTextFieldC.getText().trim(), "Invalid Height"));
 
662
                    jniEngine.JNISetGeodeticCoordinates(state, direction, geodeticCoords);
 
663
 
 
664
                    break;
 
665
                }
 
666
                case CoordinateTypes.GEOREF:
 
667
                {
 
668
                    GEOREF GEOREFCoords = new GEOREF(_3CoordFieldsTextFieldB.getText().trim());
 
669
                    jniEngine.JNISetGEOREFCoordinates(state, direction, GEOREFCoords);
 
670
 
 
671
                    break;
 
672
                }
 
673
                case CoordinateTypes.GNOMONIC:
 
674
                {
 
675
                    Gnomonic gnomonicCoords = new Gnomonic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
676
                                                           jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
677
                    jniEngine.JNISetGnomonicCoordinates(state, direction, gnomonicCoords);
 
678
 
 
679
                    break;
 
680
                }
 
681
                case CoordinateTypes.LAMBERT_1:
 
682
                {
 
683
                    LambertConformalConic1 lambert1Coords = new LambertConformalConic1(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
684
                                                                                                                   jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
685
                    jniEngine.JNISetLambertConformalConic1Coordinates(state, direction, lambert1Coords);
 
686
 
 
687
                    break;
 
688
                }
 
689
                case CoordinateTypes.LAMBERT_2:
 
690
                {
 
691
                    LambertConformalConic2 lambert2Coords = new LambertConformalConic2(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
692
                                                                                       jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
693
                     jniEngine.JNISetLambertConformalConic2Coordinates(state, direction, lambert2Coords);
 
694
 
 
695
                    break;
 
696
                }
 
697
                case CoordinateTypes.LOCCART:
 
698
                {
 
699
                    LocalCartesian loccartCoords = new LocalCartesian(jniStrtoval.stringToDouble(_3CoordFieldsTextFieldA.getText().trim(), "Invalid coord X"),
 
700
                                                                      jniStrtoval.stringToDouble(_3CoordFieldsTextFieldB.getText().trim(), "Invalid coord Y"),
 
701
                                                                      jniStrtoval.stringToDouble(_3CoordFieldsTextFieldC.getText().trim(), "Invalid coord Z"));
 
702
                    jniEngine.JNISetLocalCartesianCoordinates(state, direction, loccartCoords);
 
703
 
 
704
                    break;
 
705
                }
 
706
                case CoordinateTypes.MERCATOR:
 
707
                {
 
708
                    Mercator mercatorCoords = new Mercator(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
709
                                                           jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
710
                    jniEngine.JNISetMercatorCoordinates(state, direction, mercatorCoords);
 
711
 
 
712
                    break;
 
713
                }
 
714
                case CoordinateTypes.MGRS:
 
715
                {
 
716
                    MGRS MGRSCoords = new MGRS(_3CoordFieldsTextFieldB.getText().trim());
 
717
                    jniEngine.JNISetMGRSCoordinates(state, direction, MGRSCoords);
 
718
 
 
719
                    break;
 
720
                }
 
721
                case CoordinateTypes.MILLER:
 
722
                {
 
723
                    MillerCylindrical millerCoords = new MillerCylindrical(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
724
                                                                           jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
725
                    jniEngine.JNISetMillerCylindricalCoordinates(state, direction, millerCoords);
 
726
 
 
727
                    break;
 
728
                }
 
729
                case CoordinateTypes.MOLLWEIDE:
 
730
                {
 
731
                    Mollweide mollweidCoords = new Mollweide(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
732
                                                             jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
733
                    jniEngine.JNISetMollweideCoordinates(state, direction, mollweidCoords);
 
734
 
 
735
                    break;
 
736
                }
 
737
                case CoordinateTypes.NEYS:
 
738
                {
 
739
                    Neys neysCoords = new Neys(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
740
                                              jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
741
                    jniEngine.JNISetNeysCoordinates(state, direction, neysCoords);
 
742
 
 
743
                    break;
 
744
                }
 
745
                case CoordinateTypes.NZMG:
 
746
                {
 
747
                    NZMG NZMGCoords = new NZMG(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
748
                                               jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
749
                    jniEngine.JNISetNZMGCoordinates(state, direction, NZMGCoords);
 
750
 
 
751
                    break;
 
752
                }
 
753
                case CoordinateTypes.OMERC:
 
754
                {
 
755
                    ObliqueMercator omercCoords = new ObliqueMercator(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
756
                                                                      jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
757
                    jniEngine.JNISetObliqueMercatorCoordinates(state, direction, omercCoords);
 
758
 
 
759
                    break;
 
760
                }
 
761
                case CoordinateTypes.ORTHOGRAPHIC:
 
762
                {
 
763
                    Orthographic orthogrCoords = new Orthographic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
764
                                                                  jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
765
                    jniEngine.JNISetOrthographicCoordinates(state, direction, orthogrCoords);
 
766
 
 
767
                    break;
 
768
                }
 
769
                case CoordinateTypes.POLARSTEREO:
 
770
                {
 
771
                    PolarStereographic polarstCoords = new PolarStereographic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
772
                                                                              jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
773
                    jniEngine.JNISetPolarStereographicCoordinates(state, direction, polarstCoords);
 
774
 
 
775
                    break;
 
776
                }
 
777
                case CoordinateTypes.POLYCONIC:
 
778
                {
 
779
                    Polyconic polyconCoords = new Polyconic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
780
                                                            jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
781
                    jniEngine.JNISetPolyconicCoordinates(state, direction, polyconCoords);
 
782
 
 
783
                    break;
 
784
                }
 
785
                case CoordinateTypes.SINUSOIDAL:
 
786
                {
 
787
                    Sinusoidal sinusoidCoords = new Sinusoidal(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
788
                                                               jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
789
                    jniEngine.JNISetSinusoidalCoordinates(state, direction, sinusoidCoords);
 
790
 
 
791
                    break;
 
792
                }
 
793
                case CoordinateTypes.STEREOGRAPHIC:
 
794
                {
 
795
                    Stereographic stereogrCoords = new Stereographic(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
796
                                                                     jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
797
                    jniEngine.JNISetStereographicCoordinates(state, direction, stereogrCoords);
 
798
 
 
799
                    break;
 
800
                }
 
801
                case CoordinateTypes.TRCYLEQA:
 
802
                {
 
803
                    TransverseCylindricalEqualArea trcyleqaCoords = new TransverseCylindricalEqualArea(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
804
                                                                                                       jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
805
                    jniEngine.JNISetTransverseCylindricalEqualAreaCoordinates(state, direction, trcyleqaCoords);
 
806
 
 
807
                    break;
 
808
                }
 
809
                case CoordinateTypes.TRANMERC:
 
810
                {
 
811
                    TransverseMercator tranmercCoords = new TransverseMercator(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
812
                                                                               jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"));
 
813
                    jniEngine.JNISetTransverseMercatorCoordinates(state, direction, tranmercCoords);
 
814
 
 
815
                    break;
 
816
                }
 
817
                case CoordinateTypes.GRINTEN:
 
818
                {
 
819
                    VanDerGrinten grintenCoords = new VanDerGrinten(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
820
                                                                    jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing")/*, hemisphere*/);
 
821
                    jniEngine.JNISetVanDerGrintenCoordinates(state, direction, grintenCoords);
 
822
 
 
823
                    break;
 
824
                }
 
825
                case CoordinateTypes.UPS:
 
826
                {
 
827
                    UPS UPSCoords = new UPS(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
828
                                            jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"), hemisphere);
 
829
                    jniEngine.JNISetUPSCoordinates(state, direction, UPSCoords);
 
830
 
 
831
                    break;
 
832
                }
 
833
                case CoordinateTypes.USNG:
 
834
                {
 
835
                    USNG USNGCoords = new USNG(_3CoordFieldsTextFieldB.getText().trim());
 
836
                    jniEngine.JNISetUSNGCoordinates(state, direction, USNGCoords);
 
837
 
 
838
                    break;
 
839
                }
 
840
                case CoordinateTypes.UTM:
 
841
                {
 
842
                    UTM UTMCoords = new UTM(jniStrtoval.stringToDouble(_2CoordFieldsTextFieldA.getText().trim(), "Invalid Easting"),
 
843
                                            jniStrtoval.stringToDouble(_2CoordFieldsTextFieldB.getText().trim(), "Invalid Northing"), zone, hemisphere);
 
844
                    jniEngine.JNISetUTMCoordinates(state, direction, UTMCoords);
 
845
 
 
846
                    break;
 
847
                }
 
848
                default:
 
849
                    break;
 
850
            }
 
851
        }
 
852
        catch(GeotransError e)
 
853
        {
 
854
            jniStrtoval.setEngineError(true, e.getMessage());
 
855
        }
 
856
        catch(JNIException e)
 
857
        {
 
858
            jniStrtoval.setJNIError(true, e.getMessage());
 
859
        }
 
860
    }
 
861
 
 
862
    public boolean getCoords(int state, int direction, int projType)
 
863
    {
 
864
        boolean noErrors = true;
 
865
 
 
866
        setFormat();
 
867
 
 
868
        try
 
869
        {
 
870
            switch(projType)
 
871
            {
 
872
                case CoordinateTypes.ALBERS:
 
873
                {
 
874
                    AlbersEqualAreaConic albersCoords = jniEngine.JNIGetAlbersEqualAreaConicCoordinates(state, direction);
 
875
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(albersCoords.getEasting()));
 
876
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(albersCoords.getNorthing()));
 
877
                    break;
 
878
                }
 
879
                case CoordinateTypes.AZIMUTHAL:
 
880
                {
 
881
                    AzimuthalEquidistant azeqCoords = jniEngine.JNIGetAzimuthalEquidistantCoordinates(state, direction);
 
882
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(azeqCoords.getEasting()));
 
883
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(azeqCoords.getNorthing()));
 
884
                    break;
 
885
                }
 
886
                case CoordinateTypes.BNG:
 
887
                {
 
888
                    BNG BNGCoords = jniEngine.JNIGetBNGCoordinates(state, direction);
 
889
                    _3CoordFieldsTextFieldB.setText(BNGCoords.getCoordinateString());
 
890
                    break;
 
891
                }
 
892
                case CoordinateTypes.BONNE:
 
893
                {
 
894
                    Bonne bonneCoords = jniEngine.JNIGetBonneCoordinates(state, direction);
 
895
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(bonneCoords.getEasting()));
 
896
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(bonneCoords.getNorthing()));
 
897
                    break;
 
898
                }
 
899
                case CoordinateTypes.CASSINI:
 
900
                {
 
901
                    Cassini cassiniCoords = jniEngine.JNIGetCassiniCoordinates(state, direction);
 
902
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(cassiniCoords.getEasting()));
 
903
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(cassiniCoords.getNorthing()));
 
904
                    break;
 
905
                }
 
906
                case CoordinateTypes.CYLEQA:
 
907
                {
 
908
                    CylindricalEqualArea cyleqaCoords = jniEngine.JNIGetCylindricalEqualAreaCoordinates(state, direction);
 
909
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(cyleqaCoords.getEasting()));
 
910
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(cyleqaCoords.getNorthing()));
 
911
                    break;
 
912
                }
 
913
                case CoordinateTypes.ECKERT4:
 
914
                {
 
915
                    Eckert4 eckert4Coords = jniEngine.JNIGetEckert4Coordinates(state, direction);
 
916
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(eckert4Coords.getEasting()));
 
917
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(eckert4Coords.getNorthing()));
 
918
                    break;
 
919
                }
 
920
                case CoordinateTypes.ECKERT6:
 
921
                {
 
922
                    Eckert6 eckert6Coords = jniEngine.JNIGetEckert6Coordinates(state, direction);
 
923
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(eckert6Coords.getEasting()));
 
924
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(eckert6Coords.getNorthing()));
 
925
                    break;
 
926
                }
 
927
                case CoordinateTypes.EQDCYL:
 
928
                {
 
929
                    EquidistantCylindrical eqdcylCoords = jniEngine.JNIGetEquidistantCylindricalCoordinates(state, direction);
 
930
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(eqdcylCoords.getEasting()));
 
931
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(eqdcylCoords.getNorthing()));
 
932
                    break;
 
933
                }
 
934
                case CoordinateTypes.F16GRS:
 
935
                {
 
936
                    MGRS MGRSCoords = jniEngine.JNIGetMGRSCoordinates(state, direction);
 
937
                    java.lang.String temp = MGRSCoords.getCoordinateString();
 
938
                    if( jniEngine.JNIGetPrecision() == formatOptions.MET100000)
 
939
                        _3CoordFieldsTextFieldB.setText(temp + "00");
 
940
                    else
 
941
                       _3CoordFieldsTextFieldB.setText(temp);
 
942
                    break;
 
943
                }
 
944
                case CoordinateTypes.GARS:
 
945
                {
 
946
                    GARS GARSCoords = jniEngine.JNIGetGARSCoordinates(state, direction);
 
947
                    _3CoordFieldsTextFieldB.setText(GARSCoords.getCoordinateString());
 
948
                    break;
 
949
                }
 
950
                case CoordinateTypes.GEOCENTRIC:
 
951
                {
 
952
                    Geocentric geocentricCoords = jniEngine.JNIGetGeocentricCoordinates(state, direction);
 
953
                    _3CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(geocentricCoords.getX()));
 
954
                    _3CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(geocentricCoords.getY()));
 
955
                    _3CoordFieldsTextFieldC.setText(jniStrtoval.JNIMeterToString(geocentricCoords.getZ()));
 
956
                    break;
 
957
                }
 
958
                case CoordinateTypes.GEODETIC:
 
959
                {
 
960
                    Geodetic geodeticCoords = jniEngine.JNIGetGeodeticCoordinates(state, direction);
 
961
                    _3CoordFieldsTextFieldA.setText(jniStrtoval.JNILongitudeToString(geodeticCoords.getLongitude()*180/jniStrtoval.PI, useNSEW, useMinutes, useSeconds));
 
962
                    _3CoordFieldsTextFieldB.setText(jniStrtoval.JNILatitudeToString(geodeticCoords.getLatitude()*180/jniStrtoval.PI, useNSEW, useMinutes, useSeconds));
 
963
                    _3CoordFieldsTextFieldC.setText(jniStrtoval.JNIMeterToString(geodeticCoords.getHeight()));
 
964
                    break;
 
965
                }
 
966
                case CoordinateTypes.GEOREF:
 
967
                {
 
968
                    GEOREF GEOREFCoords = jniEngine.JNIGetGEOREFCoordinates(state, direction);
 
969
                    _3CoordFieldsTextFieldB.setText(GEOREFCoords.getCoordinateString());
 
970
                    break;
 
971
                }
 
972
                case CoordinateTypes.GNOMONIC:
 
973
                {
 
974
                    Gnomonic gnomonicCoords = jniEngine.JNIGetGnomonicCoordinates(state, direction);
 
975
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(gnomonicCoords.getEasting()));
 
976
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(gnomonicCoords.getNorthing()));
 
977
                    break;
 
978
                }
 
979
                case CoordinateTypes.LAMBERT_1:
 
980
                {
 
981
                    LambertConformalConic1 lambert1Coords = jniEngine.JNIGetLambertConformalConic1Coordinates(state, direction);
 
982
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(lambert1Coords.getEasting()));
 
983
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(lambert1Coords.getNorthing()));
 
984
                    break;
 
985
                }
 
986
                case CoordinateTypes.LAMBERT_2:
 
987
                {
 
988
                    LambertConformalConic2 lambert2Coords = jniEngine.JNIGetLambertConformalConic2Coordinates(state, direction);
 
989
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(lambert2Coords.getEasting()));
 
990
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(lambert2Coords.getNorthing()));
 
991
                    break;
 
992
                }
 
993
                case CoordinateTypes.LOCCART:
 
994
                {
 
995
                    LocalCartesian loccartCoords = jniEngine.JNIGetLocalCartesianCoordinates(state, direction);
 
996
                    _3CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(loccartCoords.getX()));
 
997
                    _3CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(loccartCoords.getY()));
 
998
                    _3CoordFieldsTextFieldC.setText(jniStrtoval.JNIMeterToString(loccartCoords.getZ()));
 
999
                    break;
 
1000
                }
 
1001
                case CoordinateTypes.MERCATOR:
 
1002
                {
 
1003
                    Mercator mercatorCoords = jniEngine.JNIGetMercatorCoordinates(state, direction);
 
1004
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(mercatorCoords.getEasting()));
 
1005
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(mercatorCoords.getNorthing()));
 
1006
                    break;
 
1007
                }
 
1008
                case CoordinateTypes.MGRS:
 
1009
                {
 
1010
                    MGRS MGRSCoords = jniEngine.JNIGetMGRSCoordinates(state, direction);
 
1011
                    _3CoordFieldsTextFieldB.setText(MGRSCoords.getCoordinateString());
 
1012
                    break;
 
1013
                }
 
1014
                case CoordinateTypes.MILLER:
 
1015
                {
 
1016
                    MillerCylindrical millerCoords = jniEngine.JNIGetMillerCylindricalCoordinates(state, direction);
 
1017
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(millerCoords.getEasting()));
 
1018
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(millerCoords.getNorthing()));
 
1019
                    break;
 
1020
                }
 
1021
                case CoordinateTypes.MOLLWEIDE:
 
1022
                {
 
1023
                    Mollweide mollweidCoords = jniEngine.JNIGetMollweideCoordinates(state, direction);
 
1024
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(mollweidCoords.getEasting()));
 
1025
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(mollweidCoords.getNorthing()));
 
1026
                    break;
 
1027
                }
 
1028
                case CoordinateTypes.NEYS:
 
1029
                {
 
1030
                    Neys neysCoords = jniEngine.JNIGetNeysCoordinates(state, direction);
 
1031
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(neysCoords.getEasting()));
 
1032
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(neysCoords.getNorthing()));
 
1033
                    break;
 
1034
                }
 
1035
                case CoordinateTypes.NZMG:
 
1036
                {
 
1037
                    NZMG NZMGCoords = jniEngine.JNIGetNZMGCoordinates(state, direction);
 
1038
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(NZMGCoords.getEasting()));
 
1039
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(NZMGCoords.getNorthing()));
 
1040
                    break;
 
1041
                }
 
1042
                case CoordinateTypes.OMERC:
 
1043
                {
 
1044
                    ObliqueMercator omercCoords = jniEngine.JNIGetObliqueMercatorCoordinates(state, direction);
 
1045
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(omercCoords.getEasting()));
 
1046
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(omercCoords.getNorthing()));
 
1047
                    break;
 
1048
                }
 
1049
                case CoordinateTypes.ORTHOGRAPHIC:
 
1050
                {
 
1051
                    Orthographic orthogrCoords = jniEngine.JNIGetOrthographicCoordinates(state, direction);
 
1052
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(orthogrCoords.getEasting()));
 
1053
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(orthogrCoords.getNorthing()));
 
1054
                    break;
 
1055
                }
 
1056
                case CoordinateTypes.POLARSTEREO:
 
1057
                {
 
1058
                    PolarStereographic polarstCoords = jniEngine.JNIGetPolarStereographicCoordinates(state, direction);
 
1059
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(polarstCoords.getEasting()));
 
1060
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(polarstCoords.getNorthing()));
 
1061
                    break;
 
1062
                }
 
1063
                case CoordinateTypes.POLYCONIC:
 
1064
                {
 
1065
                    Polyconic polyconCoords = jniEngine.JNIGetPolyconicCoordinates(state, direction);
 
1066
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(polyconCoords.getEasting()));
 
1067
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(polyconCoords.getNorthing()));
 
1068
                    break;
 
1069
                }
 
1070
                case CoordinateTypes.SINUSOIDAL:
 
1071
                {
 
1072
                    Sinusoidal sinusoidCoords = jniEngine.JNIGetSinusoidalCoordinates(state, direction);
 
1073
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(sinusoidCoords.getEasting()));
 
1074
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(sinusoidCoords.getNorthing()));
 
1075
                    break;
 
1076
                }
 
1077
                case CoordinateTypes.STEREOGRAPHIC:
 
1078
                {
 
1079
                    Stereographic stereogrCoords = jniEngine.JNIGetStereographicCoordinates(state, direction);
 
1080
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(stereogrCoords.getEasting()));
 
1081
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(stereogrCoords.getNorthing()));
 
1082
                    break;
 
1083
                }
 
1084
                case CoordinateTypes.TRCYLEQA:
 
1085
                {
 
1086
                    TransverseCylindricalEqualArea trcyleqaCoords = jniEngine.JNIGetTransverseCylindricalEqualAreaCoordinates(state, direction);
 
1087
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(trcyleqaCoords.getEasting()));
 
1088
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(trcyleqaCoords.getNorthing()));
 
1089
                    break;
 
1090
                }
 
1091
                case CoordinateTypes.TRANMERC:
 
1092
                {
 
1093
                    TransverseMercator tranmercCoords = jniEngine.JNIGetTransverseMercatorCoordinates(state, direction);
 
1094
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(tranmercCoords.getEasting()));
 
1095
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(tranmercCoords.getNorthing()));
 
1096
                    break;
 
1097
                }
 
1098
                case CoordinateTypes.GRINTEN:
 
1099
                {
 
1100
                    VanDerGrinten grintenCoords = jniEngine.JNIGetVanDerGrintenCoordinates(state, direction);
 
1101
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(grintenCoords.getEasting()));
 
1102
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(grintenCoords.getNorthing()));
 
1103
                    break;
 
1104
                }
 
1105
                case CoordinateTypes.UPS:
 
1106
                {
 
1107
                    // set hemisphere
 
1108
                    UPS UPSCoords = jniEngine.JNIGetUPSCoordinates(state, direction);
 
1109
                    hemisphere = UPSCoords.getHemisphere();
 
1110
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(UPSCoords.getEasting()));
 
1111
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(UPSCoords.getNorthing()));
 
1112
                    break;
 
1113
                }
 
1114
                case CoordinateTypes.USNG:
 
1115
                {
 
1116
                    USNG USNGCoords = jniEngine.JNIGetUSNGCoordinates(state, direction);
 
1117
                    _3CoordFieldsTextFieldB.setText(USNGCoords.getCoordinateString());
 
1118
                    break;
 
1119
                }
 
1120
                case CoordinateTypes.UTM:
 
1121
                {
 
1122
                    // set zone, hemisphere
 
1123
                    UTM UTMCoords = jniEngine.JNIGetUTMCoordinates(state, direction);
 
1124
                    hemisphere = UTMCoords.getHemisphere();
 
1125
                    zone = UTMCoords.getZoneCoord();
 
1126
                    _2CoordFieldsTextFieldA.setText(jniStrtoval.JNIMeterToString(UTMCoords.getEasting()));
 
1127
                    _2CoordFieldsTextFieldB.setText(jniStrtoval.JNIMeterToString(UTMCoords.getNorthing()));
 
1128
                    break;
 
1129
                }
 
1130
                default:
 
1131
                    break;
 
1132
            }
 
1133
        }
 
1134
        catch(GeotransError e)
 
1135
        {
 
1136
            jniStrtoval.setEngineError(true, e.getMessage());
 
1137
            noErrors = false;
 
1138
        }
 
1139
        catch(JNIException e)
 
1140
        {
 
1141
            jniStrtoval.setJNIError(true, e.getMessage());
 
1142
            noErrors = false;
 
1143
        }
 
1144
        return noErrors;
 
1145
    }
 
1146
 
 
1147
    public void createCoordPanel(int projType)
 
1148
    {
 
1149
        setFormat();
 
1150
 
 
1151
        switch (projType)
 
1152
        {
 
1153
            case CoordinateTypes.GEOCENTRIC:
 
1154
            {
 
1155
                setThreeCoords();
 
1156
                break;
 
1157
            }
 
1158
            case CoordinateTypes.GEODETIC:
 
1159
            { // height type
 
1160
                _2CoordFieldsPanel.setVisible(false);
 
1161
                _3CoordFieldsPanel.setVisible(true);
 
1162
                coordLayeredPane.moveToFront(_3CoordFieldsPanel);
 
1163
                // Show optional fields.
 
1164
                _3CoordFieldsLabelA.setVisible(true);
 
1165
                _3CoordFieldsLabelC.setVisible(true);
 
1166
                _3CoordFieldsTextFieldA.setVisible(true);
 
1167
                _3CoordFieldsTextFieldC.setVisible(true);
 
1168
                /* may be turned off by height type buttons. */
 
1169
                setHeightFieldEditable();
 
1170
 
 
1171
                _3CoordFieldsLabelA.setText("Longitude:");
 
1172
                _3CoordFieldsLabelB.setText("Latitude:");
 
1173
                _3CoordFieldsLabelC.setText("Height (m):");
 
1174
                try
 
1175
                {
 
1176
                    _3CoordFieldsTextFieldA.setText(jniStrtoval.JNILongitudeToString(0, useNSEW, useMinutes, useSeconds));
 
1177
                    _3CoordFieldsTextFieldB.setText(jniStrtoval.JNILatitudeToString(0, useNSEW, useMinutes, useSeconds));
 
1178
                }
 
1179
                catch(GeotransError e)
 
1180
                {
 
1181
                    jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1182
                }
 
1183
                catch(JNIException e)
 
1184
                {
 
1185
                    jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1186
                }
 
1187
 
 
1188
                _3CoordFieldsTextFieldC.setText( "0" );
 
1189
                break;
 
1190
            }
 
1191
            case CoordinateTypes.GEOREF:
 
1192
            {
 
1193
                setOneCoord();
 
1194
                _3CoordFieldsTextFieldB.setText( "NGAA0000000000" );
 
1195
                break;
 
1196
            }
 
1197
            case CoordinateTypes.GARS:
 
1198
            {
 
1199
                setOneCoord();
 
1200
                _3CoordFieldsTextFieldB.setText( "361HN37" );
 
1201
                break;
 
1202
            }
 
1203
            case CoordinateTypes.F16GRS:
 
1204
            {
 
1205
                setOneCoord();
 
1206
                _3CoordFieldsTextFieldB.setText( "31NEA00" );
 
1207
                break;
 
1208
            }
 
1209
            case CoordinateTypes.MGRS:
 
1210
            {
 
1211
                setOneCoord();
 
1212
                _3CoordFieldsTextFieldB.setText( "31NEA0000000000" );
 
1213
                break;
 
1214
            }
 
1215
            case CoordinateTypes.BNG:
 
1216
            {
 
1217
                setOneCoord();
 
1218
                _3CoordFieldsTextFieldB.setText( "SV 0000000000" );
 
1219
                break;
 
1220
            }
 
1221
            case CoordinateTypes.NZMG:
 
1222
            {
 
1223
                setTwoCoords();
 
1224
                _2CoordFieldsTextFieldA.setText("2510000");
 
1225
                _2CoordFieldsTextFieldB.setText("6023150");
 
1226
                break;
 
1227
            }
 
1228
            case CoordinateTypes.UPS:
 
1229
            { // Hemisphere
 
1230
                setTwoCoords();
 
1231
                _2CoordFieldsTextFieldA.setText("2000000");
 
1232
                _2CoordFieldsTextFieldB.setText("2000000");
 
1233
                break;
 
1234
            }
 
1235
            case CoordinateTypes.USNG:
 
1236
            {
 
1237
                setOneCoord();
 
1238
                _3CoordFieldsTextFieldB.setText( "31NEA0000000000" );
 
1239
                break;
 
1240
            }
 
1241
            case CoordinateTypes.UTM:
 
1242
            {
 
1243
                // Hemisphere  // Zone
 
1244
                setTwoCoords();
 
1245
                _2CoordFieldsTextFieldA.setText("500000");
 
1246
                break;
 
1247
            }
 
1248
            case CoordinateTypes.LOCCART:
 
1249
            {
 
1250
                setThreeCoords();
 
1251
                break;
 
1252
            }
 
1253
            case CoordinateTypes.ALBERS:
 
1254
            case CoordinateTypes.AZIMUTHAL:
 
1255
            case CoordinateTypes.BONNE:
 
1256
            case CoordinateTypes.CASSINI:
 
1257
            case CoordinateTypes.CYLEQA:
 
1258
            case CoordinateTypes.ECKERT4:
 
1259
            case CoordinateTypes.ECKERT6:
 
1260
            case CoordinateTypes.EQDCYL:
 
1261
            case CoordinateTypes.GNOMONIC:
 
1262
            case CoordinateTypes.LAMBERT_1:
 
1263
            case CoordinateTypes.LAMBERT_2:
 
1264
            case CoordinateTypes.MERCATOR:
 
1265
            case CoordinateTypes.MILLER:
 
1266
            case CoordinateTypes.MOLLWEIDE:
 
1267
            case CoordinateTypes.NEYS:
 
1268
            case CoordinateTypes.OMERC:
 
1269
            case CoordinateTypes.ORTHOGRAPHIC:
 
1270
            case CoordinateTypes.POLARSTEREO:
 
1271
            case CoordinateTypes.POLYCONIC:
 
1272
            case CoordinateTypes.SINUSOIDAL:
 
1273
            case CoordinateTypes.STEREOGRAPHIC:
 
1274
            case CoordinateTypes.TRCYLEQA:
 
1275
            case CoordinateTypes.TRANMERC:
 
1276
            case CoordinateTypes.GRINTEN:
 
1277
            {
 
1278
                setTwoCoords();
 
1279
                break;
 
1280
            }
 
1281
            default:
 
1282
            {
 
1283
                break;
 
1284
            }
 
1285
        } /*    end of switch(projType)  */
 
1286
    } /*   end of createCoordPanel()     */
 
1287
 
 
1288
    public void resetOutputErrors()
 
1289
    {
 
1290
        ce90TextField.setText("N/A");
 
1291
        le90TextField.setText("N/A");
 
1292
        se90TextField.setText("N/A");
 
1293
    }
 
1294
 
 
1295
 
 
1296
    public void reportOutputErrors(int state)
 
1297
    {
 
1298
        Accuracy outputErrors = jniEngine.JNIGetConversionErrors(state);
 
1299
        double ce90 = outputErrors.getCE90();
 
1300
        double le90 = outputErrors.getLE90();
 
1301
        double se90 = outputErrors.getSE90();
 
1302
 
 
1303
        usePrevAccuracies = true;
 
1304
 
 
1305
        if (ce90 == -1.0)
 
1306
            ce90TextField.setText("Unk");
 
1307
        else
 
1308
            jniStrtoval.setNumberFormat(ce90TextField, ce90, 0);
 
1309
 
 
1310
        if (!_3dConversion)
 
1311
        {
 
1312
            le90TextField.setText("N/A");
 
1313
            se90TextField.setText("N/A");
 
1314
        }
 
1315
        else
 
1316
        {
 
1317
            if (le90 == -1.0)
 
1318
                le90TextField.setText("Unk");
 
1319
            else
 
1320
                jniStrtoval.setNumberFormat(le90TextField, le90, 0);
 
1321
 
 
1322
            if (se90 == -1.0)
 
1323
                se90TextField.setText("Unk");
 
1324
            else
 
1325
                jniStrtoval.setNumberFormat(se90TextField, se90, 0);
 
1326
        }
 
1327
    }
 
1328
 
 
1329
    // Set the engine with the input accuracy values
 
1330
    public void setAccuracy()
 
1331
    {
 
1332
        if (!usePrevAccuracies)
 
1333
        {
 
1334
            try
 
1335
            {
 
1336
                java.lang.String ce90String = ce90TextField.getText().trim();
 
1337
                java.lang.String le90String = le90TextField.getText().trim();
 
1338
                java.lang.String se90String = se90TextField.getText().trim();
 
1339
 
 
1340
                double ce90, le90, se90;
 
1341
                if ((ce90String.equals("Unk")) || (ce90String.equals("N/A")))
 
1342
                    ce90 = -1.0;
 
1343
                else
 
1344
                    ce90 = jniStrtoval.stringToDouble(ce90String,  "Invalid CE 90");
 
1345
                if ((le90String.equals("Unk")) || (le90String.equals("N/A")))
 
1346
                    le90 = -1.0;
 
1347
                else
 
1348
                    le90 = jniStrtoval.stringToDouble(le90String,  "Invalid LE 90");
 
1349
                if ((se90String.equals("Unk")) || (se90String.equals("N/A")))
 
1350
                    se90 = -1.0;
 
1351
                else
 
1352
                    se90 = jniStrtoval.stringToDouble(se90String,  "Invalid SE 90");
 
1353
 
 
1354
                jniEngine.JNISetConversionErrors(ConversionState.INTERACTIVE, ce90, le90, se90);
 
1355
 
 
1356
            }
 
1357
            catch(GeotransError e)
 
1358
            {
 
1359
                jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1360
            }
 
1361
        }
 
1362
    }
 
1363
 
 
1364
    // Set the source text fields editable/uneditable if it's a 3D/2D conversion
 
1365
    public void updateSrcErrors(boolean _3dConv)
 
1366
    {
 
1367
        le90TextField.setEditable(_3dConv);
 
1368
        se90TextField.setEditable(_3dConv);
 
1369
        _3dConversion = _3dConv;
 
1370
        updateAccuracy();
 
1371
    }
 
1372
 
 
1373
    // Set the source text fields with the values corresponding
 
1374
    // to the current combo box selection
 
1375
    public void updateAccuracy()
 
1376
    {
 
1377
        try
 
1378
        {
 
1379
            long index = sourcesComboBox.getSelectedIndex() + 1;
 
1380
            Accuracy accuracy = new JNISource().JNISourceAccuracy(index);
 
1381
 
 
1382
            usePrevAccuracies = false;
 
1383
 
 
1384
            double ce90 = accuracy.getCE90();
 
1385
            double le90 = accuracy.getLE90();
 
1386
            double se90 = accuracy.getSE90();
 
1387
 
 
1388
            if (ce90 == -1.0)
 
1389
                ce90TextField.setText("Unk");
 
1390
            else
 
1391
                jniStrtoval.setNumberFormat(ce90TextField, accuracy.getCE90(), 0);
 
1392
            if (!_3dConversion)
 
1393
            {
 
1394
                le90TextField.setText("N/A");
 
1395
                se90TextField.setText("N/A");
 
1396
            }
 
1397
            else
 
1398
            {
 
1399
                if (le90 == -1.0)
 
1400
                    le90TextField.setText("Unk");
 
1401
                else
 
1402
                    jniStrtoval.setNumberFormat(le90TextField, accuracy.getLE90(), 0);
 
1403
                if (se90 == -1.0)
 
1404
                    se90TextField.setText("Unk");
 
1405
                else
 
1406
                    jniStrtoval.setNumberFormat(se90TextField, accuracy.getSE90(), 0);
 
1407
            }
 
1408
        }
 
1409
        catch(GeotransError e)
 
1410
        {
 
1411
            jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1412
        }
 
1413
        catch(JNIException e)
 
1414
        {
 
1415
            jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1416
        }
 
1417
    }
 
1418
 
 
1419
    public void setHeightText(String height)
 
1420
    {
 
1421
        _3CoordFieldsTextFieldC.setText(height);
 
1422
    }
 
1423
 
 
1424
 
 
1425
    public void setHeightFieldUneditable()
 
1426
    {
 
1427
        _3CoordFieldsTextFieldC.setEditable(false);
 
1428
    }
 
1429
 
 
1430
    public void setHeightFieldEditable()
 
1431
    {
 
1432
        _3CoordFieldsTextFieldC.setEditable(true);
 
1433
    }
 
1434
 
 
1435
    public void setHeightFieldEditable(boolean editable)
 
1436
    {
 
1437
        _3CoordFieldsTextFieldC.setEditable(editable);
 
1438
    }
 
1439
 
 
1440
    public void setHemisphere(char hemi)
 
1441
    {
 
1442
        hemisphere = hemi;
 
1443
    }
 
1444
 
 
1445
    public void setZone(int z)
 
1446
    {
 
1447
        zone = z;
 
1448
    }
 
1449
 
 
1450
    public char getHemisphere()
 
1451
    {
 
1452
        return hemisphere;
 
1453
    }
 
1454
 
 
1455
    public long getZone()
 
1456
    {
 
1457
        return zone;
 
1458
    }
 
1459
 
 
1460
    // Variables declaration - do not modify//GEN-BEGIN:variables
 
1461
    private javax.swing.JLabel _2CoordFieldsLabelA;
 
1462
    private javax.swing.JLabel _2CoordFieldsLabelB;
 
1463
    private javax.swing.JPanel _2CoordFieldsPanel;
 
1464
    private javax.swing.JTextField _2CoordFieldsTextFieldA;
 
1465
    private javax.swing.JTextField _2CoordFieldsTextFieldB;
 
1466
    private javax.swing.JLabel _3CoordFieldsLabelA;
 
1467
    private javax.swing.JLabel _3CoordFieldsLabelB;
 
1468
    private javax.swing.JLabel _3CoordFieldsLabelC;
 
1469
    private javax.swing.JPanel _3CoordFieldsPanel;
 
1470
    private javax.swing.JTextField _3CoordFieldsTextFieldA;
 
1471
    private javax.swing.JTextField _3CoordFieldsTextFieldB;
 
1472
    private javax.swing.JTextField _3CoordFieldsTextFieldC;
 
1473
    private javax.swing.JLabel ce90Label;
 
1474
    private javax.swing.JTextField ce90TextField;
 
1475
    private javax.swing.JLayeredPane coordLayeredPane;
 
1476
    private javax.swing.JPanel errorsPanel;
 
1477
    private javax.swing.JPanel inputErrorPanel;
 
1478
    private javax.swing.JLabel le90Label;
 
1479
    private javax.swing.JTextField le90TextField;
 
1480
    private javax.swing.JPanel outputErrorPanel;
 
1481
    private javax.swing.JLabel se90Label;
 
1482
    private javax.swing.JTextField se90TextField;
 
1483
    private javax.swing.JComboBox sourcesComboBox;
 
1484
    private javax.swing.JLabel sourcesLabel;
 
1485
    private javax.swing.JLabel tempLabel1;
 
1486
    private javax.swing.JLabel tempLabel2;
 
1487
    private javax.swing.JTextField tempTextField1;
 
1488
    private javax.swing.JTextField tempTextField2;
 
1489
    // End of variables declaration//GEN-END:variables
 
1490
 
 
1491
}
 
 
b'\\ No newline at end of file'