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