/* * WebPageFileChooserDialog.java * * Created on 22 September 2006, 16:14 */ package uk.co.bytemark.vm.enigma.inquisition.gui.screens; import java.io.IOException; import javax.swing.JFrame; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; /** * * @author Matt */ public class WebPageFileChooserDialog extends javax.swing.JDialog { /** A return status code - returned if Cancel button has been pressed */ public static final int RET_CANCEL = 0; /** A return status code - returned if OK button has been pressed */ public static final int RET_OK = 1; private UrlChosenListener urlChosenListener; public WebPageFileChooserDialog(JFrame parent, final String initialUrl, UrlChosenListener urlChosenListener) { super(parent, true); this.urlChosenListener = urlChosenListener; initComponents(); new Thread() { @Override public void run() { try { editorPane.setPage(initialUrl); } catch (IOException ex) { ex.printStackTrace(); } } }.start(); editorPane.addHyperlinkListener(new LinkListener()); } /** @return the return status of this dialog - one of RET_OK or RET_CANCEL */ public int getReturnStatus() { return returnStatus; } /** 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. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { cancelButton = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); editorPane = new javax.swing.JEditorPane(); setTitle("Select a link"); addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); cancelButton.setText("Cancel"); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); editorPane.setEditable(false); jScrollPane1.setViewportView(editorPane); org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(layout.createSequentialGroup() .addContainerGap() .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, cancelButton) .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 549, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() .addContainerGap() .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 486, Short.MAX_VALUE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(cancelButton) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed doClose(RET_CANCEL); }//GEN-LAST:event_cancelButtonActionPerformed /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog doClose(RET_CANCEL); }//GEN-LAST:event_closeDialog private void doClose(int retStatus) { returnStatus = retStatus; setVisible(false); dispose(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelButton; private javax.swing.JEditorPane editorPane; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration//GEN-END:variables private int returnStatus = RET_CANCEL; private class LinkListener implements HyperlinkListener { public void hyperlinkUpdate(HyperlinkEvent e) { HyperlinkEvent.EventType eventType = e.getEventType(); if (eventType == HyperlinkEvent.EventType.ACTIVATED) { WebPageFileChooserDialog.this.setVisible(false); // try { //editorPane.setPage(e.getURL().toExternalForm()); String url = e.getURL().toExternalForm(); urlChosenListener.urlChosen(url); // WebPageFileChooserDialog.this.parent.addWebExam(examURL); // } catch (IOException ex) { // ex.printStackTrace(); // } } } } public static interface UrlChosenListener { public void urlChosen(String url); } }