Class RecentSearches

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.util.EventListener

    public class RecentSearches
    extends java.lang.Object
    implements java.awt.event.ActionListener
    Maintains a list of recent searches and persists this list automatically using Preferences. A recent searches popup menu can be installed on a JXSearchField using #install(JXSearchField).
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  RecentSearches.RecentSearchesPopup
      The popup menu returned by RecentSearches#createPopupMenu(JXSearchField).
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<javax.swing.event.ChangeListener> listeners  
      private int maxRecents  
      private java.util.prefs.Preferences prefsNode  
      private java.util.List<java.lang.String> recentSearches  
    • Constructor Summary

      Constructors 
      Constructor Description
      RecentSearches​(java.lang.String saveName)
      Creates a list of recent searches and uses saveName to persist this list under the Preferences user root node.
      RecentSearches​(java.util.prefs.Preferences prefs, java.lang.String saveName)
      Creates a list of recent searches and uses saveName to persist this list under the prefs node.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent e)
      Calls put(String) with the ActionEvents action command as the search string.
      void addChangeListener​(javax.swing.event.ChangeListener l)
      Add a change listener.
      protected javax.swing.JPopupMenu createPopupMenu​(javax.swing.JTextField searchField)
      Creates the recent searches popup menu which will be used by #install(JXSearchField) to set a search popup menu on searchField.
      private void fireChangeEvent()  
      javax.swing.event.ChangeListener[] getChangeListeners()
      Returns all registered ChangeListeners.
      int getLength()
      The number of recent searches.
      int getMaxRecents()
      Returns the maximum number of recent searches.
      java.lang.String[] getRecentSearches()
      Returns all recent searches in this list.
      void install​(javax.swing.JTextField searchField)
      Install a recent the searches popup menu returned by #createPopupMenu(JXSearchField) on searchField.
      private void load()  
      void put​(java.lang.String searchString)
      Add a search string as the first element.
      void removeAll()
      Remove all recent searches.
      void removeChangeListener​(javax.swing.event.ChangeListener l)
      Remove a change listener.
      private void save()  
      void setMaxRecents​(int maxRecents)
      Set the maximum number of recent searches.
      void uninstall​(JXSearchField searchField)
      Remove the recent searches popup from searchField when installed and stop listening for ActionEvents fired by the search field.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • prefsNode

        private java.util.prefs.Preferences prefsNode
      • maxRecents

        private int maxRecents
      • recentSearches

        private java.util.List<java.lang.String> recentSearches
      • listeners

        private java.util.List<javax.swing.event.ChangeListener> listeners
    • Constructor Detail

      • RecentSearches

        public RecentSearches​(java.lang.String saveName)
        Creates a list of recent searches and uses saveName to persist this list under the Preferences user root node. Existing entries will be loaded automatically.
        Parameters:
        saveName - a unique name for saving this list of recent searches
      • RecentSearches

        public RecentSearches​(java.util.prefs.Preferences prefs,
                              java.lang.String saveName)
        Creates a list of recent searches and uses saveName to persist this list under the prefs node. Existing entries will be loaded automatically.
        Parameters:
        prefsNode - the preferences node under which this list will be persisted. If prefsNode is null the preferences node will be set to the user root node
        saveName - a unique name for saving this list of recent searches. If saveName is null, the list will not be persisted
    • Method Detail

      • load

        private void load()
      • save

        private void save()
      • put

        public void put​(java.lang.String searchString)
        Add a search string as the first element. If the search string is null or empty nothing will be added. If the search string already exists, the old element will be removed. The modified list will automatically be persisted. If the number of elements exceeds the maximum number of entries, the last entry will be removed.
        Parameters:
        searchString - the search string to add
        See Also:
        getMaxRecents()
      • getRecentSearches

        public java.lang.String[] getRecentSearches()
        Returns all recent searches in this list.
        Returns:
        the recent searches
      • getLength

        public int getLength()
        The number of recent searches.
        Returns:
        number of recent searches
      • removeAll

        public void removeAll()
        Remove all recent searches.
      • getMaxRecents

        public int getMaxRecents()
        Returns the maximum number of recent searches.
        Returns:
        the maximum number of recent searches
        See Also:
        put(String)
      • setMaxRecents

        public void setMaxRecents​(int maxRecents)
        Set the maximum number of recent searches.
        Parameters:
        maxRecents - maximum number of recent searches
        See Also:
        put(String)
      • addChangeListener

        public void addChangeListener​(javax.swing.event.ChangeListener l)
        Add a change listener. A ChangeEvent will be fired whenever a search is added or removed.
        Parameters:
        l - the ChangeListener
      • removeChangeListener

        public void removeChangeListener​(javax.swing.event.ChangeListener l)
        Remove a change listener.
        Parameters:
        l - a registered ChangeListener
      • getChangeListeners

        public javax.swing.event.ChangeListener[] getChangeListeners()
        Returns all registered ChangeListeners.
        Returns:
        all registered ChangeListeners
      • fireChangeEvent

        private void fireChangeEvent()
      • createPopupMenu

        protected javax.swing.JPopupMenu createPopupMenu​(javax.swing.JTextField searchField)
        Creates the recent searches popup menu which will be used by #install(JXSearchField) to set a search popup menu on searchField. Override to return a custom popup menu.
        Parameters:
        searchField - the search field the returned popup menu will be installed on
        Returns:
        the recent searches popup menu
      • install

        public void install​(javax.swing.JTextField searchField)
        Install a recent the searches popup menu returned by #createPopupMenu(JXSearchField) on searchField. Also registers an ActionListener on searchField and adds the search string to the list of recent searches whenever a ActionEvent is received. Uses NativeSearchFieldSupport to achieve compatibility with the native search field support provided by the Mac Look And Feel since Mac OS 10.5.
        Parameters:
        searchField - the search field to install a recent searches popup menu on
      • uninstall

        public void uninstall​(JXSearchField searchField)
        Remove the recent searches popup from searchField when installed and stop listening for ActionEvents fired by the search field.
        Parameters:
        searchField - uninstall recent searches popup menu
      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent e)
        Calls put(String) with the ActionEvents action command as the search string.
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener