/* * Created on Dec 10, 2004 * */ package jPDFViewerSamples; import javax.swing.JApplet; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import com.qoppa.pdf.PDFException; import com.qoppa.pdfViewer.PDFViewerBean; import javax.swing.JPanel; import java.awt.BorderLayout; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JCheckBox; import javax.swing.BoxLayout; /** * @author Gerald Holmann * */ public class PDFViewerApplet extends JApplet { private PDFViewerBean m_ViewerBean = null; private JPanel jPanel = null; public final static String STRING_FALSE = "False"; public final static String NUMBER_FALSE = "0"; public final static String STRING_TRUE = "True"; public final static String NUMBER_TRUE = "1"; private JPanel ToolbarOptions = null; private JCheckBox jcbShowToolbar = null; private JCheckBox jcbShowSelectToolbar = null; private class LoadPDFRunnable implements Runnable { private URL m_PDFURL; public LoadPDFRunnable (URL pdfURL) { m_PDFURL = pdfURL; } public void run() { try { getPDFViewerBean().loadPDF(m_PDFURL); } catch (PDFException pdfE) { displayError (pdfE.getMessage()); } catch (Throwable t) { displayError ("Error loading PDF: " + t.getMessage()); } } } /** * This method initializes this * * @return void */ public void init() { this.setContentPane(getJPanel()); } public void start () { // Set open button visibility according to the BrowseAllowed flag. getPDFViewerBean().getToolbar().getjbOpen().setVisible (toBoolean (getParameter("BrowseAllowed"))); // Set print button visibility according to the PrintAllowed flag. getPDFViewerBean().getToolbar().getjbPrint().setVisible (toBoolean (getParameter ("PrintAllowed"))); // Set the toolbar to visible / not visible according to the ToolbarVisible flag getPDFViewerBean().getToolbar().setVisible (toBoolean (getParameter ("ToolbarVisible"))); int scale = toInteger (getParameter ("Scale")); if (scale > 0) { getPDFViewerBean().setScale(scale); } // Set the thumbnail pane visible / not visible according to the ThumbnailsVisible flag boolean splitVisible = toBoolean (getParameter ("ThumbnailsVisible")); if (splitVisible == false) { getPDFViewerBean().setSplitPolicy(PDFViewerBean.SPLITPOLICY_NEVER_VISIBLE); } // Load a PDF document from a URL final String url = getParameter("url"); if (url != null && url.trim ().length() > 0) { try { getPDFViewerBean().loadPDF(new URL (url)); } catch (MalformedURLException mue) { JOptionPane.showMessageDialog(PDFViewerApplet.this, mue.getMessage()); } catch (PDFException pdfE) { JOptionPane.showMessageDialog(PDFViewerApplet.this, pdfE.getMessage()); } } } private int toInteger (String str) { try { return Integer.parseInt(str); } catch (NumberFormatException nfe) { return 0; } } private boolean toBoolean (String str) { if (str == null || str.equalsIgnoreCase(STRING_TRUE) || str.equalsIgnoreCase(NUMBER_TRUE)) { return true; } return false; } public void loadPDF (String pdfURLString) { try { // Form URL object URL pdfURL = new URL (pdfURLString); // Load the PDF in the swing thread if (SwingUtilities.isEventDispatchThread()) { getPDFViewerBean().loadPDF(pdfURL); } else { // Create PDF loader and call it in the Swing event thread LoadPDFRunnable loader = new LoadPDFRunnable (pdfURL); SwingUtilities.invokeAndWait(loader); } } catch (MalformedURLException mURL) { displayError ("Invalid PDF URL: " + mURL.getMessage()); } catch (Throwable t) { if (t.getCause() instanceof PDFException) { displayError (t.getCause().getMessage()); } else { displayError ("Error loading PDF: " + t.getMessage()); } } } /** * This method initializes PDFViewerBean * * @return com.qoppa.pdfViewer.PDFViewerBean */ private PDFViewerBean getPDFViewerBean() { if (m_ViewerBean == null) { m_ViewerBean = new PDFViewerBean(); m_ViewerBean.setName("PDFViewerBean"); m_ViewerBean.add(getToolbarOptions(), java.awt.BorderLayout.SOUTH); } return m_ViewerBean; } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { jPanel = new JPanel(); jPanel.setLayout(new BorderLayout ()); jPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.LOWERED)); jPanel.add(getPDFViewerBean(), BorderLayout.CENTER); } return jPanel; } /** * This method initializes ToolbarOptions * * @return javax.swing.JPanel */ private JPanel getToolbarOptions() { if (ToolbarOptions == null) { ToolbarOptions = new JPanel(); ToolbarOptions.setLayout(new BoxLayout(getToolbarOptions(), BoxLayout.Y_AXIS)); ToolbarOptions.add(getJcbShowToolbar(), null); ToolbarOptions.add(getJcbShowSelectToolbar(), null); } return ToolbarOptions; } /** * This method initializes jcbShowToolbar * * @return javax.swing.JCheckBox */ private JCheckBox getJcbShowToolbar() { if (jcbShowToolbar == null) { jcbShowToolbar = new JCheckBox(); jcbShowToolbar.setText("Show Toolbar"); jcbShowToolbar.setSelected(true); jcbShowToolbar.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { getPDFViewerBean().getToolbar().setVisible(jcbShowToolbar.isSelected()); } }); } return jcbShowToolbar; } /** * This method initializes jcbShowSelectToolbar * * @return javax.swing.JCheckBox */ private JCheckBox getJcbShowSelectToolbar() { if (jcbShowSelectToolbar == null) { jcbShowSelectToolbar = new JCheckBox(); jcbShowSelectToolbar.setText("Show Select Toolbar"); jcbShowSelectToolbar.setSelected(true); jcbShowSelectToolbar.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { getPDFViewerBean().getSelectToolbar().setVisible(jcbShowSelectToolbar.isSelected()); } }); } return jcbShowSelectToolbar; } private void displayError (String errorMsg) { JOptionPane.showMessageDialog(PDFViewerApplet.this, errorMsg); } } // @jve:decl-index=0:visual-constraint="10,10"