Author: jahewson
Date: Mon Aug  3 04:26:52 2015
New Revision: 1693855

URL: http://svn.apache.org/r1693855
Log:
PDFBOX-2530: Clean up Find menu UI

Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
    
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamTextView.java
    
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/SearchPanel.java
    
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/Searcher.java

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java?rev=1693855&r1=1693854&r2=1693855&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java 
(original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java 
Mon Aug  3 04:26:52 2015
@@ -25,6 +25,7 @@ import java.awt.datatransfer.Transferabl
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowEvent;
 import java.io.ByteArrayOutputStream;
@@ -41,6 +42,7 @@ import java.util.Set;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.JComponent;
+import javax.swing.JFrame;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
@@ -90,33 +92,69 @@ import org.apache.pdfbox.tools.util.File
 import org.apache.pdfbox.tools.util.RecentFiles;
 
 /**
- *
+ * PDF Debugger.
+ * 
  * @author wurtz
  * @author Ben Litchfield
  */
-public class PDFDebugger extends javax.swing.JFrame
+public class PDFDebugger extends JFrame
 {
-    private TreeStatusPane statusPane;
-    private RecentFiles recentFiles;
-    private boolean isPageMode;
-
-    private PDDocument document;
-    private String currentFilePath;
-
     private static final Set<COSName> SPECIALCOLORSPACES =
-            new HashSet(Arrays.asList(COSName.INDEXED, COSName.SEPARATION, 
COSName.DEVICEN));
+            new HashSet<COSName>(Arrays.asList(COSName.INDEXED, 
COSName.SEPARATION, COSName.DEVICEN));
 
     private static final Set<COSName> OTHERCOLORSPACES =
-            new HashSet(Arrays.asList(COSName.ICCBASED, COSName.PATTERN, 
COSName.CALGRAY, COSName.CALRGB, COSName.LAB));
+            new HashSet<COSName>(Arrays.asList(COSName.ICCBASED, 
COSName.PATTERN, COSName.CALGRAY,
+                                 COSName.CALRGB, COSName.LAB));
 
     private static final String PASSWORD = "-password";
 
     private static final int SHORCUT_KEY_MASK =
             Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
     
+    private TreeStatusPane statusPane;
+    private RecentFiles recentFiles;
+    private boolean isPageMode;
+
+    private PDDocument document;
+    private String currentFilePath;
+    
     private static final String OS_NAME = 
System.getProperty("os.name").toLowerCase();
     private static final boolean IS_MAC_OS = OS_NAME.startsWith("mac os x");
     
+    private JScrollPane jScrollPane1;
+    private JScrollPane jScrollPane2;
+    private javax.swing.JSplitPane jSplitPane1;
+    private javax.swing.JTextPane jTextPane1;
+    private Tree tree;
+    private final JPanel documentPanel = new JPanel();
+    private javax.swing.JMenuBar menuBar;
+    
+    // file menu
+    private JMenu fileMenu;
+    private JMenuItem openMenuItem;
+    private JMenuItem openUrlMenuItem;
+    private JMenuItem saveAsMenuItem;
+    private JMenuItem saveMenuItem;
+    private JMenu recentFilesMenu;
+    private JMenuItem exitMenuItem;
+
+    // edit menu
+    private JMenu editMenu;
+    private JMenuItem copyMenuItem;
+    private JMenuItem pasteMenuItem;
+    private JMenuItem cutMenuItem;
+    private JMenuItem deleteMenuItem;
+
+    // edit > find meu
+    private JMenu findMenu;
+    private JMenuItem findMenuItem;
+    private JMenuItem findNextMenuItem;
+    private JMenuItem findPreviousMenuItem;
+
+    // view menu
+    private JMenu viewMenu;
+    private JMenuItem viewModeItem;
+    
     /**
      * Constructor.
      */
@@ -139,26 +177,9 @@ public class PDFDebugger extends javax.s
         jScrollPane2 = new JScrollPane();
         jTextPane1 = new javax.swing.JTextPane();
         menuBar = new javax.swing.JMenuBar();
-        fileMenu = new JMenu();
-        openMenuItem = new JMenuItem();
-        openUrlMenuItem = new JMenuItem();
-        saveMenuItem = new JMenuItem();
-        saveAsMenuItem = new JMenuItem();
-        recentFilesMenu = new JMenu();
-        exitMenuItem = new JMenuItem();
-        editMenu = new JMenu();
-        cutMenuItem = new JMenuItem();
-        copyMenuItem = new JMenuItem();
-        pasteMenuItem = new JMenuItem();
-        deleteMenuItem = new JMenuItem();
-        viewMenu = new JMenu();
-        viewModeItem = new JMenuItem();
-        helpMenu = new JMenu();
-        contentsMenuItem = new JMenuItem();
-        aboutMenuItem = new JMenuItem();
-
-        tree.setCellRenderer( new PDFTreeCellRenderer() );
-        tree.setModel( null );
+        
+        tree.setCellRenderer(new PDFTreeCellRenderer());
+        tree.setModel(null);
 
         setTitle("PDFBox Debugger");
 
@@ -170,7 +191,7 @@ public class PDFDebugger extends javax.s
                 tree.requestFocusInWindow();
                 super.windowOpened(windowEvent);
             }
-            
+
             @Override
             public void windowClosing(WindowEvent evt)
             {
@@ -200,16 +221,82 @@ public class PDFDebugger extends javax.s
         jSplitPane1.setLeftComponent(jScrollPane1);
 
         JScrollPane documentScroller = new JScrollPane();
-        documentScroller.setViewportView( documentPanel );
+        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 );
+        getContentPane().add(jSplitPane1, BorderLayout.CENTER);
+
+        // create menus
+        menuBar.add(createFileMenu());
+        menuBar.add(createEditMenu());
+        menuBar.add(createViewMenu());
+        setJMenuBar(menuBar);
+
+        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+        setBounds((screenSize.width-700)/2, (screenSize.height-600)/2, 700, 
600);
 
+        // 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)
+                {
+                    throw new RuntimeException(e);
+                }
+                catch (UnsupportedFlavorException e)
+                {
+                    throw new RuntimeException(e);
+                }
+            }
+        });
+
+        // Mac OS X file open/quit handler
+        if (IS_MAC_OS)
+        {
+            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);
+            }
+        }
+    }
+    
+    private JMenu createFileMenu()
+    {
+        fileMenu = new JMenu();
         fileMenu.setText("File");
+        
+        openMenuItem = new JMenuItem();
         openMenuItem.setText("Open...");
         openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 
SHORCUT_KEY_MASK));
         openMenuItem.addActionListener(new ActionListener()
@@ -222,7 +309,8 @@ public class PDFDebugger extends javax.s
         });
 
         fileMenu.add(openMenuItem);
-        
+
+        openUrlMenuItem = new JMenuItem();
         openUrlMenuItem.setText("Open URL...");
         openUrlMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, 
SHORCUT_KEY_MASK));
         openUrlMenuItem.addActionListener(new ActionListener()
@@ -243,10 +331,6 @@ public class PDFDebugger extends javax.s
         });
         fileMenu.add(openUrlMenuItem);
 
-        saveMenuItem.setText("Save");
-
-        saveAsMenuItem.setText("Save As ...");
-
         try
         {
             recentFiles = new RecentFiles(this.getClass(), 5);
@@ -256,11 +340,13 @@ public class PDFDebugger extends javax.s
             throw new RuntimeException(e);
         }
 
+        recentFilesMenu = new JMenu();
         recentFilesMenu.setText("Open Recent");
         recentFilesMenu.setEnabled(false);
         addRecentFileItems();
         fileMenu.add(recentFilesMenu);
 
+        exitMenuItem = new JMenuItem();
         exitMenuItem.setText("Exit");
         exitMenuItem.setAccelerator(KeyStroke.getKeyStroke("alt F4"));
         exitMenuItem.addActionListener(new ActionListener()
@@ -274,26 +360,49 @@ public class PDFDebugger extends javax.s
 
         if (!IS_MAC_OS)
         {
+            fileMenu.addSeparator();
             fileMenu.add(exitMenuItem);
         }
-
-        menuBar.add(fileMenu);
-
+        
+        return fileMenu;
+    }
+    
+    private JMenu createEditMenu()
+    {
+        editMenu = new JMenu();
         editMenu.setText("Edit");
+        
+        cutMenuItem = new JMenuItem();
         cutMenuItem.setText("Cut");
+        cutMenuItem.setEnabled(false);
         editMenu.add(cutMenuItem);
 
+        copyMenuItem = new JMenuItem();
         copyMenuItem.setText("Copy");
+        copyMenuItem.setEnabled(false);
         editMenu.add(copyMenuItem);
 
+        pasteMenuItem = new JMenuItem();
         pasteMenuItem.setText("Paste");
+        pasteMenuItem.setEnabled(false);
         editMenu.add(pasteMenuItem);
 
+        deleteMenuItem = new JMenuItem();
         deleteMenuItem.setText("Delete");
+        deleteMenuItem.setEnabled(false);
         editMenu.add(deleteMenuItem);
-
+        editMenu.addSeparator();
+        editMenu.add(createFindMenu());
+        
+        return editMenu;
+    }
+    
+    private JMenu createViewMenu()
+    {
+        viewMenu = new JMenu();
         viewMenu.setText("View");
 
+        viewModeItem = new JMenuItem();
         viewModeItem.setText("Show Pages");
         viewModeItem.addActionListener(new ActionListener()
         {
@@ -313,18 +422,8 @@ public class PDFDebugger extends javax.s
                 initTree();
             }
         });
-
         viewMenu.add(viewModeItem);
 
-        menuBar.add(viewMenu);
-
-        helpMenu.setText("Help");
-        contentsMenuItem.setText("Contents");
-        helpMenu.add(contentsMenuItem);
-
-        aboutMenuItem.setText("About");
-        helpMenu.add(aboutMenuItem);
-        
         ZoomMenu zoomMenu = ZoomMenu.getInstance();
         zoomMenu.setEnableMenu(false);
         viewMenu.add(zoomMenu.getMenu());
@@ -332,65 +431,84 @@ public class PDFDebugger extends javax.s
         RotationMenu rotationMenu = RotationMenu.getInstance();
         rotationMenu.setEnableMenu(false);
         viewMenu.add(rotationMenu.getMenu());
-
-        setJMenuBar(menuBar);
-
-        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-        setBounds((screenSize.width-700)/2, (screenSize.height-600)/2, 700, 
600);
-
-        // drag and drop to open files
-        setTransferHandler(new TransferHandler()
+        
+        return viewMenu;
+    }
+    
+    private JMenu createFindMenu()
+    {
+        findMenu = new JMenu("Find");
+        findMenu.setEnabled(false);
+        
+        findMenuItem = new JMenuItem();
+        findMenuItem.setActionCommand("find");
+        findMenuItem.setText("Find...");
+        findMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 
SHORCUT_KEY_MASK));
+        
+        findNextMenuItem = new JMenuItem();
+        findNextMenuItem.setText("Find Next");
+        if (IS_MAC_OS)
         {
-            @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)
-                {
-                    throw new RuntimeException(e);
-                }
-                catch (UnsupportedFlavorException e)
-                {
-                    throw new RuntimeException(e);
-                }
-            }
-        });
+            
findNextMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 
SHORCUT_KEY_MASK));
+        }
+        else
+        {
+            findNextMenuItem.setAccelerator(KeyStroke.getKeyStroke("F3"));
+        }
 
-        // Mac OS X file open/quit handler
+        findPreviousMenuItem = new JMenuItem();
+        findPreviousMenuItem.setText("Find Previous");
         if (IS_MAC_OS)
         {
-            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);
-            }
+            findPreviousMenuItem.setAccelerator(KeyStroke.getKeyStroke(
+                    KeyEvent.VK_G, SHORCUT_KEY_MASK | 
InputEvent.SHIFT_DOWN_MASK));
+        }
+        else
+        {
+            findPreviousMenuItem.setAccelerator(KeyStroke.getKeyStroke(
+                    KeyEvent.VK_F3, InputEvent.SHIFT_DOWN_MASK));
         }
-    }//GEN-END:initComponents
+        
+        findMenu.add(findMenuItem);
+        findMenu.add(findNextMenuItem);
+        findMenu.add(findPreviousMenuItem);
+        
+        return findMenu;
+    }
 
     /**
+     * Returns the File menu.
+     */
+    public JMenu getFindMenu()
+    {
+        return findMenu;
+    }
+
+    /**
+     * Returns the Edit > Find > Find menu item.
+     */
+    public JMenuItem getFindMenuItem()
+    {
+        return findMenuItem;
+    }
+
+    /**
+     * Returns the Edit > Find > Find Next menu item.
+     */
+    public JMenuItem getFindNextMenuItem()
+    {
+        return findNextMenuItem;
+    }
+
+    /**
+     * Returns the Edit > Find > Find Previous menu item.
+     */
+    public JMenuItem getFindPreviousMenuItem()
+    {
+        return findPreviousMenuItem;
+    }
+    
+    /**
      * This method is called via reflection on Mac OS X.
      */
     private void osxOpenFiles(String filename)
@@ -451,7 +569,7 @@ public class PDFDebugger extends javax.s
         {
             throw new RuntimeException(e);
         }
-    }//GEN-LAST:event_openMenuItemActionPerformed
+    }
 
     private void jTree1ValueChanged(TreeSelectionEvent evt)
     {
@@ -502,7 +620,7 @@ public class PDFDebugger extends javax.s
                 throw new RuntimeException(e);
             }
         }
-    }//GEN-LAST:event_jTree1ValueChanged
+    }
 
     private boolean isSpecialColorSpace(Object selectedNode)
     {
@@ -901,14 +1019,12 @@ public class PDFDebugger extends javax.s
                     sb.append('\n');
                     sb.append(element);
                 }
-                JOptionPane.showMessageDialog(null, "Error: " + 
sb.toString(),"Error",
+                JOptionPane.showMessageDialog(null, "Error: " + sb.toString(), 
"Error",
                         JOptionPane.ERROR_MESSAGE);
             }
         });
         
         final PDFDebugger viewer = new PDFDebugger();
-
-        
         
         // open file, if any
         String filename = null;
@@ -1071,7 +1187,6 @@ public class PDFDebugger extends javax.s
         }
     }
 
-
     /**
      * This will print out a message telling how to use this utility.
      */
@@ -1083,32 +1198,4 @@ public class PDFDebugger extends javax.s
                         "  <input-file>              The PDF document to be 
loaded\n"
         );
     }
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private JMenuItem aboutMenuItem;
-    private JMenuItem contentsMenuItem;
-    private JMenuItem copyMenuItem;
-    private JMenuItem cutMenuItem;
-    private JMenuItem deleteMenuItem;
-    private JMenu editMenu;
-    private JMenuItem exitMenuItem;
-    private JMenu fileMenu;
-    private JMenu helpMenu;
-    private JMenu recentFilesMenu;
-    private JMenu viewMenu;
-    private JMenuItem viewModeItem;
-    private JScrollPane jScrollPane1;
-    private JScrollPane jScrollPane2;
-    private javax.swing.JSplitPane jSplitPane1;
-    private javax.swing.JTextPane jTextPane1;
-    private Tree tree;
-    private javax.swing.JMenuBar menuBar;
-    private JMenuItem openMenuItem;
-    private JMenuItem openUrlMenuItem;
-    private JMenuItem pasteMenuItem;
-    private JMenuItem saveAsMenuItem;
-    private JMenuItem saveMenuItem;
-    private final JPanel documentPanel = new JPanel();
-    // End of variables declaration//GEN-END:variables
-
 }

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamTextView.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamTextView.java?rev=1693855&r1=1693854&r2=1693855&view=diff
==============================================================================
--- 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamTextView.java
 (original)
+++ 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamTextView.java
 Mon Aug  3 04:26:52 2015
@@ -18,20 +18,18 @@
 package org.apache.pdfbox.tools.pdfdebugger.streampane;
 
 import java.awt.Font;
-import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseMotionListener;
 import javax.swing.BoxLayout;
 import javax.swing.JComponent;
-import javax.swing.JFrame;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextPane;
-import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
 import javax.swing.event.AncestorEvent;
 import javax.swing.event.AncestorListener;
 import javax.swing.text.StyledDocument;
+import org.apache.pdfbox.tools.PDFDebugger;
 import 
org.apache.pdfbox.tools.pdfdebugger.streampane.tooltip.ToolTipController;
 import org.apache.pdfbox.tools.pdfdebugger.ui.textsearcher.Searcher;
 
@@ -77,8 +75,6 @@ class StreamTextView implements MouseMot
         mainPanel.add(scrollPane);
 
         searcher.getSearchPanel().setVisible(false);
-        searcher.setFindStroke(mainPanel, 
KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK));
-        searcher.setCloseStroke(mainPanel, 
KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK | 
KeyEvent.SHIFT_DOWN_MASK));
 
         mainPanel.addAncestorListener(this);
 
@@ -109,9 +105,9 @@ class StreamTextView implements MouseMot
     {
         if (ancestorEvent.getAncestor().equals(mainPanel))
         {
-            JFrame frame = (JFrame) SwingUtilities.getRoot(mainPanel);
-            frame.getJMenuBar().add(searcher.getMenu());
-            SwingUtilities.updateComponentTreeUI(frame.getJMenuBar());
+            PDFDebugger debugger = (PDFDebugger) 
SwingUtilities.getRoot(mainPanel);
+            debugger.getFindMenu().setEnabled(true);
+            searcher.addMenuListeners(debugger);
         }
     }
 
@@ -120,15 +116,14 @@ class StreamTextView implements MouseMot
     {
         if (ancestorEvent.getAncestor().equals(mainPanel))
         {
-            JFrame frame = (JFrame) SwingUtilities.getRoot(mainPanel);
-            frame.getJMenuBar().remove(searcher.getMenu());
-            SwingUtilities.updateComponentTreeUI(frame.getJMenuBar());
+            PDFDebugger debugger = (PDFDebugger) 
SwingUtilities.getRoot(mainPanel);
+            debugger.getFindMenu().setEnabled(false);
+            searcher.removeMenuListeners(debugger);
         }
     }
 
     @Override
     public void ancestorMoved(AncestorEvent ancestorEvent)
     {
-
     }
-}
\ No newline at end of file
+}

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/SearchPanel.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/SearchPanel.java?rev=1693855&r1=1693854&r2=1693855&view=diff
==============================================================================
--- 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/SearchPanel.java
 (original)
+++ 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/SearchPanel.java
 Mon Aug  3 04:26:52 2015
@@ -17,25 +17,26 @@
 
 package org.apache.pdfbox.tools.pdfdebugger.ui.textsearcher;
 
-import java.awt.Font;
+import java.awt.Color;
+import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ComponentListener;
-import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComponent;
 import javax.swing.JLabel;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentListener;
+import org.apache.pdfbox.tools.PDFDebugger;
 
 /**
  * @author Khyrul Bashar
@@ -49,11 +50,7 @@ class SearchPanel
     private JTextField searchField;
     private JLabel counterLabel;
     private JPanel panel;
-    private JMenu searchMenu;
-    private KeyStroke findStroke;
-    private KeyStroke closeStroke;
-    private KeyStroke nextStroke;
-    private KeyStroke previousStroke;
+    
     private Action closeAction = new AbstractAction()
     {
         @Override
@@ -61,8 +58,10 @@ class SearchPanel
         {
             panel.setVisible(false);
             closeAction.setEnabled(false);
+            panel.getParent().transferFocus();
         }
     };
+    
     private final Action findAction = new AbstractAction()
     {
         @Override
@@ -78,7 +77,6 @@ class SearchPanel
         }
     };
 
-
     /**
      * Constructor.
      * @param documentListener DocumentListener instance.
@@ -103,17 +101,14 @@ class SearchPanel
 
         counterLabel = new JLabel();
         counterLabel.setVisible(false);
-        counterLabel.setFont(new Font(Font.MONOSPACED, Font.BOLD, 13));
 
         JButton nextButton = new JButton();
         nextButton.setAction(nextAction);
         nextButton.setText("Next");
-        nextButton.setToolTipText("Find next");
 
         JButton previousButton = new JButton();
         previousButton.setAction(previousAction);
         previousButton.setText("Previous");
-        previousButton.setToolTipText("Find previous");
 
         caseSensitive = new JCheckBox("Match case");
         caseSensitive.setSelected(false);
@@ -122,26 +117,27 @@ class SearchPanel
 
         JButton crossButton = new JButton();
         crossButton.setAction(closeAction);
+        crossButton.setText("Done");
         closeAction.setEnabled(false);
-        crossButton.setHideActionText(true);
-        crossButton.setText("X");
-        crossButton.setToolTipText("Close");
-
-
+        
         panel = new JPanel();
+        panel.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, 
Color.LIGHT_GRAY));
+        panel.setBackground(new Color(230, 230, 230));
         panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
 
+        panel.add(Box.createHorizontalGlue());
         panel.add(searchField);
         panel.add(counterLabel);
-        panel.add(nextButton);
         panel.add(previousButton);
+        panel.add(nextButton);
         panel.add(caseSensitive);
+        panel.add(Box.createRigidArea(new Dimension(5, 0)));
         panel.add(crossButton);
 
         panel.addComponentListener(compListener);
 
-        setNextFindStroke(KeyStroke.getKeyStroke("F3"));
-        setPreviousStroke(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 
InputEvent.SHIFT_DOWN_MASK));
+        searchField.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
+                KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), closeAction);
     }
 
     boolean isCaseSensitive()
@@ -190,92 +186,19 @@ class SearchPanel
         closeAction.setEnabled(true);
     }
 
-    private JMenu createSearchMenu()
-    {
-        JMenuItem findMenuItem = new JMenuItem();
-        findMenuItem.setAction(findAction);
-        findMenuItem.setText("Find");
-        findMenuItem.setAccelerator(findStroke);
-
-        JMenuItem closeMenuItem = new JMenuItem();
-        closeMenuItem.setAction(closeAction);
-        closeMenuItem.setText("Close");
-        closeMenuItem.setAccelerator(closeStroke);
-
-        JMenuItem nextFindMenuItem = new JMenuItem();
-        nextFindMenuItem.setAction(nextAction);
-        nextFindMenuItem.setText("Find next");
-        nextFindMenuItem.setAccelerator(nextStroke);
-
-        JMenuItem previousMenuItem = new JMenuItem();
-        previousMenuItem.setAction(previousAction);
-        previousMenuItem.setText("Find previous");
-        previousMenuItem.setAccelerator(previousStroke);
-
-        JMenu menu = new JMenu("Search");
-
-        menu.add(findMenuItem);
-        menu.addSeparator();
-        menu.add(nextFindMenuItem);
-        menu.add(previousMenuItem);
-        menu.addSeparator();
-        menu.add(closeMenuItem);
-
-        return menu;
-    }
-
-    JMenu getSearchMenu()
-    {
-        if (searchMenu == null)
-        {
-            searchMenu = createSearchMenu();
-        }
-        return searchMenu;
-    }
-
-    void setFindStroke(JComponent parent, KeyStroke keyStroke)
+    public void addMenuListeners(PDFDebugger frame)
     {
-        if (findStroke != null)
-        {
-            
parent.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(findStroke);
-        }
-        findStroke = keyStroke;
-        addActionToInput(parent, "showPanle", 
JComponent.WHEN_IN_FOCUSED_WINDOW, findStroke, findAction);
-    }
-
-    void setCloseStroke(JComponent parent, KeyStroke keyStroke)
-    {
-        if (closeStroke != null)
-        {
-            
parent.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(closeStroke);
-        }
-        closeStroke = keyStroke;
-        addActionToInput(parent, "closePanel", 
JComponent.WHEN_IN_FOCUSED_WINDOW, closeStroke, closeAction);
-    }
-
-    void setNextFindStroke(KeyStroke keyStroke)
-    {
-        if (nextStroke != null)
-        {
-            
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(nextStroke);
-        }
-        nextStroke = keyStroke;
-        addActionToInput(panel, "nextFind", JComponent.WHEN_IN_FOCUSED_WINDOW, 
nextStroke, nextAction);
-    }
-
-    void setPreviousStroke(KeyStroke keyStroke)
-    {
-        if (previousStroke != null)
-        {
-            
panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(previousStroke);
-        }
-        previousStroke = keyStroke;
-        addActionToInput(panel, "previousFind", 
JComponent.WHEN_IN_FOCUSED_WINDOW, previousStroke, previousAction);
+        frame.getFindMenu().setEnabled(true);
+        frame.getFindMenuItem().addActionListener(findAction);
+        frame.getFindNextMenuItem().addActionListener(nextAction);
+        frame.getFindPreviousMenuItem().addActionListener(previousAction);
     }
 
-    private void addActionToInput(JComponent component, Object key, int state, 
KeyStroke keyStroke, Action action)
+    public void removeMenuListeners(PDFDebugger frame)
     {
-        component.getInputMap(state).put(keyStroke, key);
-        component.getActionMap().put(key, action);
+        frame.getFindMenu().setEnabled(false);
+        frame.getFindMenuItem().removeActionListener(findAction);
+        frame.getFindNextMenuItem().removeActionListener(nextAction);
+        frame.getFindPreviousMenuItem().removeActionListener(previousAction);
     }
 }

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/Searcher.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/Searcher.java?rev=1693855&r1=1693854&r2=1693855&view=diff
==============================================================================
--- 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/Searcher.java
 (original)
+++ 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/ui/textsearcher/Searcher.java
 Mon Aug  3 04:26:52 2015
@@ -25,10 +25,7 @@ import java.util.List;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.JMenu;
 import javax.swing.JPanel;
-import javax.swing.KeyStroke;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
@@ -37,6 +34,7 @@ import javax.swing.text.BadLocationExcep
 import javax.swing.text.DefaultHighlighter;
 import javax.swing.text.Highlighter;
 import javax.swing.text.JTextComponent;
+import org.apache.pdfbox.tools.PDFDebugger;
 
 /**
  * @author Khyrul Bashar
@@ -256,18 +254,13 @@ public class Searcher implements Documen
         textComponent.getHighlighter().removeAllHighlights();
     }
 
-    public JMenu getMenu()
+    public void addMenuListeners(PDFDebugger frame)
     {
-        return searchPanel.getSearchMenu();
+        searchPanel.addMenuListeners(frame);
     }
 
-    public void setFindStroke(JComponent parent, KeyStroke keyStroke)
+    public void removeMenuListeners(PDFDebugger frame)
     {
-        searchPanel.setFindStroke(parent, keyStroke);
-    }
-
-    public void setCloseStroke(JComponent parent, KeyStroke keyStroke)
-    {
-        searchPanel.setCloseStroke(parent, keyStroke);
+        searchPanel.removeMenuListeners(frame);
     }
 }


Reply via email to