/[classpath]/classpath/javax/swing/text/JTextComponent.java
ViewVC logotype

Diff of /classpath/javax/swing/text/JTextComponent.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13.2.13 by gnu_andrew, Wed Nov 2 00:44:03 2005 UTC revision 1.13.2.14 by gnu_andrew, Sun Nov 27 21:00:42 2005 UTC
# Line 50  import java.awt.datatransfer.StringSelec Line 50  import java.awt.datatransfer.StringSelec
50  import java.awt.datatransfer.Transferable;  import java.awt.datatransfer.Transferable;
51  import java.awt.datatransfer.UnsupportedFlavorException;  import java.awt.datatransfer.UnsupportedFlavorException;
52  import java.awt.event.ActionEvent;  import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;  
53  import java.awt.event.InputMethodListener;  import java.awt.event.InputMethodListener;
54  import java.awt.event.KeyEvent;  import java.awt.event.KeyEvent;
55  import java.awt.event.MouseEvent;  import java.awt.event.MouseEvent;
# Line 73  import javax.swing.JViewport; Line 72  import javax.swing.JViewport;
72  import javax.swing.KeyStroke;  import javax.swing.KeyStroke;
73  import javax.swing.Scrollable;  import javax.swing.Scrollable;
74  import javax.swing.SwingConstants;  import javax.swing.SwingConstants;
 import javax.swing.Timer;  
75  import javax.swing.TransferHandler;  import javax.swing.TransferHandler;
76  import javax.swing.UIManager;  import javax.swing.UIManager;
77  import javax.swing.event.CaretEvent;  import javax.swing.event.CaretEvent;
# Line 304  public abstract class JTextComponent ext Line 302  public abstract class JTextComponent ext
302    }    }
303    
304    /**    /**
    * The timer that lets the caret blink.  
    */  
   private class CaretBlinkTimer extends Timer implements ActionListener  
   {  
     /**  
      * Creates a new CaretBlinkTimer object with a default delay of 1 second.  
      */  
     public CaretBlinkTimer()  
     {  
       super(1000, null);  
       addActionListener(this);  
     }  
   
     /**  
      * Lets the caret blink.  
      */  
     public void actionPerformed(ActionEvent ev)  
     {  
       Caret c = caret;  
       if (c != null)  
         c.setVisible(!c.isVisible());  
     }  
   
     /**  
      * Updates the blink delay according to the current caret.  
      */  
     public void update()  
     {  
       stop();  
       Caret c = caret;  
       if (c != null)  
         {  
           setDelay(c.getBlinkRate());  
           if (editable)  
             start();  
           else  
             c.setVisible(false);  
         }  
     }  
   }  
   
   /**  
305     * According to <a     * According to <a
306     * href="http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html">this     * href="http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html">this
307     * report</a>, a pair of private classes wraps a {@link     * report</a>, a pair of private classes wraps a {@link
# Line 701  public abstract class JTextComponent ext Line 657  public abstract class JTextComponent ext
657    private char focusAccelerator = '\0';    private char focusAccelerator = '\0';
658    private NavigationFilter navigationFilter;    private NavigationFilter navigationFilter;
659    
   private CaretBlinkTimer caretBlinkTimer;  
   
660    /**    /**
661     * Get a Keymap from the global keymap table, by name.     * Get a Keymap from the global keymap table, by name.
662     *     *
# Line 910  public abstract class JTextComponent ext Line 864  public abstract class JTextComponent ext
864      Hashtable acts = new Hashtable(actions.length);      Hashtable acts = new Hashtable(actions.length);
865      for (int i = 0; i < actions.length; ++i)      for (int i = 0; i < actions.length; ++i)
866        acts.put(actions[i].getValue(Action.NAME), actions[i]);        acts.put(actions[i].getValue(Action.NAME), actions[i]);
867      for (int i = 0; i < bindings.length; ++i)        for (int i = 0; i < bindings.length; ++i)
868        if (acts.containsKey(bindings[i].actionName))        if (acts.containsKey(bindings[i].actionName))
869          map.addActionForKeyStroke(bindings[i].key, (Action) acts.get(bindings[i].actionName));          map.addActionForKeyStroke(bindings[i].key, (Action) acts.get(bindings[i].actionName));
870    }    }
# Line 960  public abstract class JTextComponent ext Line 914  public abstract class JTextComponent ext
914          creatingKeymap = true;          creatingKeymap = true;
915        }        }
916    
     caretBlinkTimer = new CaretBlinkTimer();  
   
917      setFocusable(true);      setFocusable(true);
918      setEditable(true);      setEditable(true);
919      enableEvents(AWTEvent.KEY_EVENT_MASK);      enableEvents(AWTEvent.KEY_EVENT_MASK);
# Line 969  public abstract class JTextComponent ext Line 921  public abstract class JTextComponent ext
921            
922      // need to do this after updateUI()      // need to do this after updateUI()
923      if (creatingKeymap)      if (creatingKeymap)
924        loadKeymap(defkeymap,        loadKeymap(
925                   new KeyBinding[] {                   defkeymap,
926                     new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0),                   new KeyBinding[] {
927                                    DefaultEditorKit.backwardAction),                       new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0),
928                     new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0),                                      DefaultEditorKit.backwardAction),
929                                    DefaultEditorKit.forwardAction),                       new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0),
930                     new KeyBinding(KeyStroke.getKeyStroke("typed \b"),                                      DefaultEditorKit.forwardAction),
931                                    DefaultEditorKit.deletePrevCharAction),                       new KeyBinding(KeyStroke.getKeyStroke("typed \b"),
932                     new KeyBinding(KeyStroke.getKeyStroke("typed \u007f"),                                      DefaultEditorKit.deletePrevCharAction),
933                                    DefaultEditorKit.deleteNextCharAction)                                         new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_X,
934                   },                                                             KeyEvent.CTRL_DOWN_MASK),
935                                        DefaultEditorKit.cutAction),
936                         new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_C,
937                                                               KeyEvent.CTRL_DOWN_MASK),
938                                        DefaultEditorKit.copyAction),
939                         new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_V,
940                                                               KeyEvent.CTRL_DOWN_MASK),
941                                        DefaultEditorKit.pasteAction),
942                         new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT,
943                                                                KeyEvent.SHIFT_DOWN_MASK),
944                                         DefaultEditorKit.selectionBackwardAction),
945                         new KeyBinding(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT,
946                                                               KeyEvent.SHIFT_DOWN_MASK),
947                                        DefaultEditorKit.selectionForwardAction),
948                         new KeyBinding(KeyStroke.getKeyStroke("typed \u007f"),
949                                        DefaultEditorKit.deleteNextCharAction)
950                                        },
951                   getActions());                   getActions());
952    }    }
953    
# Line 1200  public abstract class JTextComponent ext Line 1168  public abstract class JTextComponent ext
1168      if (editable == newValue)      if (editable == newValue)
1169        return;        return;
1170    
     if (newValue == true)  
       caretBlinkTimer.start();  
     else  
       {  
         caretBlinkTimer.stop();  
         caret.setVisible(false);  
       }  
   
1171      boolean oldValue = editable;      boolean oldValue = editable;
1172      editable = newValue;      editable = newValue;
1173      firePropertyChange("editable", oldValue, newValue);      firePropertyChange("editable", oldValue, newValue);
# Line 1236  public abstract class JTextComponent ext Line 1196  public abstract class JTextComponent ext
1196      Caret oldCaret = caret;      Caret oldCaret = caret;
1197      caret = newCaret;      caret = newCaret;
1198    
     caretBlinkTimer.update();  
   
1199      if (caret != null)      if (caret != null)
1200        caret.install(this);        caret.install(this);
1201            
# Line 1405  public abstract class JTextComponent ext Line 1363  public abstract class JTextComponent ext
1363      start = Math.max(start, 0);      start = Math.max(start, 0);
1364      start = Math.min(start, length);      start = Math.min(start, length);
1365    
1366      end = Math.max(end, 0);      end = Math.max(end, start);
1367      end = Math.min(end, length);      end = Math.min(end, length);
1368    
1369      setCaretPosition(start);      setCaretPosition(start);

Legend:
Removed from v.1.13.2.13  
changed lines
  Added in v.1.13.2.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26