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

« back to all changes in this revision

Viewing changes to geotrans2/java_gui/geotrans/gui/Geotrans.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
 * Geotrans.java
 
3
 * Created on 22 juin 2000, 16:56
 
4
 *
 
5
 * @author  finnc
 
6
 * @version
 
7
 */
 
8
package geotrans.gui;
 
9
 
 
10
 
 
11
import geotrans.enumerations.ConversionState;
 
12
import geotrans.enumerations.CoordinateTypes;
 
13
import geotrans.enumerations.ListType;
 
14
import geotrans.enumerations.SourceOrTarget;
 
15
import geotrans.gui.*;
 
16
import geotrans.jni.*;
 
17
import geotrans.utility.Center;
 
18
import geotrans.utility.DATFileFilter;
 
19
import geotrans.utility.Directory;
 
20
import geotrans.utility.Platform;
 
21
import geotrans.utility.ReadEnv;
 
22
import geotrans.utility.StartBrowser;
 
23
import geotrans.utility.color.*;
 
24
 
 
25
 
 
26
public class Geotrans extends javax.swing.JFrame 
 
27
{
 
28
  private Directory currentDir = new Directory(".");
 
29
  private JNIEngine jniEngine = new JNIEngine();
 
30
  private JNIStrtoval jniStrtoval = new JNIStrtoval();
 
31
  private java.awt.Color defaultSelectedColor = new java.awt.Color(0, 0, 0);
 
32
  private java.awt.Color currentColor = Green.VALUE;
 
33
  private java.awt.Component prevFocus;
 
34
  private MasterPanel upperMasterPanel;
 
35
  private MasterPanel lowerMasterPanel;
 
36
  private jOptions options;
 
37
  private java.lang.String currLookAndFeel = "Java";
 
38
  private String dataDirPathName = "";
 
39
  private java.io.File defaultFile;
 
40
 
 
41
  
 
42
 /** Creates new form Geotrans */
 
43
  public Geotrans() 
 
44
  {
 
45
    defaultSelectedColor = (java.awt.Color)javax.swing.UIManager.get("Button.select");
 
46
 
 
47
    initComponents ();
 
48
    initialize();
 
49
 
 
50
    javax.swing.ButtonGroup lookAndFeelGroup = new javax.swing.ButtonGroup();
 
51
    lookAndFeelGroup.add(metalRadioButtonMenuItem);
 
52
    lookAndFeelGroup.add(unixRadioButtonMenuItem);
 
53
    lookAndFeelGroup.add(windowsRadioButtonMenuItem);
 
54
 
 
55
    // Change title bar icon
 
56
    java.net.URL url = getClass().getResource("/geotrans/gui/icons/Icon.gif");
 
57
    try
 
58
    {
 
59
        java.awt.Image img = createImage((java.awt.image.ImageProducer)url.getContent());
 
60
        setIconImage(img);
 
61
    }
 
62
    catch (Exception e)
 
63
    {
 
64
        e.printStackTrace();
 
65
    }
 
66
    pack();
 
67
    if (Platform.isUnix)
 
68
        setSize(new java.awt.Dimension(484, 679));
 
69
    new Center(null, this);
 
70
    
 
71
    try 
 
72
    {
 
73
      java.util.Properties p = ReadEnv.getEnvVars();
 
74
      dataDirPathName = p.getProperty("GEOTRANS_DATA");
 
75
    }
 
76
    catch (Throwable e) 
 
77
    {
 
78
      e.printStackTrace();
 
79
    }
 
80
    
 
81
    if (dataDirPathName != null && dataDirPathName.length() > 0)
 
82
      dataDirPathName += "/";
 
83
    else
 
84
      dataDirPathName = "../data/";
 
85
    dataDirPathName += "default.xml";
 
86
    
 
87
    defaultFile = new java.io.File(dataDirPathName);
 
88
    
 
89
    if(defaultFile.exists())
 
90
      new RestoreDefault(this, defaultFile, upperMasterPanel, lowerMasterPanel, options);   
 
91
  }
 
92
 
 
93
  static {
 
94
    System.loadLibrary("jnigeotrans");
 
95
    // Load JNI Native library.  .dll or .so
 
96
  }
 
97
 
 
98
  /** This method is called from within the constructor to
 
99
   * initialize the form.
 
100
   * WARNING: Do NOT modify this code. The content of this method is
 
101
   * always regenerated by the FormEditor.
 
102
   */
 
103
  // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
 
104
  private void initComponents() {
 
105
    java.awt.GridBagConstraints gridBagConstraints;
 
106
 
 
107
    geotransToolBar = new javax.swing.JToolBar();
 
108
    cutButton = new javax.swing.JButton();
 
109
    copyButton = new javax.swing.JButton();
 
110
    pasteButton = new javax.swing.JButton();
 
111
    formatButton = new javax.swing.JButton();
 
112
    geotransToolBarSeparator = new javax.swing.JSeparator();
 
113
    upperPanel = new javax.swing.JPanel();
 
114
    convertPanel = new javax.swing.JPanel();
 
115
    convertDownButton = new javax.swing.JButton();
 
116
    convertUpButton = new javax.swing.JButton();
 
117
    lowerPanel = new javax.swing.JPanel();
 
118
    geotransMenuBar = new javax.swing.JMenuBar();
 
119
    fileMenu = new javax.swing.JMenu();
 
120
    openMenuItem = new javax.swing.JMenuItem();
 
121
    createFileHeaderMenuItem = new javax.swing.JMenuItem();
 
122
    restoreDefaultMenuItem = new javax.swing.JMenuItem();
 
123
    saveAsDefaultMenuItem = new javax.swing.JMenuItem();
 
124
    fileMenuSeparator = new javax.swing.JSeparator();
 
125
    exitMenuItem = new javax.swing.JMenuItem();
 
126
    editMenu = new javax.swing.JMenu();
 
127
    cutMenuItem = new javax.swing.JMenuItem();
 
128
    copyMenuItem = new javax.swing.JMenuItem();
 
129
    pasteMenuItem = new javax.swing.JMenuItem();
 
130
    optionsMenu = new javax.swing.JMenu();
 
131
    formatMenuItem = new javax.swing.JMenuItem();
 
132
    lookAndFeelMenu = new javax.swing.JMenu();
 
133
    metalRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem();
 
134
    unixRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem();
 
135
    windowsRadioButtonMenuItem = new javax.swing.JRadioButtonMenuItem();
 
136
    datumMenu = new javax.swing.JMenu();
 
137
    createDatumMenuItem = new javax.swing.JMenuItem();
 
138
    deleteDatumMenuItem = new javax.swing.JMenuItem();
 
139
    ellipsoidMenu = new javax.swing.JMenu();
 
140
    createEllipsoidMenuItem = new javax.swing.JMenuItem();
 
141
    deleteEllipsoidMenuItem = new javax.swing.JMenuItem();
 
142
    convertMenu = new javax.swing.JMenu();
 
143
    convertDownMenuItem = new javax.swing.JMenuItem();
 
144
    convertMenuSeparator = new javax.swing.JSeparator();
 
145
    convertUpMenuItem = new javax.swing.JMenuItem();
 
146
    helpMenu = new javax.swing.JMenu();
 
147
    contentsMenuItem = new javax.swing.JMenuItem();
 
148
    helpMenuSeparator = new javax.swing.JSeparator();
 
149
    aboutMenuItem = new javax.swing.JMenuItem();
 
150
 
 
151
    getContentPane().setLayout(new java.awt.GridBagLayout());
 
152
 
 
153
    setTitle("GEOTRANS V2.4.2 - Geographic Translator V2.4.2");
 
154
    setResizable(false);
 
155
    addWindowListener(new java.awt.event.WindowAdapter() {
 
156
      public void windowClosing(java.awt.event.WindowEvent evt) {
 
157
        exitForm(evt);
 
158
      }
 
159
    });
 
160
 
 
161
    geotransToolBar.setFloatable(false);
 
162
    geotransToolBar.setAlignmentX(0.0F);
 
163
    geotransToolBar.setMinimumSize(new java.awt.Dimension(25, 25));
 
164
    geotransToolBar.setPreferredSize(new java.awt.Dimension(25, 25));
 
165
    cutButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Cut16.gif")));
 
166
    cutButton.setToolTipText("Cut");
 
167
    cutButton.setMaximumSize(new java.awt.Dimension(25, 30));
 
168
    cutButton.setMinimumSize(new java.awt.Dimension(17, 21));
 
169
    cutButton.setPreferredSize(new java.awt.Dimension(27, 27));
 
170
    cutButton.addActionListener(new java.awt.event.ActionListener() {
 
171
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
172
        cutActionPerformed(evt);
 
173
      }
 
174
    });
 
175
    cutButton.addMouseListener(new java.awt.event.MouseAdapter() {
 
176
      public void mouseEntered(java.awt.event.MouseEvent evt) {
 
177
        editButtonMouseEntered(evt);
 
178
      }
 
179
    });
 
180
 
 
181
    geotransToolBar.add(cutButton);
 
182
 
 
183
    copyButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Copy16.gif")));
 
184
    copyButton.setToolTipText("Copy");
 
185
    copyButton.setMaximumSize(new java.awt.Dimension(25, 30));
 
186
    copyButton.setMinimumSize(new java.awt.Dimension(17, 21));
 
187
    copyButton.setPreferredSize(new java.awt.Dimension(27, 27));
 
188
    copyButton.addActionListener(new java.awt.event.ActionListener() {
 
189
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
190
        copyActionPerformed(evt);
 
191
      }
 
192
    });
 
193
    copyButton.addMouseListener(new java.awt.event.MouseAdapter() {
 
194
      public void mouseEntered(java.awt.event.MouseEvent evt) {
 
195
        editButtonMouseEntered(evt);
 
196
      }
 
197
    });
 
198
 
 
199
    geotransToolBar.add(copyButton);
 
200
 
 
201
    pasteButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Paste16.gif")));
 
202
    pasteButton.setToolTipText("Paste");
 
203
    pasteButton.setMaximumSize(new java.awt.Dimension(25, 30));
 
204
    pasteButton.setMinimumSize(new java.awt.Dimension(17, 21));
 
205
    pasteButton.setPreferredSize(new java.awt.Dimension(27, 27));
 
206
    pasteButton.addActionListener(new java.awt.event.ActionListener() {
 
207
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
208
        pasteActionPerformed(evt);
 
209
      }
 
210
    });
 
211
    pasteButton.addMouseListener(new java.awt.event.MouseAdapter() {
 
212
      public void mouseEntered(java.awt.event.MouseEvent evt) {
 
213
        editButtonMouseEntered(evt);
 
214
      }
 
215
    });
 
216
 
 
217
    geotransToolBar.add(pasteButton);
 
218
 
 
219
    formatButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Preferences16.gif")));
 
220
    formatButton.setToolTipText("Format Options");
 
221
    formatButton.setMaximumSize(new java.awt.Dimension(25, 30));
 
222
    formatButton.setMinimumSize(new java.awt.Dimension(17, 21));
 
223
    formatButton.setPreferredSize(new java.awt.Dimension(27, 27));
 
224
    formatButton.addActionListener(new java.awt.event.ActionListener() {
 
225
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
226
        formatActionPerformed(evt);
 
227
      }
 
228
    });
 
229
 
 
230
    geotransToolBar.add(formatButton);
 
231
 
 
232
    geotransToolBarSeparator.setOrientation(javax.swing.SwingConstants.VERTICAL);
 
233
    geotransToolBar.add(geotransToolBarSeparator);
 
234
 
 
235
    gridBagConstraints = new java.awt.GridBagConstraints();
 
236
    gridBagConstraints.gridx = 0;
 
237
    gridBagConstraints.gridy = 0;
 
238
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
239
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
 
240
    getContentPane().add(geotransToolBar, gridBagConstraints);
 
241
 
 
242
    upperPanel.setLayout(new java.awt.GridBagLayout());
 
243
 
 
244
    upperPanel.setBackground(java.awt.Color.lightGray);
 
245
    upperPanel.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))));
 
246
    upperPanel.setMinimumSize(new java.awt.Dimension(469, 284));
 
247
    upperPanel.setPreferredSize(new java.awt.Dimension(469, 284));
 
248
    upperPanel.setOpaque(false);
 
249
    gridBagConstraints = new java.awt.GridBagConstraints();
 
250
    gridBagConstraints.gridx = 0;
 
251
    gridBagConstraints.gridy = 1;
 
252
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
253
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
 
254
    gridBagConstraints.weightx = 0.5;
 
255
    gridBagConstraints.weighty = 0.5;
 
256
    gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 
257
    getContentPane().add(upperPanel, gridBagConstraints);
 
258
 
 
259
    convertPanel.setLayout(new java.awt.GridBagLayout());
 
260
 
 
261
    convertPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
262
    convertDownButton.setFont(new java.awt.Font("Dialog", 0, 11));
 
263
    convertDownButton.setText("Convert Upper -> Lower");
 
264
    convertDownButton.setToolTipText("Convert Upper to Lower");
 
265
    convertDownButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
 
266
    convertDownButton.setMaximumSize(new java.awt.Dimension(197, 24));
 
267
    convertDownButton.setMinimumSize(new java.awt.Dimension(197, 24));
 
268
    convertDownButton.setPreferredSize(new java.awt.Dimension(197, 24));
 
269
    convertDownButton.addActionListener(new java.awt.event.ActionListener() {
 
270
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
271
        convertDownActionPerformed(evt);
 
272
      }
 
273
    });
 
274
    convertDownButton.addMouseListener(new java.awt.event.MouseAdapter() {
 
275
      public void mousePressed(java.awt.event.MouseEvent evt) {
 
276
        convertButtonMousePressed(evt);
 
277
        convertDownButtonMousePressed(evt);
 
278
      }
 
279
      public void mouseReleased(java.awt.event.MouseEvent evt) {
 
280
        convertButtonMouseReleased(evt);
 
281
        convertDownButtonMouseReleased(evt);
 
282
      }
 
283
    });
 
284
 
 
285
    gridBagConstraints = new java.awt.GridBagConstraints();
 
286
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
287
    gridBagConstraints.insets = new java.awt.Insets(3, 0, 3, 12);
 
288
    convertPanel.add(convertDownButton, gridBagConstraints);
 
289
 
 
290
    convertUpButton.setFont(new java.awt.Font("Dialog", 0, 11));
 
291
    convertUpButton.setText("Convert Lower -> Upper");
 
292
    convertUpButton.setToolTipText("Convert Lower to Upper");
 
293
    convertUpButton.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
 
294
    convertUpButton.setMaximumSize(new java.awt.Dimension(197, 24));
 
295
    convertUpButton.setMinimumSize(new java.awt.Dimension(197, 24));
 
296
    convertUpButton.setPreferredSize(new java.awt.Dimension(197, 24));
 
297
    convertUpButton.addActionListener(new java.awt.event.ActionListener() {
 
298
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
299
        convertUpActionPerformed(evt);
 
300
      }
 
301
    });
 
302
    convertUpButton.addMouseListener(new java.awt.event.MouseAdapter() {
 
303
      public void mousePressed(java.awt.event.MouseEvent evt) {
 
304
        convertButtonMousePressed(evt);
 
305
        convertUpButtonMousePressed(evt);
 
306
      }
 
307
      public void mouseReleased(java.awt.event.MouseEvent evt) {
 
308
        convertButtonMouseReleased(evt);
 
309
        convertUpButtonMouseReleased(evt);
 
310
      }
 
311
    });
 
312
 
 
313
    gridBagConstraints = new java.awt.GridBagConstraints();
 
314
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
315
    gridBagConstraints.insets = new java.awt.Insets(3, 12, 3, 0);
 
316
    convertPanel.add(convertUpButton, gridBagConstraints);
 
317
 
 
318
    gridBagConstraints = new java.awt.GridBagConstraints();
 
319
    gridBagConstraints.gridx = 0;
 
320
    gridBagConstraints.gridy = 2;
 
321
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
322
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
 
323
    getContentPane().add(convertPanel, gridBagConstraints);
 
324
 
 
325
    lowerPanel.setLayout(new java.awt.GridBagLayout());
 
326
 
 
327
    lowerPanel.setBackground(java.awt.Color.lightGray);
 
328
    lowerPanel.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED), javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))));
 
329
    lowerPanel.setMinimumSize(new java.awt.Dimension(469, 284));
 
330
    lowerPanel.setPreferredSize(new java.awt.Dimension(469, 284));
 
331
    lowerPanel.setOpaque(false);
 
332
    gridBagConstraints = new java.awt.GridBagConstraints();
 
333
    gridBagConstraints.gridx = 0;
 
334
    gridBagConstraints.gridy = 3;
 
335
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
336
    gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
 
337
    gridBagConstraints.weightx = 0.5;
 
338
    gridBagConstraints.weighty = 0.5;
 
339
    gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 
340
    getContentPane().add(lowerPanel, gridBagConstraints);
 
341
 
 
342
    geotransMenuBar.setMinimumSize(new java.awt.Dimension(285, 23));
 
343
    fileMenu.setMnemonic(java.awt.event.KeyEvent.VK_F);
 
344
    fileMenu.setText("File");
 
345
    openMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
 
346
    openMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Open16.gif")));
 
347
    openMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_O);
 
348
    openMenuItem.setText("Open");
 
349
    openMenuItem.setToolTipText("Open");
 
350
    openMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
351
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
352
        openActionPerformed(evt);
 
353
      }
 
354
    });
 
355
 
 
356
    fileMenu.add(openMenuItem);
 
357
 
 
358
    createFileHeaderMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
 
359
    createFileHeaderMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Create16.gif")));
 
360
    createFileHeaderMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
361
    createFileHeaderMenuItem.setText("Create File Header");
 
362
    createFileHeaderMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
363
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
364
        createFileHeaderActionPerformed(evt);
 
365
      }
 
366
    });
 
367
 
 
368
    fileMenu.add(createFileHeaderMenuItem);
 
369
 
 
370
    restoreDefaultMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
 
371
    restoreDefaultMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Open16.gif")));
 
372
    restoreDefaultMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_R);
 
373
    restoreDefaultMenuItem.setText("Restore Default");
 
374
    restoreDefaultMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
375
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
376
        restoreDefaultActionPerformed(evt);
 
377
      }
 
378
    });
 
379
 
 
380
    fileMenu.add(restoreDefaultMenuItem);
 
381
 
 
382
    saveAsDefaultMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
 
383
    saveAsDefaultMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Save16.gif")));
 
384
    saveAsDefaultMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_S);
 
385
    saveAsDefaultMenuItem.setText("Save As Default");
 
386
    saveAsDefaultMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
387
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
388
        saveAsDefaultActionPerformed(evt);
 
389
      }
 
390
    });
 
391
 
 
392
    fileMenu.add(saveAsDefaultMenuItem);
 
393
 
 
394
    fileMenu.add(fileMenuSeparator);
 
395
 
 
396
    exitMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Stop16.gif")));
 
397
    exitMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_X);
 
398
    exitMenuItem.setText("Exit");
 
399
    exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
400
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
401
        exitActionPerformed(evt);
 
402
      }
 
403
    });
 
404
 
 
405
    fileMenu.add(exitMenuItem);
 
406
 
 
407
    geotransMenuBar.add(fileMenu);
 
408
 
 
409
    editMenu.setMnemonic(java.awt.event.KeyEvent.VK_E);
 
410
    editMenu.setText("Edit");
 
411
    cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
 
412
    cutMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Cut16.gif")));
 
413
    cutMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_T);
 
414
    cutMenuItem.setText("Cut");
 
415
    cutMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
416
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
417
        cutActionPerformed(evt);
 
418
      }
 
419
    });
 
420
 
 
421
    editMenu.add(cutMenuItem);
 
422
 
 
423
    copyMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
 
424
    copyMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Copy16.gif")));
 
425
    copyMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
426
    copyMenuItem.setText("Copy");
 
427
    copyMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
428
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
429
        copyActionPerformed(evt);
 
430
      }
 
431
    });
 
432
 
 
433
    editMenu.add(copyMenuItem);
 
434
 
 
435
    pasteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
 
436
    pasteMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Paste16.gif")));
 
437
    pasteMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_P);
 
438
    pasteMenuItem.setText("Paste");
 
439
    pasteMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
440
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
441
        pasteActionPerformed(evt);
 
442
      }
 
443
    });
 
444
 
 
445
    editMenu.add(pasteMenuItem);
 
446
 
 
447
    geotransMenuBar.add(editMenu);
 
448
 
 
449
    optionsMenu.setMnemonic(java.awt.event.KeyEvent.VK_O);
 
450
    optionsMenu.setText("Options");
 
451
    formatMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
 
452
    formatMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Preferences16.gif")));
 
453
    formatMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_F);
 
454
    formatMenuItem.setText("Format . . .");
 
455
    formatMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
456
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
457
        formatActionPerformed(evt);
 
458
      }
 
459
    });
 
460
 
 
461
    optionsMenu.add(formatMenuItem);
 
462
 
 
463
    lookAndFeelMenu.setMnemonic(java.awt.event.KeyEvent.VK_L);
 
464
    lookAndFeelMenu.setText("Look and Feel");
 
465
    metalRadioButtonMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_J, java.awt.event.InputEvent.CTRL_MASK));
 
466
    metalRadioButtonMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_J);
 
467
    metalRadioButtonMenuItem.setSelected(true);
 
468
    metalRadioButtonMenuItem.setText("Java");
 
469
    metalRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
470
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
471
        lookAndFeelActionPerformed(evt);
 
472
      }
 
473
    });
 
474
 
 
475
    lookAndFeelMenu.add(metalRadioButtonMenuItem);
 
476
 
 
477
    unixRadioButtonMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.CTRL_MASK));
 
478
    unixRadioButtonMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_U);
 
479
    unixRadioButtonMenuItem.setText("Unix");
 
480
    unixRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
481
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
482
        lookAndFeelActionPerformed(evt);
 
483
      }
 
484
    });
 
485
 
 
486
    lookAndFeelMenu.add(unixRadioButtonMenuItem);
 
487
 
 
488
    windowsRadioButtonMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.CTRL_MASK));
 
489
    windowsRadioButtonMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_W);
 
490
    windowsRadioButtonMenuItem.setText("Windows");
 
491
    windowsRadioButtonMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
492
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
493
        lookAndFeelActionPerformed(evt);
 
494
      }
 
495
    });
 
496
 
 
497
    lookAndFeelMenu.add(windowsRadioButtonMenuItem);
 
498
 
 
499
    optionsMenu.add(lookAndFeelMenu);
 
500
 
 
501
    geotransMenuBar.add(optionsMenu);
 
502
 
 
503
    datumMenu.setMnemonic(java.awt.event.KeyEvent.VK_D);
 
504
    datumMenu.setText("Datum");
 
505
    createDatumMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F3, 0));
 
506
    createDatumMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/New16.gif")));
 
507
    createDatumMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
508
    createDatumMenuItem.setText("Create . . .");
 
509
    createDatumMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
510
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
511
        createDatumActionPerformed(evt);
 
512
      }
 
513
    });
 
514
 
 
515
    datumMenu.add(createDatumMenuItem);
 
516
 
 
517
    deleteDatumMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0));
 
518
    deleteDatumMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Delete16.gif")));
 
519
    deleteDatumMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_D);
 
520
    deleteDatumMenuItem.setText("Delete . . .");
 
521
    deleteDatumMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
522
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
523
        deleteDatumActionPerformed(evt);
 
524
      }
 
525
    });
 
526
 
 
527
    datumMenu.add(deleteDatumMenuItem);
 
528
 
 
529
    geotransMenuBar.add(datumMenu);
 
530
 
 
531
    ellipsoidMenu.setMnemonic(java.awt.event.KeyEvent.VK_L);
 
532
    ellipsoidMenu.setText("Ellipsoid");
 
533
    createEllipsoidMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
 
534
    createEllipsoidMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/New16.gif")));
 
535
    createEllipsoidMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
536
    createEllipsoidMenuItem.setText("Create . . .");
 
537
    createEllipsoidMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
538
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
539
        createEllipsoidActionPerformed(evt);
 
540
      }
 
541
    });
 
542
 
 
543
    ellipsoidMenu.add(createEllipsoidMenuItem);
 
544
 
 
545
    deleteEllipsoidMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F6, 0));
 
546
    deleteEllipsoidMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Delete16.gif")));
 
547
    deleteEllipsoidMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_D);
 
548
    deleteEllipsoidMenuItem.setText("Delete . . .");
 
549
    deleteEllipsoidMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
550
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
551
        deleteEllipsoidActionPerformed(evt);
 
552
      }
 
553
    });
 
554
 
 
555
    ellipsoidMenu.add(deleteEllipsoidMenuItem);
 
556
 
 
557
    geotransMenuBar.add(ellipsoidMenu);
 
558
 
 
559
    convertMenu.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
560
    convertMenu.setText("Convert");
 
561
    convertDownMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F7, 0));
 
562
    convertDownMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Down16.gif")));
 
563
    convertDownMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_U);
 
564
    convertDownMenuItem.setLabel(" Upper to Lower");
 
565
    convertDownMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
566
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
567
        convertDownActionPerformed(evt);
 
568
      }
 
569
    });
 
570
 
 
571
    convertMenu.add(convertDownMenuItem);
 
572
 
 
573
    convertMenu.add(convertMenuSeparator);
 
574
 
 
575
    convertUpMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F8, 0));
 
576
    convertUpMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/geotrans/gui/icons/Up16.gif")));
 
577
    convertUpMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_L);
 
578
    convertUpMenuItem.setLabel("Lower to Upper");
 
579
    convertUpMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
580
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
581
        convertUpActionPerformed(evt);
 
582
      }
 
583
    });
 
584
 
 
585
    convertMenu.add(convertUpMenuItem);
 
586
 
 
587
    geotransMenuBar.add(convertMenu);
 
588
 
 
589
    helpMenu.setMnemonic(java.awt.event.KeyEvent.VK_H);
 
590
    helpMenu.setText("Help");
 
591
    contentsMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
 
592
    contentsMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_C);
 
593
    contentsMenuItem.setText("Contents");
 
594
    contentsMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
595
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
596
        helpContentsActionPerformed(evt);
 
597
      }
 
598
    });
 
599
 
 
600
    helpMenu.add(contentsMenuItem);
 
601
 
 
602
    helpMenu.add(helpMenuSeparator);
 
603
 
 
604
    aboutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
 
605
    aboutMenuItem.setMnemonic(java.awt.event.KeyEvent.VK_A);
 
606
    aboutMenuItem.setText("About GEOTRANS...");
 
607
    aboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
 
608
      public void actionPerformed(java.awt.event.ActionEvent evt) {
 
609
        aboutMenuItemActionPerformed(evt);
 
610
      }
 
611
    });
 
612
 
 
613
    helpMenu.add(aboutMenuItem);
 
614
 
 
615
    geotransMenuBar.add(helpMenu);
 
616
 
 
617
    setJMenuBar(geotransMenuBar);
 
618
 
 
619
    pack();
 
620
  }// </editor-fold>//GEN-END:initComponents
 
621
 
 
622
  private void restoreDefaultActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restoreDefaultActionPerformed
 
623
    if(defaultFile.exists())
 
624
      new RestoreDefault(this, defaultFile, upperMasterPanel, lowerMasterPanel, options);
 
625
    else
 
626
      javax.swing.JOptionPane.showMessageDialog(this, "File does not exist: " + defaultFile, "Error", javax.swing.JOptionPane.ERROR_MESSAGE);
 
627
  }//GEN-LAST:event_restoreDefaultActionPerformed
 
628
 
 
629
  private void saveAsDefaultActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsDefaultActionPerformed
 
630
    new SaveAsDefault(this, defaultFile, upperMasterPanel, lowerMasterPanel, options);
 
631
  }//GEN-LAST:event_saveAsDefaultActionPerformed
 
632
 
 
633
    private void convertUpButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertUpButtonMouseReleased
 
634
    convertUpButton.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
 
635
    }//GEN-LAST:event_convertUpButtonMouseReleased
 
636
 
 
637
    private void convertUpButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertUpButtonMousePressed
 
638
    convertUpButton.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
639
    }//GEN-LAST:event_convertUpButtonMousePressed
 
640
 
 
641
    private void convertDownButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertDownButtonMouseReleased
 
642
    convertDownButton.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
 
643
    }//GEN-LAST:event_convertDownButtonMouseReleased
 
644
 
 
645
    private void convertDownButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertDownButtonMousePressed
 
646
    convertDownButton.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
 
647
    }//GEN-LAST:event_convertDownButtonMousePressed
 
648
 
 
649
    private void convertButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertButtonMouseReleased
 
650
    javax.swing.UIManager.put("Button.select", defaultSelectedColor);
 
651
    }//GEN-LAST:event_convertButtonMouseReleased
 
652
 
 
653
    private void convertButtonMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_convertButtonMousePressed
 
654
    javax.swing.UIManager.put("Button.select", currentColor);
 
655
    }//GEN-LAST:event_convertButtonMousePressed
 
656
 
 
657
  private void createFileHeaderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createFileHeaderActionPerformed
 
658
    new CreateFileHeaderDlg (this, true, currentDir, options).show ();
 
659
  }//GEN-LAST:event_createFileHeaderActionPerformed
 
660
 
 
661
  private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
 
662
    new AboutDlg(this, true).show();
 
663
  }//GEN-LAST:event_aboutMenuItemActionPerformed
 
664
 
 
665
  private void helpContentsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpContentsActionPerformed
 
666
   java.io.File helpFile = new java.io.File ("..");
 
667
   try
 
668
   {
 
669
       if (StartBrowser.isWindowsPlatform())
 
670
           StartBrowser.displayURL(this, "file:" + helpFile.getCanonicalPath() + "\\help\\contents.htm");
 
671
       else
 
672
           StartBrowser.displayURL(this, "file:" + helpFile.getCanonicalPath() + "/help/contents.htm");
 
673
   }
 
674
   catch(Exception e)
 
675
   {
 
676
        jniStrtoval.displayErrorMsg(this, "Could not invoke browser");
 
677
   }
 
678
  }//GEN-LAST:event_helpContentsActionPerformed
 
679
 
 
680
  private void lookAndFeelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lookAndFeelActionPerformed
 
681
    try
 
682
    {
 
683
        if (metalRadioButtonMenuItem.isSelected())
 
684
        {
 
685
            currLookAndFeel = "Java";
 
686
            javax.swing.UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
 
687
        }
 
688
        else if (unixRadioButtonMenuItem.isSelected())
 
689
        {
 
690
            currLookAndFeel = "Unix";
 
691
            javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
 
692
        }
 
693
        else if (windowsRadioButtonMenuItem.isSelected())
 
694
        {
 
695
            String osName = System.getProperty("os.name");
 
696
            if ((osName != null) && (osName.indexOf("Windows") != -1))
 
697
            {
 
698
                currLookAndFeel = "Windows";
 
699
                javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
 
700
            }
 
701
            else
 
702
            {
 
703
                resetLookAndFeel();
 
704
                jniStrtoval.displayErrorMsg(this, "This option is only available on a Windows platform");
 
705
            }
 
706
        }
 
707
        javax.swing.SwingUtilities.updateComponentTreeUI(this);
 
708
        upperMasterPanel.setLookAndFeel(currLookAndFeel);
 
709
        lowerMasterPanel.setLookAndFeel(currLookAndFeel);
 
710
    }
 
711
    catch (Exception e)
 
712
    {
 
713
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
714
    }
 
715
 
 
716
  }//GEN-LAST:event_lookAndFeelActionPerformed
 
717
 
 
718
  private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
 
719
    System.exit(0);
 
720
  }//GEN-LAST:event_exitForm
 
721
 
 
722
  /** Exit the Application in response to File menu - "exit" event.*/
 
723
  private void exitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitActionPerformed
 
724
    System.exit(0);
 
725
  }//GEN-LAST:event_exitActionPerformed
 
726
 
 
727
  /** Open a File for multi-point conversions. */
 
728
  private void openActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openActionPerformed
 
729
    JNIFiomeths jniFiomeths = new JNIFiomeths();
 
730
 
 
731
    javax.swing.JFileChooser jChooser1 = new javax.swing.JFileChooser(currentDir.getDirectory());
 
732
    jChooser1.addChoosableFileFilter(new DATFileFilter());
 
733
    jChooser1.setSelectedFile(new java.io.File("*.dat"));
 
734
    int state = jChooser1.showOpenDialog(this);
 
735
    if( state == javax.swing.JFileChooser.APPROVE_OPTION )
 
736
    {
 
737
        java.io.File file = jChooser1.getSelectedFile();
 
738
        currentDir.setDirectory(file.getAbsolutePath());
 
739
        if( file != null )
 
740
        {
 
741
            try
 
742
            {
 
743
                jniFiomeths.JNISetInputFilename(file.getPath());
 
744
 
 
745
                new FileDlg (this, true, currentDir, options, jniFiomeths).show ();
 
746
            }
 
747
            catch(GeotransError e)
 
748
            {
 
749
                jniStrtoval.displayErrorMsg(this, e.getMessage());
 
750
                jniFiomeths.JNICloseInputFile();
 
751
            }
 
752
            catch(JNIException e)
 
753
            {
 
754
                jniStrtoval.displayErrorMsg(this, e.getMessage());
 
755
                jniFiomeths.JNICloseInputFile();
 
756
            }
 
757
        }
 
758
    }
 
759
 
 
760
  }//GEN-LAST:event_openActionPerformed
 
761
 
 
762
  /** Open "Format Options" dialog in response to Options menu - "Format" event.
 
763
  *   Specifies output precision and angle measure (Latitude/Longitude/Orientation)
 
764
  *   format in terms of units, range, sign and separator.*/
 
765
  private void formatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formatActionPerformed
 
766
    FormatOptionsDlg formatOptionsDlg = new FormatOptionsDlg(this, true, options);
 
767
    formatOptionsDlg.show();
 
768
  }//GEN-LAST:event_formatActionPerformed
 
769
 
 
770
  /** Converts Lower Projection Coordinates to Upper Projection Coordinates. */
 
771
  private void convertUpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_convertUpActionPerformed
 
772
    boolean errorCode = false;
 
773
 
 
774
    try
 
775
    {
 
776
        lowerMasterPanel.setProjectionDir(SourceOrTarget.SOURCE);
 
777
        lowerMasterPanel.setEngine();
 
778
        if(!lowerMasterPanel.JNIError() && !lowerMasterPanel.engineError())
 
779
        {
 
780
            upperMasterPanel.setProjectionDir(SourceOrTarget.TARGET);
 
781
            upperMasterPanel.setEngine();
 
782
            if(!upperMasterPanel.JNIError() && !upperMasterPanel.engineError())
 
783
                jniEngine.JNIConvert(ConversionState.INTERACTIVE);
 
784
            else
 
785
            {
 
786
                errorCode = true;
 
787
                upperMasterPanel.showErrors(this);
 
788
            }
 
789
        }
 
790
        else
 
791
        {
 
792
            errorCode = true;
 
793
            lowerMasterPanel.showErrors(this);
 
794
        }
 
795
    }
 
796
    catch(GeotransError e)
 
797
    {
 
798
        errorCode = true;
 
799
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
800
    }
 
801
    catch(GeotransWarning e)
 
802
    {
 
803
        errorCode = false;
 
804
        jniStrtoval.displayWarningMsg(this, e.getMessage());
 
805
    }
 
806
    catch(JNIException e)
 
807
    {
 
808
        errorCode = true;
 
809
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
810
    }
 
811
 
 
812
    if (!errorCode)
 
813
    {
 
814
        upperMasterPanel.getCoords(SourceOrTarget.TARGET);
 
815
        if(!upperMasterPanel.JNIError() && !upperMasterPanel.engineError())
 
816
        {
 
817
            upperMasterPanel.reportAccuracy();
 
818
///            lowerMasterPanel.resetAccuracy();
 
819
        }
 
820
        else
 
821
            upperMasterPanel.showErrors(this);
 
822
    }
 
823
  }//GEN-LAST:event_convertUpActionPerformed
 
824
 
 
825
  /** Converts Upper Projection Coordinates to Lower Projection Coordinates. */
 
826
  private void convertDownActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_convertDownActionPerformed
 
827
    boolean errorCode = false;
 
828
 
 
829
    try
 
830
    {
 
831
        upperMasterPanel.setProjectionDir(SourceOrTarget.SOURCE);
 
832
        upperMasterPanel.setEngine();
 
833
        if(!upperMasterPanel.JNIError() && !upperMasterPanel.engineError())
 
834
        {
 
835
            lowerMasterPanel.setProjectionDir(SourceOrTarget.TARGET);
 
836
            lowerMasterPanel.setEngine();
 
837
            if(!lowerMasterPanel.JNIError() && !lowerMasterPanel.engineError())
 
838
                jniEngine.JNIConvert(ConversionState.INTERACTIVE);
 
839
            else
 
840
            {
 
841
                errorCode = true;
 
842
                lowerMasterPanel.showErrors(this);
 
843
            }
 
844
        }
 
845
        else
 
846
        {
 
847
            errorCode = true;
 
848
            upperMasterPanel.showErrors(this);
 
849
        }
 
850
    }
 
851
    catch(GeotransError e)
 
852
    {
 
853
        errorCode = true;
 
854
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
855
    }
 
856
    catch(GeotransWarning e)
 
857
    {
 
858
        errorCode = false;
 
859
        jniStrtoval.displayWarningMsg(this, e.getMessage());
 
860
    }
 
861
    catch(JNIException e)
 
862
    {
 
863
        errorCode = true;
 
864
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
865
    }
 
866
 
 
867
    if(!errorCode)
 
868
    {   // no errors
 
869
        lowerMasterPanel.getCoords(SourceOrTarget.TARGET);
 
870
        if(!lowerMasterPanel.JNIError() && !lowerMasterPanel.engineError())
 
871
        {
 
872
///            upperMasterPanel.resetAccuracy();
 
873
            lowerMasterPanel.reportAccuracy();
 
874
        }
 
875
        else
 
876
            lowerMasterPanel.showErrors(this);
 
877
    }
 
878
  }//GEN-LAST:event_convertDownActionPerformed
 
879
 
 
880
  private void deleteEllipsoidActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteEllipsoidActionPerformed
 
881
    // The DeleteDlg class is used for both Delete Ellipsoid and Delete Datum commands.
 
882
    new DeleteDlg(this, true, ListType.ELLIPSOID).show();
 
883
  }//GEN-LAST:event_deleteEllipsoidActionPerformed
 
884
 
 
885
  private void createEllipsoidActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createEllipsoidActionPerformed
 
886
    new CreateEllipsoidDlg(this, true).show();
 
887
  }//GEN-LAST:event_createEllipsoidActionPerformed
 
888
 
 
889
  private void deleteDatumActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteDatumActionPerformed
 
890
    // The DeleteDlg class is used for both Delete Ellipsoid and Delete Datum commands.
 
891
    DeleteDlg deleteDatum = new DeleteDlg(this, true, ListType.DATUM);
 
892
    deleteDatum.show();
 
893
    upperMasterPanel.deleteDatumFromList(deleteDatum.getIndex());
 
894
    lowerMasterPanel.deleteDatumFromList(deleteDatum.getIndex());
 
895
  }//GEN-LAST:event_deleteDatumActionPerformed
 
896
 
 
897
  private void createDatumActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createDatumActionPerformed
 
898
    new CreateDatumDlg(this, true).show();
 
899
    upperMasterPanel.addDatumToList();
 
900
    lowerMasterPanel.addDatumToList();
 
901
  }//GEN-LAST:event_createDatumActionPerformed
 
902
 
 
903
  private void editButtonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_editButtonMouseEntered
 
904
    prevFocus = getFocusOwner();
 
905
  }//GEN-LAST:event_editButtonMouseEntered
 
906
 
 
907
  private void pasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteActionPerformed
 
908
    java.awt.Component focus = getFocusOwner();
 
909
    if (focus instanceof javax.swing.text.JTextComponent)
 
910
        ((javax.swing.text.JTextComponent)focus).paste();
 
911
    else
 
912
    {
 
913
        if (prevFocus instanceof javax.swing.text.JTextComponent)
 
914
            ((javax.swing.text.JTextComponent)prevFocus).paste();
 
915
    }
 
916
  }//GEN-LAST:event_pasteActionPerformed
 
917
 
 
918
  private void cutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutActionPerformed
 
919
    java.awt.Component focus = getFocusOwner();
 
920
    if (focus instanceof javax.swing.text.JTextComponent)
 
921
        ((javax.swing.text.JTextComponent)focus).cut();
 
922
    else
 
923
    {
 
924
        if (prevFocus instanceof javax.swing.text.JTextComponent)
 
925
            ((javax.swing.text.JTextComponent)prevFocus).cut();
 
926
    }
 
927
  }//GEN-LAST:event_cutActionPerformed
 
928
 
 
929
  private void copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyActionPerformed
 
930
    java.awt.Component focus = getFocusOwner();
 
931
    if (focus instanceof javax.swing.text.JTextComponent)
 
932
        ((javax.swing.text.JTextComponent)focus).copy();
 
933
    else
 
934
    {
 
935
        if (prevFocus instanceof javax.swing.text.JTextComponent)
 
936
            ((javax.swing.text.JTextComponent)prevFocus).copy();
 
937
    }
 
938
  }//GEN-LAST:event_copyActionPerformed
 
939
 
 
940
 
 
941
  /**
 
942
  * @param args the command line arguments
 
943
  */
 
944
  public static void main (String args[]) {
 
945
    new Geotrans().show ();
 
946
    return;
 
947
  }
 
948
 
 
949
  // Test if a 3D conversion is possible
 
950
  // If it is, enable the geodetic height fields
 
951
  // If it is not, set the geodetic height fields to read only
 
952
  public void check3DConversion()
 
953
  {
 
954
      boolean _3dConversion = false;
 
955
      if (upperMasterPanel.getProjectionType() == CoordinateTypes.GEODETIC)
 
956
      {
 
957
        if ((lowerMasterPanel.getProjectionType() == CoordinateTypes.GEODETIC) || (lowerMasterPanel.getProjectionType() == CoordinateTypes.GEOCENTRIC) || (lowerMasterPanel.getProjectionType() == CoordinateTypes.LOCCART))
 
958
        {
 
959
            upperMasterPanel.enableHeightComboBox(true);
 
960
            upperMasterPanel.selectEllipsoidHeightButton();
 
961
           _3dConversion = true;
 
962
            upperMasterPanel.setHeightFieldEditable(true);
 
963
 
 
964
            if (lowerMasterPanel.getProjectionType() == CoordinateTypes.GEODETIC)
 
965
            {
 
966
                lowerMasterPanel.enableHeightComboBox(true);
 
967
                lowerMasterPanel.selectEllipsoidHeightButton();
 
968
                lowerMasterPanel.setHeightFieldEditable(true);
 
969
            }
 
970
        }
 
971
        else
 
972
        {
 
973
            upperMasterPanel.selectNoHeightButton();
 
974
            upperMasterPanel.setHeightText("0");
 
975
            upperMasterPanel.setHeightFieldEditable(false);
 
976
            upperMasterPanel.enableHeightComboBox(false);
 
977
        }
 
978
      }
 
979
      else if (lowerMasterPanel.getProjectionType() == CoordinateTypes.GEODETIC)
 
980
      {
 
981
        if ((upperMasterPanel.getProjectionType() == CoordinateTypes.GEOCENTRIC) || (upperMasterPanel.getProjectionType() == CoordinateTypes.LOCCART))
 
982
        {
 
983
            lowerMasterPanel.enableHeightComboBox(true);
 
984
            lowerMasterPanel.selectEllipsoidHeightButton();
 
985
            _3dConversion = true;
 
986
            lowerMasterPanel.setHeightFieldEditable(true);
 
987
        }
 
988
        else
 
989
        {
 
990
            lowerMasterPanel.selectNoHeightButton();
 
991
            lowerMasterPanel.setHeightText("0");
 
992
            lowerMasterPanel.setHeightFieldEditable(false);
 
993
            lowerMasterPanel.enableHeightComboBox(false);
 
994
        }
 
995
      }
 
996
      else if (((upperMasterPanel.getProjectionType() == CoordinateTypes.GEOCENTRIC) || (upperMasterPanel.getProjectionType() == CoordinateTypes.LOCCART)) &&
 
997
               ((lowerMasterPanel.getProjectionType() == CoordinateTypes.GEOCENTRIC) || (lowerMasterPanel.getProjectionType() == CoordinateTypes.LOCCART)))
 
998
        _3dConversion = true;
 
999
 
 
1000
      upperMasterPanel.updateSrcErrors(_3dConversion);
 
1001
      lowerMasterPanel.updateSrcErrors(_3dConversion);
 
1002
  }
 
1003
 
 
1004
  // Color code the convert buttons based on the current input/output datum & coordinate system combination
 
1005
  public void checkValidConversion()
 
1006
  {
 
1007
      int validColor = jniEngine.JNICheckValidConversion(upperMasterPanel.getProjectionType(), lowerMasterPanel.getProjectionType(),
 
1008
                                                         upperMasterPanel.getDatumIndex(), lowerMasterPanel.getDatumIndex());
 
1009
      if(validColor == Red.ID)  // Errors
 
1010
        currentColor = Red.VALUE;
 
1011
      else if(validColor == Yellow.ID)  // Warnings
 
1012
        currentColor = Yellow.VALUE;
 
1013
      else if(validColor == Green.ID)  // No errors or warnings
 
1014
        currentColor = Green.VALUE;
 
1015
 
 
1016
      convertUpButton.setBackground(currentColor);
 
1017
      convertDownButton.setBackground(currentColor);
 
1018
  }
 
1019
 
 
1020
// Creates projection panels, coordinate & parameter objects,
 
1021
// and initializes engine via JNI functions.
 
1022
  private void initialize(){
 
1023
    boolean error = false;
 
1024
    options = new jOptions();
 
1025
 
 
1026
    try
 
1027
    {
 
1028
        jniEngine.JNIInitializeEngine(); // JNI; calls Initialize_Engine.
 
1029
 
 
1030
        upperMasterPanel = new MasterPanel(ConversionState.INTERACTIVE, SourceOrTarget.SOURCE, options);
 
1031
        if (upperMasterPanel == null)
 
1032
        {
 
1033
            jniStrtoval.displayErrorMsg(this, "Unable to initialize GEOTRANS");
 
1034
            System.exit (0);
 
1035
        }
 
1036
 
 
1037
        lowerMasterPanel = new MasterPanel(ConversionState.INTERACTIVE, SourceOrTarget.TARGET, options);
 
1038
        if (lowerMasterPanel == null)
 
1039
        {
 
1040
            jniStrtoval.displayErrorMsg(this, "Unable to initialize GEOTRANS");
 
1041
            System.exit (0);
 
1042
        }
 
1043
 
 
1044
        upperMasterPanel.setParent(this);
 
1045
        lowerMasterPanel.setParent(this);
 
1046
 
 
1047
        check3DConversion();
 
1048
        checkValidConversion();
 
1049
 
 
1050
        upperPanel.setLayout(new java.awt.GridBagLayout());
 
1051
 
 
1052
       // upperPanel.setMinimumSize(new java.awt.Dimension(160, 265));
 
1053
     //   upperPanel.setPreferredSize(new java.awt.Dimension(160, 265));
 
1054
     //   upperPanel.setMaximumSize(new java.awt.Dimension(160, 265));
 
1055
       /* datumLabel.setMinimumSize(new java.awt.Dimension(270, 16));
 
1056
        datumLabel.setPreferredSize(new java.awt.Dimension(270, 16));*/
 
1057
        java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
 
1058
      //  gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 
1059
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
 
1060
        //gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 9);
 
1061
        upperPanel.add(upperMasterPanel, gridBagConstraints);
 
1062
        gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
 
1063
        lowerPanel.add( lowerMasterPanel, gridBagConstraints );
 
1064
 
 
1065
        //upperPanel.add( upperMasterPanel, java.awt.GridBagLayout);
 
1066
//        upperPanel.add( upperMasterPanel, java.awt.BorderLayout.CENTER);
 
1067
      //  lowerPanel.add( lowerMasterPanel, java.awt.BorderLayout.CENTER );
 
1068
    }
 
1069
    catch(GeotransError e)
 
1070
    {
 
1071
        jniStrtoval.displayErrorMsg(this, e.getMessage());
 
1072
        error = true;
 
1073
    }
 
1074
    catch (java.lang.UnsatisfiedLinkError e)
 
1075
    {
 
1076
        jniStrtoval.displayErrorMsg(this, "Unsatisfied Link Error: " + e.getMessage());
 
1077
        error = true;
 
1078
    }
 
1079
 
 
1080
    if (error)
 
1081
        System.exit (0);
 
1082
  }
 
1083
 
 
1084
  private void resetLookAndFeel()
 
1085
  {
 
1086
      if (currLookAndFeel.equals("Java"))
 
1087
        metalRadioButtonMenuItem.setSelected(true);
 
1088
      else if (currLookAndFeel.equals("Unix"))
 
1089
        unixRadioButtonMenuItem.setSelected(true);
 
1090
      else if (currLookAndFeel.equals("Windows"))
 
1091
        windowsRadioButtonMenuItem.setSelected(true);
 
1092
  }
 
1093
 
 
1094
 
 
1095
  // Variables declaration - do not modify//GEN-BEGIN:variables
 
1096
  private javax.swing.JMenuItem aboutMenuItem;
 
1097
  private javax.swing.JMenuItem contentsMenuItem;
 
1098
  private javax.swing.JButton convertDownButton;
 
1099
  private javax.swing.JMenuItem convertDownMenuItem;
 
1100
  private javax.swing.JMenu convertMenu;
 
1101
  private javax.swing.JSeparator convertMenuSeparator;
 
1102
  private javax.swing.JPanel convertPanel;
 
1103
  private javax.swing.JButton convertUpButton;
 
1104
  private javax.swing.JMenuItem convertUpMenuItem;
 
1105
  private javax.swing.JButton copyButton;
 
1106
  private javax.swing.JMenuItem copyMenuItem;
 
1107
  private javax.swing.JMenuItem createDatumMenuItem;
 
1108
  private javax.swing.JMenuItem createEllipsoidMenuItem;
 
1109
  private javax.swing.JMenuItem createFileHeaderMenuItem;
 
1110
  private javax.swing.JButton cutButton;
 
1111
  private javax.swing.JMenuItem cutMenuItem;
 
1112
  private javax.swing.JMenu datumMenu;
 
1113
  private javax.swing.JMenuItem deleteDatumMenuItem;
 
1114
  private javax.swing.JMenuItem deleteEllipsoidMenuItem;
 
1115
  private javax.swing.JMenu editMenu;
 
1116
  private javax.swing.JMenu ellipsoidMenu;
 
1117
  private javax.swing.JMenuItem exitMenuItem;
 
1118
  private javax.swing.JMenu fileMenu;
 
1119
  private javax.swing.JSeparator fileMenuSeparator;
 
1120
  private javax.swing.JButton formatButton;
 
1121
  private javax.swing.JMenuItem formatMenuItem;
 
1122
  private javax.swing.JMenuBar geotransMenuBar;
 
1123
  private javax.swing.JToolBar geotransToolBar;
 
1124
  private javax.swing.JSeparator geotransToolBarSeparator;
 
1125
  private javax.swing.JMenu helpMenu;
 
1126
  private javax.swing.JSeparator helpMenuSeparator;
 
1127
  private javax.swing.JMenu lookAndFeelMenu;
 
1128
  private javax.swing.JPanel lowerPanel;
 
1129
  private javax.swing.JRadioButtonMenuItem metalRadioButtonMenuItem;
 
1130
  private javax.swing.JMenuItem openMenuItem;
 
1131
  private javax.swing.JMenu optionsMenu;
 
1132
  private javax.swing.JButton pasteButton;
 
1133
  private javax.swing.JMenuItem pasteMenuItem;
 
1134
  private javax.swing.JMenuItem restoreDefaultMenuItem;
 
1135
  private javax.swing.JMenuItem saveAsDefaultMenuItem;
 
1136
  private javax.swing.JRadioButtonMenuItem unixRadioButtonMenuItem;
 
1137
  private javax.swing.JPanel upperPanel;
 
1138
  private javax.swing.JRadioButtonMenuItem windowsRadioButtonMenuItem;
 
1139
  // End of variables declaration//GEN-END:variables
 
1140
 
 
1141
} //end of Geotrans class.
 
1142