package edu.stanford.nlp.io.ui; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * Simple dialog to ask user for url * * @author Huy Nguyen */ public class OpenPageDialog extends javax.swing.JDialog { /** * */ private static final long serialVersionUID = -7987625449997527926L; public static final int CANCEL_OPTION = 0; public static final int APPROVE_OPTION = 1; private JFileChooser jfc; private int status; /** * Creates new form OpenPageDialog */ public OpenPageDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); jfc = new JFileChooser(); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent we) { status = CANCEL_OPTION; } }); } /** * Sets the file chooser used by the Browse button */ public void setFileChooser(JFileChooser jfc) { this.jfc = jfc; } /* return URL in text field of dialog */ public String getPage() { return urlTextField.getText(); } /* returns the status of the dialog (APPROVE_OPTION, CANCEL_OPTION) */ public int getStatus() { return status; } /* use JFileChooser jfc to browse files */ private void browseFiles() { jfc.setDialogTitle("Open file"); int status = jfc.showOpenDialog(this); if (status == JFileChooser.APPROVE_OPTION) { urlTextField.setText(jfc.getSelectedFile().getPath()); openButton.setEnabled(true); } } private void approve() { status = APPROVE_OPTION; closeDialog(null); } /* Enables the open button if the urlTextField is non-empty. Disables it otherwise */ private void enableOpenButton() { openButton.setEnabled(urlTextField.getText().length() > 0); } /** * This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents()//GEN-BEGIN:initComponents { jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); urlTextField = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel(); openButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); browseButton = new javax.swing.JButton(); addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.Y_AXIS)); jLabel2.setText("Type in the internet address of a document or web page."); jPanel1.add(jLabel2); jLabel1.setText("Open"); jPanel3.add(jLabel1); urlTextField.setMinimumSize(new java.awt.Dimension(100, 20)); urlTextField.setPreferredSize(new java.awt.Dimension(300, 20)); urlTextField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { enableOpenButton(); } public void insertUpdate(DocumentEvent e) { enableOpenButton(); } public void removeUpdate(DocumentEvent e) { enableOpenButton(); } }); urlTextField.addActionListener(evt -> urlTextFieldActionPerformed(evt)); jPanel3.add(urlTextField); jPanel1.add(jPanel3); getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH); openButton.setText("Open"); openButton.setEnabled(false); openButton.addActionListener(evt -> openButtonActionPerformed(evt)); jPanel2.add(openButton); cancelButton.setText("Cancel"); cancelButton.addActionListener(evt -> cancelButtonActionPerformed(evt)); jPanel2.add(cancelButton); browseButton.setText("Browse"); browseButton.addActionListener(evt -> browseButtonActionPerformed(evt)); jPanel2.add(browseButton); getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void urlTextFieldActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_urlTextFieldActionPerformed {//GEN-HEADEREND:event_urlTextFieldActionPerformed if (urlTextField.getText().length() > 0) { approve(); } }//GEN-LAST:event_urlTextFieldActionPerformed private void browseButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_browseButtonActionPerformed {//GEN-HEADEREND:event_browseButtonActionPerformed browseFiles(); }//GEN-LAST:event_browseButtonActionPerformed private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtonActionPerformed {//GEN-HEADEREND:event_cancelButtonActionPerformed status = CANCEL_OPTION; closeDialog(null); }//GEN-LAST:event_cancelButtonActionPerformed private void openButtonActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openButtonActionPerformed {//GEN-HEADEREND:event_openButtonActionPerformed approve(); }//GEN-LAST:event_openButtonActionPerformed /** * Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog /** * @param args the command line arguments */ public static void main(String args[]) { new OpenPageDialog(new javax.swing.JFrame(), true).setVisible(true); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField urlTextField; private javax.swing.JButton openButton; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel3; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel2; private javax.swing.JButton cancelButton; private javax.swing.JButton browseButton; private javax.swing.JPanel jPanel1; // End of variables declaration//GEN-END:variables }