CreateCmd

JTextArea comp = new JTextArea();

// Bind F2 to the lowercase action
String actionName = "Lowercase";
comp.getInputMap().put(KeyStroke.getKeyStroke("F2"), actionName);

// Install the action
comp.getActionMap().put(actionName,
    new TextAction(actionName) {
        public void actionPerformed(ActionEvent evt) {
            lowercaseSelection(getTextComponent(evt));
        }
    }
);

public static void lowercaseSelection(JTextComponent comp) {
    if (comp.getSelectionStart() == comp.getSelectionEnd()) {
        // There is no selection, only a caret
        if (comp.getCaretPosition() < comp.getDocument().getLength()) {
            // The caret must be at least one position left of the end
            try {
                int pos = comp.getCaretPosition();
                Document doc = comp.getDocument();
                String str = doc.getText(pos, 1).toLowerCase();

                doc.remove(pos, 1);
                doc.insertString(pos, str, null);
                comp.moveCaretPosition(pos+1);
            } catch (BadLocationException e) {
            }
        }
    } else {
        // There is a selection
        int s = comp.getSelectionStart();
        int e = comp.getSelectionEnd();

        comp.replaceSelection(comp.getSelectedText().toLowerCase());
        comp.select(s, e);
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.