I did some more cleanup in DefaultCaret and implemented two stubs and one
missing method.

2005-11-02  Roman Kennke  <[EMAIL PROTECTED]>

        * javax/swing/text/DefaultCaret.java
        (mouseDragged): Call moveCaret.
        (mouseClicked): Made TODO comment more precise.
        (mouseExited): Replaced TODO comment with Nothing to do comment.
        (mousePressed): Call positionCaret.
        (moveCaret): Implemented.
        (positionCaret): Implemented.
        (moveDot): Call adjustVisibility.
        (setDot): Call adjustVisibility.
        (adjustVisibility): New method.

/Roman
Index: javax/swing/text/DefaultCaret.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/DefaultCaret.java,v
retrieving revision 1.20
diff -u -r1.20 DefaultCaret.java
--- javax/swing/text/DefaultCaret.java	3 Nov 2005 11:19:28 -0000	1.20
+++ javax/swing/text/DefaultCaret.java	3 Nov 2005 14:31:36 -0000
@@ -51,6 +51,7 @@
 import java.beans.PropertyChangeListener;
 import java.util.EventListener;
 
+import javax.swing.JComponent;
 import javax.swing.SwingUtilities;
 import javax.swing.Timer;
 import javax.swing.event.ChangeEvent;
@@ -327,7 +328,7 @@
    */
   public void mouseDragged(MouseEvent event)
   {
-    // FIXME: Implement this properly.
+    moveCaret(event);
   }
 
   /**
@@ -357,7 +358,7 @@
    */
   public void mouseClicked(MouseEvent event)
   {
-    // FIXME: Implement this properly.
+    // TODO: Implement double- and triple-click behaviour here.
   }
 
   /**
@@ -379,7 +380,7 @@
    */
   public void mouseExited(MouseEvent event)
   {
-    // TODO: What to do here, if anything?
+    // Nothing to do here.
   }
 
   /**
@@ -392,10 +393,7 @@
    */
   public void mousePressed(MouseEvent event)
   {
-    // FIXME: Implement this properly.
-    if (!(event.getButton() == MouseEvent.BUTTON1))
-      return;
-    setDot(textComponent.viewToModel(event.getPoint()));
+    positionCaret(event);
   }
 
   /**
@@ -438,7 +436,8 @@
    */
   protected void moveCaret(MouseEvent event)
   {
-    // FIXME: Implement this properly.
+    int newDot = getComponent().viewToModel(event.getPoint());
+    moveDot(newDot);
   }
 
   /**
@@ -449,7 +448,8 @@
    */
   protected void positionCaret(MouseEvent event)
   {
-    // FIXME: Implement this properly.
+    int newDot = getComponent().viewToModel(event.getPoint());
+    moveDot(newDot);
   }
 
   /**
@@ -767,6 +767,7 @@
   {
     this.dot = dot;
     handleHighlight();
+    adjustVisibility(this);
     repaint();
   }
 
@@ -784,6 +785,7 @@
     this.dot = dot;
     this.mark = dot;
     handleHighlight();
+    adjustVisibility(this);
     repaint();
   }
 
@@ -867,6 +869,17 @@
     if (height <= 0)
       height = getComponent().getHeight();
     repaint();
+  }
+
+  /**
+   * Adjusts the text component so that the caret is visible. This default
+   * implementation simply calls
+   * [EMAIL PROTECTED] JComponent#scrollRectToVisible(Rectangle)} on the text component.
+   * Subclasses may wish to change this.
+   */
+  protected void adjustVisibility(Rectangle rect)
+  {
+    getComponent().scrollRectToVisible(rect);
   }
 
   /**
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to