Class MnemonicUtils


  • public final class MnemonicUtils
    extends java.lang.Object
    Configures the text, mnemonic and mnemonic index in Actions, JLabels, and AbstractButtons. The term marked text is used for Strings that contain a marker character that marks both the mnemonic and its index in the resulting plain text.

    To set a mnemonic, add an ampersand ('&') before the character that should be the mnemonic, for example "&Save". If your text has multiple ampersands, only the first one is used to mark the mnemonic; the other ampersands appear as normal text. For example "&Look&Feel" has the first 'L' has mnemonic. If you want to use the ampersand itself in the text, use two consecutive ampersands for any ampersand that precede the one that is used to mark the mnemonic. For example the marked text "R&&D D&epartment" has "R&D Department" as text and the mnemonic is 'E'.

    Examples:

    Marked Text Plain Text Mnemonic Mnemonic Index Comment
    Save Save 0 -1 No mnemonic
    &Save Save 'S' 0  
    Save &as Save as 'A' 5 Second 'a' marked
    Look&Feel LookFeel 'F' 4 & should be quoted
    Look&&Feel Look&Feel 0 -1 & is quoted
    &Look&Feel Look&Feel L 0 Second & needs no quote
    Look & Feel Look & Feel 0 -1 Whitespace cannot be marked
    R&&D D&epartment R&D Department 'E' 5 First & is quoted
    <html>a&b</html> <html>a<u>b</u></html> 'B' -1 'b' is underlined
    <html>R&amp;D D&ep.</html> <html>R&amp;D D<u>e</u>p.</html> 'B' -1 HTML &amp; doesn't mark
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) static char MNEMONIC_MARKER
      The single mnemonic marker.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private MnemonicUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void configure​(javax.swing.AbstractButton target, java.lang.String markedText)
      Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'.
      static void configure​(javax.swing.Action target, java.lang.String markedText)
      Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'.
      static void configure​(javax.swing.JLabel target, java.lang.String markedText)
      Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'.
      private static void configure0​(javax.swing.AbstractButton button, MnemonicUtils.MnemonicText mnemonicText)  
      private static void configure0​(javax.swing.Action action, MnemonicUtils.MnemonicText mnemonicText)  
      private static void configure0​(javax.swing.JLabel label, MnemonicUtils.MnemonicText mnemonicText)  
      (package private) static int mnemonic​(java.lang.String markedText)
      Extracts and returns the mnemonic from the given marked text.
      (package private) static int mnemonicIndex​(java.lang.String markedText)
      Finds and returns the index of the mnemonic in the marked text.
      static java.lang.String plainText​(java.lang.String markedText)
      Returns the plain text for the given marked text by removing the mnemonic marker and marker quotes - if any.
      • Methods inherited from class java.lang.Object

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

      • MNEMONIC_MARKER

        static final char MNEMONIC_MARKER
        The single mnemonic marker. Future versions of this class shall support other markers, for example the underline char ('_').
        See Also:
        Constant Field Values
    • Constructor Detail

      • MnemonicUtils

        private MnemonicUtils()
    • Method Detail

      • configure

        public static void configure​(javax.swing.AbstractButton target,
                                     java.lang.String markedText)
        Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'. For example if markedText is "Save &as", the text will be set to "Save as", the mnemonic is 'a', and the mnemonic index is 5.
        Parameters:
        target - the button to be configured
        markedText - the text with optional mnemonic marker
        Throws:
        java.lang.NullPointerException - if target is null
      • configure

        public static void configure​(javax.swing.Action target,
                                     java.lang.String markedText)
        Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'. For example if markedText is "Save &as", the text will be set to "Save as", the mnemonic is 'a', and the mnemonic index is 5.
        Parameters:
        target - the Action to be configured
        markedText - the text with optional mnemonic marker
        Throws:
        java.lang.NullPointerException - if target is null
      • configure

        public static void configure​(javax.swing.JLabel target,
                                     java.lang.String markedText)
        Configures the text, mnemonic and mnemonic index for target using the given text that can be marked with the mnemonic marker '&'. For example if markedText is "Save &as", the text will be set to "Save as", the mnemonic is 'a', and the mnemonic index is 5.
        Parameters:
        target - the label to be configured
        markedText - the text with optional mnemonic marker
        Throws:
        java.lang.NullPointerException - if target is null
      • plainText

        public static java.lang.String plainText​(java.lang.String markedText)
        Returns the plain text for the given marked text by removing the mnemonic marker and marker quotes - if any. If the marked text is HTML, the plain text has the mnemonic character underlined. See the MnemonicUtils class comment for information about how to mark a mnemonic and how to quote a marker.
         MnemonicUtils.plainText("Save")             == "Save"
         MnemonicUtils.plainText("&Save")            == "Save"
         MnemonicUtils.plainText("&Look&Feel")       == "Look&Feel"
         MnemonicUtils.plainText("Look & Feel")      == "Look & Feel"
         MnemonicUtils.plainText("R&&D D&epartment") == "R&D Department"
         MnemonicUtils.plainText("<html>a&b</html>") == "<html>a<u>b</u></html>"
         
        Parameters:
        markedText - the text that may contain a mnemonic marker
        Returns:
        the text without mnemonic marker and marker quotes
      • mnemonic

        static int mnemonic​(java.lang.String markedText)
        Extracts and returns the mnemonic from the given marked text.
        Parameters:
        markedText - the text with optional mnemonic marker
        Returns:
        the mnemonic or 0 if no mnemonic is marked
      • mnemonicIndex

        static int mnemonicIndex​(java.lang.String markedText)
        Finds and returns the index of the mnemonic in the marked text.
        Parameters:
        markedText - the text with optional mnemonic marker
        Returns:
        the mnemonic index or -1 if there's no mnemonic or the text is HTML