NXvalidate  1
NXvalidateFrame.java
Go to the documentation of this file.
1  /* NeXus - Neutron & X-ray Common Data Format
2  *
3  * NeXus file validation GUI tool.
4  *
5  * Copyright (C) 2010 Stephen Rankin
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  *
21  * For further information, see <http://www.nexusformat.org/>
22  *
23  * NXvalidateFrame.java
24  *
25  * Created on 02-Jun-2010, 14:17:04
26  */
27 
28 package org.nexusformat.nxvalidate;
29 
30 import java.awt.Dialog.ModalityType;
31 import java.awt.event.MouseListener;
32 import java.io.File;
33 import java.io.FileNotFoundException;
34 import java.io.IOException;
35 import java.util.ArrayList;
36 import java.util.ResourceBundle;
37 import java.util.logging.Level;
38 import java.util.logging.Logger;
39 import javax.help.CSH;
40 import javax.help.HelpBroker;
41 import javax.help.HelpSet;
42 import javax.swing.JOptionPane;
43 import javax.swing.JTextArea;
44 import javax.swing.tree.MutableTreeNode;
45 import javax.swing.tree.TreePath;
46 import javax.xml.parsers.DocumentBuilder;
47 import javax.xml.parsers.DocumentBuilderFactory;
48 import javax.xml.parsers.ParserConfigurationException;
49 import org.w3c.dom.Document;
50 
55 public class NXvalidateFrame extends javax.swing.JFrame {
56 
57  private DocumentBuilderFactory factory = null;
58  private DocumentBuilder builder = null;
59  private NXReducedToTree domTree = null;
60  private NXNodeMapper root = null;
61  private ResourceBundle bundle = null;
62  private File nxsFile = null;
63  private File nxdlFile = null;
64  private File reducedFile = null;
65  private File resultsFile = null;
66  private TreeUtils treeUtils = null;
67  private UserSettings settings = null;
68  private String nxconvertCommand = null;
69  private File saveDirectory = null;
70  private boolean foundNXconvert = false;
71  private MouseListener popupListener = null;
72  private TextPaneStyle txtStyle = null;
73  private FileActions fileLoadingActions = null;
74  private HelpBroker hb = null;
75 
77  public NXvalidateFrame() {
78  initComponents();
79  setup();
80  }
81 
82  private void setup() {
83 
84  factory = DocumentBuilderFactory.newInstance();
85  factory.setNamespaceAware(true);
86 
87  root = new NXNodeMapper("Files");
88 
89  domTree = new NXReducedToTree(root);
90  jTree1.setModel(domTree);
91 
92  try {
93  builder = factory.newDocumentBuilder();
94  } catch (ParserConfigurationException ex) {
95  Logger.getLogger(
96  NXvalidateFrame.class.getName()).log(Level.SEVERE, null, ex);
97  }
98 
99  bundle = ResourceBundle.getBundle(
100  "org/nexusformat/nxvalidate/resources/nxvalidate");
101 
102  treeUtils = new TreeUtils();
103 
104  XMLTreeRenderer rend = new XMLTreeRenderer(
105  "resources/nexus32x32.png", "resources/bad.png",
106  "resources/good.png", "resources/warn.png",
107  "resources/peg-e.png", "resources/info.png",
108  "resources/info-good.png", "resources/info-bad.png",
109  "resources/info-warn.png");
110 
111  jTree1.setCellRenderer(rend);
112 
113  settings = new UserSettings();
114 
115  try {
116  settings.loadUserSettings();
117  nxconvertCommand = settings.getNXconvert();
118 
119  if (!settings.foundNXconvert()) {
121  bundle.getString("nxconvertMissingError"));
122  foundNXconvert = false;
123  } else {
124  foundNXconvert = true;
125  }
126  } catch (FileNotFoundException ex) {
127  Logger.getLogger(
128  NXvalidateFrame.class.getName()).log(Level.SEVERE,
129  "The settings file cannot be found.", ex);
130  } catch (IOException ex) {
131  Logger.getLogger(
132  NXvalidateFrame.class.getName()).log(Level.SEVERE,
133  "The settings file IO error.", ex);
134  }
135 
136  popupListener = new PopupListener(treePopupMenu);
137  jTree1.addMouseListener(popupListener);
138 
139  txtStyle = new TextPaneStyle(jTextPane1);
140 
141  fileLoadingActions = new FileActions(this, jTree1, builder, domTree, root);
142 
143  String helpHS = "help/jhelpset.hs";
144  HelpSet hs = null;
145 
146  try {
147  hs = new HelpSet(null, this.getClass().getResource(helpHS));
148  } catch (Exception ex) {
149  Logger.getLogger(
150  NXvalidateFrame.class.getName()).log(Level.SEVERE,
151  "The setting help file IO error.", ex);
152  return;
153  }
154  // Create a HelpBroker object:
155  hb = hs.createHelpBroker();
156 
157  helpMenuItem.addActionListener(new CSH.DisplayHelpFromSource( hb ));
158 
159  }
160 
166  @SuppressWarnings("unchecked")
167  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
168  private void initComponents() {
169 
170  dialogReportProblem = new javax.swing.JOptionPane();
171  treePopupMenu = new javax.swing.JPopupMenu();
172  closeFileMenuItem = new javax.swing.JMenuItem();
173  jFileChooser1 = new javax.swing.JFileChooser();
174  jPanel2 = new javax.swing.JPanel();
175  jSplitPane1 = new javax.swing.JSplitPane();
176  jScrollPane1 = new javax.swing.JScrollPane();
177  jTree1 = new javax.swing.JTree();
178  jScrollPane2 = new javax.swing.JScrollPane();
179  jTextPane1 = new javax.swing.JTextPane();
180  jMenuBar1 = new javax.swing.JMenuBar();
181  fileMenu = new javax.swing.JMenu();
182  openFilesMenuItem = new javax.swing.JMenuItem();
183  jSeparator4 = new javax.swing.JPopupMenu.Separator();
184  saveMenuItem = new javax.swing.JMenuItem();
185  jSeparator7 = new javax.swing.JPopupMenu.Separator();
186  closeAllMenuItem = new javax.swing.JMenuItem();
187  jSeparator5 = new javax.swing.JPopupMenu.Separator();
188  exitAppMenuItem = new javax.swing.JMenuItem();
189  toolsMenu = new javax.swing.JMenu();
190  validateSelectedMenuItem = new javax.swing.JMenuItem();
191  jSeparator2 = new javax.swing.JPopupMenu.Separator();
192  filterMenuItem = new javax.swing.JMenuItem();
193  jSeparator1 = new javax.swing.JPopupMenu.Separator();
194  bulkMenuItem = new javax.swing.JMenuItem();
195  jSeparator3 = new javax.swing.JPopupMenu.Separator();
196  settingsMenuItem = new javax.swing.JMenuItem();
197  helpMenu = new javax.swing.JMenu();
198  helpMenuItem = new javax.swing.JMenuItem();
199  jSeparator6 = new javax.swing.JPopupMenu.Separator();
200  aboutMenuItem = new javax.swing.JMenuItem();
201 
202  closeFileMenuItem.setText("Close File");
203  closeFileMenuItem.addActionListener(new java.awt.event.ActionListener() {
204  public void actionPerformed(java.awt.event.ActionEvent evt) {
205  closeFileMenuItemActionPerformed(evt);
206  }
207  });
208  treePopupMenu.add(closeFileMenuItem);
209 
210  setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
211  java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("org/nexusformat/nxvalidate/resources/nxvalidate"); // NOI18N
212  setTitle(bundle.getString("applicationTitle")); // NOI18N
213  setMinimumSize(new java.awt.Dimension(400, 400));
214 
215  jPanel2.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5), javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED)));
216  jPanel2.setPreferredSize(new java.awt.Dimension(130, 130));
217 
218  jSplitPane1.setDividerLocation(200);
219  jSplitPane1.setContinuousLayout(true);
220 
221  javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("NXS Files");
222  jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
223  jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
224  public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
225  jTree1ValueChanged(evt);
226  }
227  });
228  jScrollPane1.setViewportView(jTree1);
229 
230  jSplitPane1.setLeftComponent(jScrollPane1);
231 
232  jScrollPane2.setViewportView(jTextPane1);
233 
234  jSplitPane1.setRightComponent(jScrollPane2);
235 
236  javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
237  jPanel2.setLayout(jPanel2Layout);
238  jPanel2Layout.setHorizontalGroup(
239  jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
240  .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 386, Short.MAX_VALUE)
241  );
242  jPanel2Layout.setVerticalGroup(
243  jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
244  .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 259, Short.MAX_VALUE)
245  );
246 
247  getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);
248 
249  fileMenu.setText(bundle.getString("fileMenuItem")); // NOI18N
250 
251  openFilesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
252  openFilesMenuItem.setText("Open Files");
253  openFilesMenuItem.addActionListener(new java.awt.event.ActionListener() {
254  public void actionPerformed(java.awt.event.ActionEvent evt) {
255  openFilesMenuItemActionPerformed(evt);
256  }
257  });
258  fileMenu.add(openFilesMenuItem);
259  fileMenu.add(jSeparator4);
260 
261  saveMenuItem.setText("Save Results");
262  saveMenuItem.setToolTipText("Save results to files.");
263  saveMenuItem.addActionListener(new java.awt.event.ActionListener() {
264  public void actionPerformed(java.awt.event.ActionEvent evt) {
265  saveMenuItemActionPerformed(evt);
266  }
267  });
268  fileMenu.add(saveMenuItem);
269  fileMenu.add(jSeparator7);
270 
271  closeAllMenuItem.setText("Close All Files");
272  closeAllMenuItem.addActionListener(new java.awt.event.ActionListener() {
273  public void actionPerformed(java.awt.event.ActionEvent evt) {
274  closeAllMenuItemActionPerformed(evt);
275  }
276  });
277  fileMenu.add(closeAllMenuItem);
278  fileMenu.add(jSeparator5);
279 
280  exitAppMenuItem.setText("Exit");
281  exitAppMenuItem.addActionListener(new java.awt.event.ActionListener() {
282  public void actionPerformed(java.awt.event.ActionEvent evt) {
283  exitAppMenuItemActionPerformed(evt);
284  }
285  });
286  fileMenu.add(exitAppMenuItem);
287 
288  jMenuBar1.add(fileMenu);
289 
290  toolsMenu.setText("Tools");
291 
292  validateSelectedMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
293  validateSelectedMenuItem.setText("Validate Selected");
294  validateSelectedMenuItem.addActionListener(new java.awt.event.ActionListener() {
295  public void actionPerformed(java.awt.event.ActionEvent evt) {
296  validateSelectedMenuItemActionPerformed(evt);
297  }
298  });
299  toolsMenu.add(validateSelectedMenuItem);
300  toolsMenu.add(jSeparator2);
301 
302  filterMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
303  filterMenuItem.setText("Show Failed Nodes");
304  filterMenuItem.addActionListener(new java.awt.event.ActionListener() {
305  public void actionPerformed(java.awt.event.ActionEvent evt) {
306  filterMenuItemActionPerformed(evt);
307  }
308  });
309  toolsMenu.add(filterMenuItem);
310  toolsMenu.add(jSeparator1);
311 
312  bulkMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.CTRL_MASK));
313  bulkMenuItem.setText("Bulk Validation");
314  bulkMenuItem.addActionListener(new java.awt.event.ActionListener() {
315  public void actionPerformed(java.awt.event.ActionEvent evt) {
316  bulkMenuItemActionPerformed(evt);
317  }
318  });
319  toolsMenu.add(bulkMenuItem);
320  toolsMenu.add(jSeparator3);
321 
322  settingsMenuItem.setText("Settings");
323  settingsMenuItem.addActionListener(new java.awt.event.ActionListener() {
324  public void actionPerformed(java.awt.event.ActionEvent evt) {
325  settingsMenuItemActionPerformed(evt);
326  }
327  });
328  toolsMenu.add(settingsMenuItem);
329 
330  jMenuBar1.add(toolsMenu);
331 
332  helpMenu.setText("Help");
333 
334  helpMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_H, java.awt.event.InputEvent.CTRL_MASK));
335  helpMenuItem.setText("Help Content");
336  helpMenu.add(helpMenuItem);
337  helpMenu.add(jSeparator6);
338 
339  aboutMenuItem.setText("About");
340  aboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
341  public void actionPerformed(java.awt.event.ActionEvent evt) {
342  aboutMenuItemActionPerformed(evt);
343  }
344  });
345  helpMenu.add(aboutMenuItem);
346 
347  jMenuBar1.add(helpMenu);
348 
349  setJMenuBar(jMenuBar1);
350 
351  pack();
352  }// </editor-fold>//GEN-END:initComponents
353 
354  public void displayErrorMessage(String message) {
355 
356  JTextArea ta = new JTextArea(message);
357  ta.setEditable(false);
358  ta.setWrapStyleWord(true);
359  ta.setLineWrap(true);
360  ta.setSize(200, 100);
361  dialogReportProblem.showMessageDialog(this, ta);
362 
363  }
364 
365  private boolean loadOpenFilesDialog() {
366 
367  NXLoadFilesDialog loadFile = new NXLoadFilesDialog(this, true);
368  loadFile.setModalityType(ModalityType.APPLICATION_MODAL);
369  loadFile.setVisible(true);
370  nxsFile = loadFile.getNXSFile();
371  nxdlFile = loadFile.getNXDLFile();
372  return loadFile.OKButtonUsed();
373 
374  }
375 
376  private boolean saveResultsFilesDialog() {
377 
378  NXLoadFilesDialog loadFile = new NXLoadFilesDialog(this, true);
379  loadFile.setModalityType(ModalityType.APPLICATION_MODAL);
380  loadFile.setVisible(true);
381  nxsFile = loadFile.getNXSFile();
382  nxdlFile = loadFile.getNXDLFile();
383  return loadFile.OKButtonUsed();
384 
385  }
386 
387  private boolean loadValidatFileDialog() {
388 
389  NXValidateDialog loadValidate = new NXValidateDialog(this, true);
390  loadValidate.setModalityType(ModalityType.APPLICATION_MODAL);
391  if (nxdlFile != null) {
392  loadValidate.setNXDLFile(nxdlFile);
393  }
394  loadValidate.setVisible(true);
395  nxdlFile = loadValidate.getNXDLFile();
396  return loadValidate.OKButtonUsed();
397 
398  }
399 
400  private boolean loadSettingsFileDialog() {
401 
402  NXSettingsDialog loadSettings = new NXSettingsDialog(this, true);
403  loadSettings.setModalityType(ModalityType.APPLICATION_MODAL);
404  if (nxconvertCommand != null) {
405  loadSettings.setNXConvertCommand(nxconvertCommand);
406  }
407  loadSettings.setVisible(true);
408  nxconvertCommand = loadSettings.getNXConvertFile();
409  return loadSettings.OKButtonUsed();
410 
411  }
412 
413  private void openFilesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openFilesMenuItemActionPerformed
414 
415  if (evt.getSource() == openFilesMenuItem) {
416  if (!foundNXconvert) {
418  bundle.getString("nxconvertMissingError"));
419  return;
420  }
421 
422  boolean result = loadOpenFilesDialog();
423 
424  if (result) {
425  if (nxsFile != null) {
426  fileLoadingActions.setWhich(1);
427  fileLoadingActions.setNXSFile(nxsFile);
428  fileLoadingActions.setNXConvertFile(nxconvertCommand);
429  fileLoadingActions.setNXDLFile(nxdlFile);
430  (new Thread(fileLoadingActions)).start();
431  } else {
432  dialogReportProblem.showMessageDialog(this,
433  bundle.getString("openNexusFileMessage"));
434  }
435  }
436  }
437 
438  }//GEN-LAST:event_openFilesMenuItemActionPerformed
439 
440  private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree1ValueChanged
441 
442  if (evt.getSource() == jTree1) {
443  if (jTree1.getSelectionPath() != null) {
444  NXNodeMapper node =
445  (NXNodeMapper) jTree1.getSelectionPath().getLastPathComponent();
446  txtStyle.updateTextPane(node);
447  }
448  }
449 
450  }//GEN-LAST:event_jTree1ValueChanged
451 
452  private void validateSelectedMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_validateSelectedMenuItemActionPerformed
453 
454  if (evt.getSource() == validateSelectedMenuItem) {
455 
456  //Nothing selected in tree
457  if (jTree1.isSelectionEmpty()) {
458  return;
459  }
460 
461  //Root node selected in tree
462  TreePath selected = jTree1.getSelectionPath();
463  int size = selected.getPath().length;
464  NXNodeMapper endNode = (NXNodeMapper) selected.getPath()[size - 1];
465  if (endNode.isRoot()) {
466  return;
467  }
468 
469  //No nxconvert binary found.
470  if (!foundNXconvert) {
472  bundle.getString("nxconvertMissingError"));
473  return;
474  }
475 
476  Document reducedDoc = null;
477  Document resultsDoc = null;
478 
479  //Check to see if the reduction and validation have not already
480  //been done, i.e. the files and documents already exist for the
481  //current selected tree.
482  if (treeUtils.getNXDLFile(jTree1) != null) {
483  nxdlFile = treeUtils.getNXDLFile(jTree1);
484  }
485 
486  if (treeUtils.getReducedFile(jTree1) != null) {
487  reducedFile = treeUtils.getReducedFile(jTree1);
488  reducedDoc = treeUtils.getReducedDoc(jTree1);
489  }
490 
491  if (treeUtils.getResultsFile(jTree1) != null) {
492  resultsFile = treeUtils.getResultsFile(jTree1);
493  resultsDoc = treeUtils.getResultsDoc(jTree1);
494  }
495 
496  //Show the validate file dialog.
497  boolean result = loadValidatFileDialog();
498 
499  if (result) {
500  if (nxdlFile != null) {
501 
502  fileLoadingActions.setWhich(2);
503  fileLoadingActions.setNXSFile(nxsFile);
504  fileLoadingActions.setNXConvertFile(nxconvertCommand);
505  fileLoadingActions.setNXDLFile(nxdlFile);
506  fileLoadingActions.setReducedFile(reducedFile);
507  fileLoadingActions.setReducedDoc(reducedDoc);
508  fileLoadingActions.setResultsDoc(resultsDoc);
509 
510  Thread thread = new Thread(fileLoadingActions);
511 
512  thread.start();
513 
514  } else {
515  dialogReportProblem.showMessageDialog(this,
516  bundle.getString("openSchemaFileMessage"));
517  }
518  }
519  }
520 
521  }//GEN-LAST:event_validateSelectedMenuItemActionPerformed
522 
523  private void settingsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_settingsMenuItemActionPerformed
524 
525  if (evt.getSource() == settingsMenuItem) {
526 
527  boolean result = loadSettingsFileDialog();
528 
529  if (result) {
530  if (nxconvertCommand != null) {
531 
532  settings.setNXconvert(nxconvertCommand);
533  settings.saveUserSettings();
534  foundNXconvert = settings.foundNXconvert();
535  }
536  }
537 
538  if (!foundNXconvert) {
540  bundle.getString("nxconvertMissingError"));
541  return;
542  }
543 
544  }
545 
546  }//GEN-LAST:event_settingsMenuItemActionPerformed
547 
548  private void closeFileMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeFileMenuItemActionPerformed
549 
550  if (evt.getSource() == closeFileMenuItem) {
551 
552  NXNodeMapper node = treeUtils.getBaseNode(jTree1);
553  if (node != null) {
554  if (!node.isRoot()) {
555  root.remove(node);
556  domTree.removeNodeFromParent((MutableTreeNode) node);
557  domTree.updateTree();
558  }
559  }
560 
561  }
562  }//GEN-LAST:event_closeFileMenuItemActionPerformed
563 
564  private void exitAppMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitAppMenuItemActionPerformed
565  if (evt.getSource() == exitAppMenuItem) {
566  this.dispose();
567  }
568  }//GEN-LAST:event_exitAppMenuItemActionPerformed
569 
570  private void closeAllMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeAllMenuItemActionPerformed
571  if (evt.getSource() == closeAllMenuItem) {
572 
573  int result = dialogReportProblem.showConfirmDialog(this,
574  bundle.getString("closeAllWarningMessage"), null,
575  JOptionPane.OK_CANCEL_OPTION);
576 
577  if (result == 0) {
578  ArrayList<NXNodeMapper> nodes = root.getOpenNodes();
579  for (int i = 0; i < nodes.size(); ++i) {
580  domTree.removeNodeFromParent((MutableTreeNode) nodes.get(i));
581  }
582  root.removeAllNodes();
583  domTree.updateTree();
584  }
585  }
586  }//GEN-LAST:event_closeAllMenuItemActionPerformed
587 
588  private void bulkMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bulkMenuItemActionPerformed
589 
590  if (evt.getSource() == bulkMenuItem) {
591 
592  fileLoadingActions.setNXConvertFile(nxconvertCommand);
593  BulkLoadFilesFrame bulk = new BulkLoadFilesFrame(fileLoadingActions);
594  bulk.setVisible(true);
595 
596  }
597 
598  }//GEN-LAST:event_bulkMenuItemActionPerformed
599 
600  private void filterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filterMenuItemActionPerformed
601 
602  if (evt.getSource() == filterMenuItem) {
603  treeUtils.hideGoodNodes(jTree1);
604  }
605 
606  }//GEN-LAST:event_filterMenuItemActionPerformed
607 
608  private void saveMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveMenuItemActionPerformed
609  if (evt.getSource() == saveMenuItem) {
610 
611  jFileChooser1.setMultiSelectionEnabled(false);
612  jFileChooser1.setFileSelectionMode(jFileChooser1.DIRECTORIES_ONLY);
613  jFileChooser1.setApproveButtonText("Save");
614  int returnVal = jFileChooser1.showOpenDialog(this);
615 
616  if (returnVal == jFileChooser1.APPROVE_OPTION) {
617 
618  saveDirectory = jFileChooser1.getSelectedFile();
619 
620  if(!saveDirectory.exists()){
621  saveDirectory.mkdir();
622  }
623 
624  fileLoadingActions.setSaveDirectory(saveDirectory);
625  fileLoadingActions.setWhich(6);
626  Thread thread = new Thread(fileLoadingActions);
627  thread.start();
628 
629  dialogReportProblem.showMessageDialog(
630  this,
631  bundle.getString("savedResultsMessage"));
632 
633  } else {
634  saveDirectory = null;
635  }
636 
637  }
638  }//GEN-LAST:event_saveMenuItemActionPerformed
639 
640  private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
641  if (evt.getSource() == aboutMenuItem) {
642  AboutDialog about = new AboutDialog(this,true);
643  about.setVisible(true);
644  }
645  }//GEN-LAST:event_aboutMenuItemActionPerformed
646 
650  public static void main(String args[]) {
651  java.awt.EventQueue.invokeLater(new Runnable() {
652 
653  public void run() {
654  new NXvalidateFrame().setVisible(true);
655  }
656  });
657 
658 
659  }
660  // Variables declaration - do not modify//GEN-BEGIN:variables
661  private javax.swing.JMenuItem aboutMenuItem;
662  private javax.swing.JMenuItem bulkMenuItem;
663  private javax.swing.JMenuItem closeAllMenuItem;
664  private javax.swing.JMenuItem closeFileMenuItem;
665  private javax.swing.JOptionPane dialogReportProblem;
666  private javax.swing.JMenuItem exitAppMenuItem;
667  private javax.swing.JMenu fileMenu;
668  private javax.swing.JMenuItem filterMenuItem;
669  private javax.swing.JMenu helpMenu;
670  private javax.swing.JMenuItem helpMenuItem;
671  private javax.swing.JFileChooser jFileChooser1;
672  private javax.swing.JMenuBar jMenuBar1;
673  private javax.swing.JPanel jPanel2;
674  private javax.swing.JScrollPane jScrollPane1;
675  private javax.swing.JScrollPane jScrollPane2;
676  private javax.swing.JPopupMenu.Separator jSeparator1;
677  private javax.swing.JPopupMenu.Separator jSeparator2;
678  private javax.swing.JPopupMenu.Separator jSeparator3;
679  private javax.swing.JPopupMenu.Separator jSeparator4;
680  private javax.swing.JPopupMenu.Separator jSeparator5;
681  private javax.swing.JPopupMenu.Separator jSeparator6;
682  private javax.swing.JPopupMenu.Separator jSeparator7;
683  private javax.swing.JSplitPane jSplitPane1;
684  private javax.swing.JTextPane jTextPane1;
685  private javax.swing.JTree jTree1;
686  private javax.swing.JMenuItem openFilesMenuItem;
687  private javax.swing.JMenuItem saveMenuItem;
688  private javax.swing.JMenuItem settingsMenuItem;
689  private javax.swing.JMenu toolsMenu;
690  private javax.swing.JPopupMenu treePopupMenu;
691  private javax.swing.JMenuItem validateSelectedMenuItem;
692  // End of variables declaration//GEN-END:variables
693 }
NXNodeMapper getBaseNode(JTree tree)
Definition: TreeUtils.java:182
void setSaveDirectory(File saveDirectory)
This maps the NX Reduced XML Document (as a DOM document) to a JTree model.
Document getReducedDoc(JTree tree)
Definition: TreeUtils.java:206
ArrayList< NXNodeMapper > getOpenNodes()
Returns a list of nodes that represent the Nexus documents that are open i.e.
void removeAllNodes()
Removes the list of nodes that represent the Nexus documents that are open i.e.
void setResultsDoc(Document resultsDoc)
void setReducedDoc(Document reducedDoc)
void setNXconvert(String nxconvertCommand)
NXvalidateFrame()
Creates new form NXvalidateFrame.
void setReducedFile(File reducedFile)
void setNXConvertFile(String nxconvertCommand)
Document getResultsDoc(JTree tree)
Definition: TreeUtils.java:214
We need to modify the tree representing the reduced document when nodes are found to be bad (validati...