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;
}
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);
}
}
}
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);
}
Aggregations