mev-4.0.01/source/org/tigr/microarray/mev/cluster/gui/impl/tease/NewickFileOutputDialog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4  */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * NewickFileOutputDialog.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on January 7, 2005, 10:37 AM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.cluster.gui.impl.tease;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Dimension;
2 26 Feb 07 jari 14 import java.awt.Frame;
2 26 Feb 07 jari 15 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 16 import java.awt.GridBagLayout;
2 26 Feb 07 jari 17 import java.awt.Insets;
2 26 Feb 07 jari 18 import java.awt.Toolkit;
2 26 Feb 07 jari 19 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 20 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 21 import java.io.File;
2 26 Feb 07 jari 22
2 26 Feb 07 jari 23 import javax.swing.JButton;
2 26 Feb 07 jari 24 import javax.swing.JComboBox;
2 26 Feb 07 jari 25 import javax.swing.JFileChooser;
2 26 Feb 07 jari 26 import javax.swing.JLabel;
2 26 Feb 07 jari 27 import javax.swing.JOptionPane;
2 26 Feb 07 jari 28 import javax.swing.JTextField;
2 26 Feb 07 jari 29
2 26 Feb 07 jari 30 import org.tigr.microarray.mev.TMEV;
2 26 Feb 07 jari 31 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 32 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.ParameterPanel;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 35 /**
2 26 Feb 07 jari 36  *
2 26 Feb 07 jari 37  * @author  braisted
2 26 Feb 07 jari 38  */
2 26 Feb 07 jari 39 public class NewickFileOutputDialog extends AlgorithmDialog {
2 26 Feb 07 jari 40
2 26 Feb 07 jari 41     private int result = JOptionPane.CANCEL_OPTION;    
2 26 Feb 07 jari 42     private boolean isGeneTree = false;
2 26 Feb 07 jari 43         
2 26 Feb 07 jari 44     private JComboBox annBox;
2 26 Feb 07 jari 45     private JTextField fileField;
2 26 Feb 07 jari 46     //private JCheckBox zeroRootBox;
2 26 Feb 07 jari 47     
2 26 Feb 07 jari 48     /** Creates a new instance of NewickFileOutputDialog */
2 26 Feb 07 jari 49     public NewickFileOutputDialog(Frame parent, String[] annotationKeys, int orientation) {
2 26 Feb 07 jari 50         super(parent, "Newick File Output Dialog", true);
2 26 Feb 07 jari 51
2 26 Feb 07 jari 52         if(orientation == HCLTree.HORIZONTAL)
2 26 Feb 07 jari 53             isGeneTree = true;
2 26 Feb 07 jari 54         
2 26 Feb 07 jari 55         JLabel annSelectionLabel;
2 26 Feb 07 jari 56         if(isGeneTree) {
2 26 Feb 07 jari 57             annSelectionLabel = new JLabel("Select a Gene Label:");
2 26 Feb 07 jari 58         } else {
2 26 Feb 07 jari 59             annSelectionLabel = new JLabel("Select a Sample Label:");                      
2 26 Feb 07 jari 60         }
2 26 Feb 07 jari 61                        
2 26 Feb 07 jari 62         annBox = new JComboBox(annotationKeys);
2 26 Feb 07 jari 63         annBox.setSelectedIndex(0);
2 26 Feb 07 jari 64        
2 26 Feb 07 jari 65         //zeroRootBox = new JCheckBox("Include 0.0 Height Root", false);
2 26 Feb 07 jari 66         //zeroRootBox.setOpaque(false);
2 26 Feb 07 jari 67         //zeroRootBox.setFocusPainted(false);
2 26 Feb 07 jari 68         
2 26 Feb 07 jari 69         JLabel fileLabel = new JLabel("Output File:");
2 26 Feb 07 jari 70         fileField = new JTextField(50);
2 26 Feb 07 jari 71         fileField.setMargin(new Insets(0,3,0,3));
2 26 Feb 07 jari 72         fileField.setHorizontalAlignment(JTextField.TRAILING);
2 26 Feb 07 jari 73         fileField.setText( TMEV.getFile("data").getAbsolutePath() + System.getProperty("file.separator") + "newick_output.txt"); 
2 26 Feb 07 jari 74
2 26 Feb 07 jari 75         JButton browseButton = new JButton("Select Output File");
2 26 Feb 07 jari 76         browseButton.setActionCommand("browse-command");
2 26 Feb 07 jari 77         browseButton.setFocusPainted(false);
2 26 Feb 07 jari 78         
2 26 Feb 07 jari 79         ParameterPanel panel = new ParameterPanel("Output Parameters");
2 26 Feb 07 jari 80         panel.setLayout(new GridBagLayout());
2 26 Feb 07 jari 81         
2 26 Feb 07 jari 82         panel.add(annSelectionLabel, new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,20,5,0), 0, 0));
2 26 Feb 07 jari 83         panel.add(annBox, new GridBagConstraints(0,1,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,20,30,0), 0, 0));
2 26 Feb 07 jari 84         //panel.add(zeroRootBox, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,20,30,0), 0, 0));
2 26 Feb 07 jari 85         panel.add(fileLabel, new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,20,5,0), 0, 0));
2 26 Feb 07 jari 86         panel.add(fileField, new GridBagConstraints(0,3,1,1,1,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,20,20,0), 0, 0));
2 26 Feb 07 jari 87         panel.add(browseButton, new GridBagConstraints(1,3,1,1,0,0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0,5,20,20), 0, 0));
2 26 Feb 07 jari 88         
2 26 Feb 07 jari 89         addContent(panel);
2 26 Feb 07 jari 90
2 26 Feb 07 jari 91         Listener listener = new Listener();
2 26 Feb 07 jari 92         browseButton.addActionListener(listener);        
2 26 Feb 07 jari 93         
2 26 Feb 07 jari 94         setActionListeners(listener);
2 26 Feb 07 jari 95
2 26 Feb 07 jari 96         setSize(470, 300);
2 26 Feb 07 jari 97     }
2 26 Feb 07 jari 98         
2 26 Feb 07 jari 99         
2 26 Feb 07 jari 100     /**
2 26 Feb 07 jari 101      * Shows the dialog.
2 26 Feb 07 jari 102      */
2 26 Feb 07 jari 103     public int showModal() {
2 26 Feb 07 jari 104         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 105         setLocation((screenSize.width - getSize().width)/2, (screenSize.height - getSize().height)/2);
2 26 Feb 07 jari 106         show();
2 26 Feb 07 jari 107         return result;
2 26 Feb 07 jari 108     }
2 26 Feb 07 jari 109         
2 26 Feb 07 jari 110     private boolean validateOutputFile() {
2 26 Feb 07 jari 111         File outFile = new File(this.fileField.getText());
2 26 Feb 07 jari 112         File parent = outFile.getParentFile();
2 26 Feb 07 jari 113         return (parent.exists() && parent.isDirectory());
2 26 Feb 07 jari 114     }
2 26 Feb 07 jari 115     
2 26 Feb 07 jari 116     private void resetControls() {
2 26 Feb 07 jari 117         this.annBox.setSelectedIndex(0);
2 26 Feb 07 jari 118         //this.zeroRootBox.setSelected(false);
2 26 Feb 07 jari 119         this.fileField.setText(TMEV.getFile("data").getAbsolutePath() + System.getProperty("file.separator") + "newick_output.txt");
2 26 Feb 07 jari 120     }
2 26 Feb 07 jari 121     
2 26 Feb 07 jari 122     public File getOutputFile() {
2 26 Feb 07 jari 123         return new File(this.fileField.getText());
2 26 Feb 07 jari 124     }
2 26 Feb 07 jari 125    
2 26 Feb 07 jari 126     public String getAnnotationKey() {
2 26 Feb 07 jari 127         return (String)this.annBox.getSelectedItem();
2 26 Feb 07 jari 128     }
2 26 Feb 07 jari 129     
2 26 Feb 07 jari 130     public static void main(String [] args) {
2 26 Feb 07 jari 131         String [] names = new String[3];
2 26 Feb 07 jari 132         names[0] = "TC";
2 26 Feb 07 jari 133         names[1] = "GenBank";
2 26 Feb 07 jari 134         names[2] = "Putative Role (Guess)";
2 26 Feb 07 jari 135         NewickFileOutputDialog d = new NewickFileOutputDialog(new Frame(), names, HCLTree.HORIZONTAL);
2 26 Feb 07 jari 136         d.showModal();
2 26 Feb 07 jari 137     }
2 26 Feb 07 jari 138     
2 26 Feb 07 jari 139         /**
2 26 Feb 07 jari 140      * The class to listen to the dialog and check boxes items events.
2 26 Feb 07 jari 141      */
2 26 Feb 07 jari 142     private class Listener extends DialogListener {
2 26 Feb 07 jari 143         
2 26 Feb 07 jari 144         public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 145             String command = e.getActionCommand();
2 26 Feb 07 jari 146             if (command.equals("ok-command")) {
2 26 Feb 07 jari 147                 //validate file
2 26 Feb 07 jari 148                 if(!validateOutputFile()) {
2 26 Feb 07 jari 149                     JOptionPane.showMessageDialog(NewickFileOutputDialog.this, "The directory specified for file output does not exist.<BR>Please select again.", "Newick Output File Error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 150                     return;
2 26 Feb 07 jari 151                 }
2 26 Feb 07 jari 152                 result = JOptionPane.OK_OPTION;
2 26 Feb 07 jari 153                 dispose();
2 26 Feb 07 jari 154             } else if (command.equals("cancel-command")) {
2 26 Feb 07 jari 155                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 156                 dispose();
2 26 Feb 07 jari 157             }
2 26 Feb 07 jari 158             else if (command.equals("reset-command")){
2 26 Feb 07 jari 159                 resetControls();
2 26 Feb 07 jari 160                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 161                 return;
2 26 Feb 07 jari 162             }            
2 26 Feb 07 jari 163             else if (command.equals("info-command")){
2 26 Feb 07 jari 164                 HelpWindow hw = new HelpWindow(NewickFileOutputDialog.this, "Newick File Output Dialog");
2 26 Feb 07 jari 165                 result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 166                 if(hw.getWindowContent()){
2 26 Feb 07 jari 167                     hw.setSize(450,600);
2 26 Feb 07 jari 168                     hw.setLocation();
2 26 Feb 07 jari 169                     hw.show();
2 26 Feb 07 jari 170                     return;
2 26 Feb 07 jari 171                 }
2 26 Feb 07 jari 172                 else {
2 26 Feb 07 jari 173                     hw.setVisible(false);
2 26 Feb 07 jari 174                     hw.dispose();
2 26 Feb 07 jari 175                     return;
2 26 Feb 07 jari 176                 }
2 26 Feb 07 jari 177             }
2 26 Feb 07 jari 178             else if (command.equals("browse-command")) {
2 26 Feb 07 jari 179                 JFileChooser chooser = new JFileChooser(TMEV.getFile("data"));
2 26 Feb 07 jari 180                 chooser.setFileSelectionMode(javax.swing.DefaultListSelectionModel.SINGLE_SELECTION);
2 26 Feb 07 jari 181                 if(chooser.showSaveDialog(NewickFileOutputDialog.this) == JFileChooser.APPROVE_OPTION) {
2 26 Feb 07 jari 182                     fileField.setText(chooser.getSelectedFile().getAbsolutePath());
2 26 Feb 07 jari 183                     NewickFileOutputDialog.this.validate();
2 26 Feb 07 jari 184                     //NewickFileOutputDialog.this.pack();
2 26 Feb 07 jari 185                 }
2 26 Feb 07 jari 186                 return;
2 26 Feb 07 jari 187             }
2 26 Feb 07 jari 188             dispose();
2 26 Feb 07 jari 189         }
2 26 Feb 07 jari 190         
2 26 Feb 07 jari 191         public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 192             result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 193             dispose();
2 26 Feb 07 jari 194         }
2 26 Feb 07 jari 195     }
2 26 Feb 07 jari 196 }