Mega Code Archive

 
Categories / Java by API / Javax Swing Text
 

DefaultEditorKit selectWordAction

import javax.swing.*; import javax.swing.text.*; import java.util.Hashtable; import java.awt.event.*; import java.awt.BorderLayout; public class KeymapExample {   public static void main(String[] args) {     JTextArea area = new JTextArea(6, 32);     Keymap parent = area.getKeymap();     Keymap newmap = JTextComponent.addKeymap("KeymapExampleMap", parent);     KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK);     Action actionU = new UpWord();      newmap.addActionForKeyStroke(u, actionU);     Action actionList[] = area.getActions();     Hashtable lookup = new Hashtable();     for (int j=0; j < actionList.length; j+=1)       lookup.put(actionList[j].getValue(Action.NAME), actionList[j]);     KeyStroke L = KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_MASK);     Action actionL = (Action)lookup.get(DefaultEditorKit.selectLineAction);     newmap.addActionForKeyStroke(L, actionL);     KeyStroke W = KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK);     Action actionW = (Action)lookup.get(DefaultEditorKit.selectWordAction);     newmap.addActionForKeyStroke(W, actionW);     area.setKeymap(newmap);     JFrame f = new JFrame("KeymapExample");     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     f.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);     area.setText("www.\n rntsoft \n .com.");     f.pack();     f.setVisible(true);   }   public static class UpWord extends TextAction {     public UpWord() {       super("uppercase-word-action");     }     public void actionPerformed(ActionEvent e) {       JTextComponent comp = getTextComponent(e);       if (comp == null) return;       Document doc = comp.getDocument();       int start = comp.getSelectionStart();       int end = comp.getSelectionEnd();       try {         int left = javax.swing.text.Utilities.getWordStart(comp, start);         int right = javax.swing.text.Utilities.getWordEnd(comp, end);         String word = doc.getText(left, right-left);         doc.remove(left, right-left);         doc.insertString(left, word.toUpperCase(), null);         comp.setSelectionStart(start); // restore previous position/selection         comp.setSelectionEnd(end);       } catch (BadLocationException ble) { return; }     }   } }