Search in sources :

Example 1 with ErrorDialog

use of org.apache.pdfbox.debugger.ui.ErrorDialog in project pdfbox by apache.

the class PDFDebugger method createFileMenu.

private JMenu createFileMenu() {
    JMenuItem openMenuItem = new JMenuItem("Open...");
    openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORCUT_KEY_MASK));
    openMenuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            openMenuItemActionPerformed(evt);
        }
    });
    JMenu fileMenu = new JMenu("File");
    fileMenu.add(openMenuItem);
    fileMenu.setMnemonic('F');
    JMenuItem openUrlMenuItem = new JMenuItem("Open URL...");
    openUrlMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, SHORCUT_KEY_MASK));
    openUrlMenuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            String urlString = JOptionPane.showInputDialog("Enter an URL");
            if (urlString == null || urlString.isEmpty()) {
                return;
            }
            try {
                readPDFurl(urlString, "");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    });
    fileMenu.add(openUrlMenuItem);
    reopenMenuItem = new JMenuItem("Reopen");
    reopenMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, SHORCUT_KEY_MASK));
    reopenMenuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            try {
                if (currentFilePath.startsWith("http")) {
                    readPDFurl(currentFilePath, "");
                } else {
                    readPDFFile(currentFilePath, "");
                }
            } catch (IOException e) {
                new ErrorDialog(e).setVisible(true);
            }
        }
    });
    reopenMenuItem.setEnabled(false);
    fileMenu.add(reopenMenuItem);
    try {
        recentFiles = new RecentFiles(this.getClass(), 5);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    recentFilesMenu = new JMenu("Open Recent");
    recentFilesMenu.setEnabled(false);
    addRecentFileItems();
    fileMenu.add(recentFilesMenu);
    printMenuItem = new JMenuItem("Print");
    printMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, SHORCUT_KEY_MASK));
    printMenuItem.setEnabled(false);
    printMenuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            printMenuItemActionPerformed(evt);
        }
    });
    if (!IS_MAC_OS) {
        fileMenu.addSeparator();
        fileMenu.add(printMenuItem);
    }
    JMenuItem exitMenuItem = new JMenuItem("Exit");
    exitMenuItem.setAccelerator(KeyStroke.getKeyStroke("alt F4"));
    exitMenuItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            exitMenuItemActionPerformed(evt);
        }
    });
    if (!IS_MAC_OS) {
        fileMenu.addSeparator();
        fileMenu.add(exitMenuItem);
    }
    return fileMenu;
}
Also used : ActionListener(java.awt.event.ActionListener) ActionEvent(java.awt.event.ActionEvent) ErrorDialog(org.apache.pdfbox.debugger.ui.ErrorDialog) COSString(org.apache.pdfbox.cos.COSString) IOException(java.io.IOException) JMenuItem(javax.swing.JMenuItem) JMenu(javax.swing.JMenu) IOException(java.io.IOException) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) InvalidPasswordException(org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException) PrinterException(java.awt.print.PrinterException) RecentFiles(org.apache.pdfbox.debugger.ui.RecentFiles)

Example 2 with ErrorDialog

use of org.apache.pdfbox.debugger.ui.ErrorDialog in project pdfbox by apache.

the class PDFDebugger method initComponents.

/**
 * This method is called from within the constructor to initialize the form.
 */
private void initComponents() {
    jSplitPane1 = new javax.swing.JSplitPane();
    jScrollPane1 = new JScrollPane();
    tree = new Tree(this);
    jScrollPane2 = new JScrollPane();
    jTextPane1 = new javax.swing.JTextPane();
    tree.setCellRenderer(new PDFTreeCellRenderer());
    tree.setModel(null);
    setTitle("Apache PDFBox Debugger");
    addWindowListener(new java.awt.event.WindowAdapter() {

        @Override
        public void windowOpened(WindowEvent windowEvent) {
            tree.requestFocusInWindow();
            super.windowOpened(windowEvent);
        }

        @Override
        public void windowClosing(WindowEvent evt) {
            exitForm(evt);
        }
    });
    jScrollPane1.setBorder(new BevelBorder(BevelBorder.RAISED));
    jScrollPane1.setPreferredSize(new Dimension(350, 500));
    tree.addTreeSelectionListener(new TreeSelectionListener() {

        @Override
        public void valueChanged(TreeSelectionEvent evt) {
            jTree1ValueChanged(evt);
        }
    });
    jScrollPane1.setViewportView(tree);
    jSplitPane1.setRightComponent(jScrollPane2);
    jSplitPane1.setDividerSize(3);
    jScrollPane2.setPreferredSize(new Dimension(300, 500));
    jScrollPane2.setViewportView(jTextPane1);
    jSplitPane1.setLeftComponent(jScrollPane1);
    JScrollPane documentScroller = new JScrollPane();
    documentScroller.setViewportView(documentPanel);
    statusPane = new TreeStatusPane(tree);
    statusPane.getPanel().setBorder(new BevelBorder(BevelBorder.RAISED));
    statusPane.getPanel().setPreferredSize(new Dimension(300, 25));
    getContentPane().add(statusPane.getPanel(), BorderLayout.PAGE_START);
    getContentPane().add(jSplitPane1, BorderLayout.CENTER);
    statusBar = new ReaderBottomPanel();
    getContentPane().add(statusBar, BorderLayout.SOUTH);
    // create menus
    JMenuBar menuBar = new JMenuBar();
    menuBar.add(createFileMenu());
    menuBar.add(createEditMenu());
    ViewMenu viewMenu = ViewMenu.getInstance(this);
    menuBar.add(viewMenu.getMenu());
    setJMenuBar(menuBar);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int width = 1000;
    int height = 970;
    setBounds((screenSize.width - width) / 2, (screenSize.height - height) / 2, width, height);
    // drag and drop to open files
    setTransferHandler(new TransferHandler() {

        @Override
        public boolean canImport(TransferSupport transferSupport) {
            return transferSupport.isDataFlavorSupported(DataFlavor.javaFileListFlavor);
        }

        @Override
        @SuppressWarnings("unchecked")
        public boolean importData(TransferSupport transferSupport) {
            try {
                Transferable transferable = transferSupport.getTransferable();
                List<File> files = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
                readPDFFile(files.get(0), "");
                return true;
            } catch (IOException e) {
                new ErrorDialog(e).setVisible(true);
                return true;
            } catch (UnsupportedFlavorException e) {
                throw new RuntimeException(e);
            }
        }
    });
    // Mac OS X file open/quit handler
    if (IS_MAC_OS && !isMinJdk9()) {
        // TODO this needs to be rewritten for JDK9, see PDFBOX-4013
        try {
            Method osxOpenFiles = getClass().getDeclaredMethod("osxOpenFiles", String.class);
            osxOpenFiles.setAccessible(true);
            OSXAdapter.setFileHandler(this, osxOpenFiles);
            Method osxQuit = getClass().getDeclaredMethod("osxQuit");
            osxQuit.setAccessible(true);
            OSXAdapter.setQuitHandler(this, osxQuit);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }
}
Also used : BevelBorder(javax.swing.border.BevelBorder) TreeSelectionListener(javax.swing.event.TreeSelectionListener) TreeStatusPane(org.apache.pdfbox.debugger.treestatus.TreeStatusPane) PDFTreeCellRenderer(org.apache.pdfbox.debugger.ui.PDFTreeCellRenderer) Tree(org.apache.pdfbox.debugger.ui.Tree) ViewMenu(org.apache.pdfbox.debugger.ui.ViewMenu) List(java.util.List) JScrollPane(javax.swing.JScrollPane) Transferable(java.awt.datatransfer.Transferable) ErrorDialog(org.apache.pdfbox.debugger.ui.ErrorDialog) Dimension(java.awt.Dimension) IOException(java.io.IOException) Method(java.lang.reflect.Method) UnsupportedFlavorException(java.awt.datatransfer.UnsupportedFlavorException) WindowEvent(java.awt.event.WindowEvent) TransferHandler(javax.swing.TransferHandler) TreeSelectionEvent(javax.swing.event.TreeSelectionEvent) ReaderBottomPanel(org.apache.pdfbox.debugger.ui.ReaderBottomPanel) File(java.io.File) JMenuBar(javax.swing.JMenuBar)

Example 3 with ErrorDialog

use of org.apache.pdfbox.debugger.ui.ErrorDialog in project pdfbox by apache.

the class PDFDebugger method main.

/**
 * Entry point.
 *
 * @param args the command line arguments
 * @throws Exception If anything goes wrong.
 */
public static void main(String[] args) throws Exception {
    try {
        // force KCMS (faster than LCMS) if available
        Class.forName("sun.java2d.cmm.kcms.KcmsServiceProvider");
        System.setProperty("sun.java2d.cmm", "sun.java2d.cmm.kcms.KcmsServiceProvider");
    } catch (ClassNotFoundException e) {
        LOG.debug("KCMS service not found - using LCMS", e);
    }
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    if (System.getProperty("apple.laf.useScreenMenuBar") == null) {
        System.setProperty("apple.laf.useScreenMenuBar", "true");
    }
    // handle uncaught exceptions
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

        @Override
        public void uncaughtException(Thread thread, Throwable throwable) {
            new ErrorDialog(throwable).setVisible(true);
        }
    });
    // See discussion in PDFBOX-3988
    if (PDType1Font.COURIER.isStandard14()) {
        // Yes this is always true
        PDDeviceCMYK.INSTANCE.toRGB(new float[] { 0, 0, 0, 0 });
        PDDeviceRGB.INSTANCE.toRGB(new float[] { 0, 0, 0 });
        IIORegistry.getDefaultInstance();
    }
    // open file, if any
    String filename = null;
    String password = "";
    boolean viewPages = true;
    for (int i = 0; i < args.length; i++) {
        switch(args[i]) {
            case PASSWORD:
                i++;
                if (i >= args.length) {
                    usage();
                }
                password = args[i];
                break;
            case VIEW_STRUCTURE:
                viewPages = false;
                break;
            default:
                filename = args[i];
                break;
        }
    }
    final PDFDebugger viewer = new PDFDebugger(viewPages);
    if (filename != null) {
        File file = new File(filename);
        if (file.exists()) {
            viewer.readPDFFile(filename, password);
        }
    }
    viewer.setVisible(true);
}
Also used : ErrorDialog(org.apache.pdfbox.debugger.ui.ErrorDialog) COSString(org.apache.pdfbox.cos.COSString) File(java.io.File)

Aggregations

ErrorDialog (org.apache.pdfbox.debugger.ui.ErrorDialog)3 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)2 File (java.io.File)2 IOException (java.io.IOException)2 COSString (org.apache.pdfbox.cos.COSString)2 Dimension (java.awt.Dimension)1 Transferable (java.awt.datatransfer.Transferable)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 WindowEvent (java.awt.event.WindowEvent)1 PrinterException (java.awt.print.PrinterException)1 Method (java.lang.reflect.Method)1 List (java.util.List)1 JMenu (javax.swing.JMenu)1 JMenuBar (javax.swing.JMenuBar)1 JMenuItem (javax.swing.JMenuItem)1 JScrollPane (javax.swing.JScrollPane)1 TransferHandler (javax.swing.TransferHandler)1 BevelBorder (javax.swing.border.BevelBorder)1 TreeSelectionEvent (javax.swing.event.TreeSelectionEvent)1