Change scrolling policy w/in Savant. Now highlighted text stays in the middle of the window instead of at the bottom.

This commit is contained in:
eg3p 2002-11-02 20:10:05 +00:00
parent e8dacead31
commit 59d65bedc3
2 changed files with 18 additions and 5 deletions

View file

@ -23,6 +23,7 @@ import java.util.*;
import javax.swing.*; import javax.swing.*;
import javax.swing.text.*; import javax.swing.text.*;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.awt.event.ComponentAdapter;
import org.thdl.util.ThdlDebug; import org.thdl.util.ThdlDebug;
@ -32,6 +33,7 @@ public class TextHighlightPlayer extends JPanel implements AnnotationPlayer
protected Hashtable hashStart, hashEnd, highlights; protected Hashtable hashStart, hashEnd, highlights;
protected Highlighter highlighter; protected Highlighter highlighter;
protected Highlighter.HighlightPainter highlightPainter; protected Highlighter.HighlightPainter highlightPainter;
protected JViewport viewport;
public TextHighlightPlayer(TranscriptView view, Color highlightcolor) public TextHighlightPlayer(TranscriptView view, Color highlightcolor)
{ {
@ -100,12 +102,22 @@ public class TextHighlightPlayer extends JPanel implements AnnotationPlayer
int end = endInt.intValue(); int end = endInt.intValue();
Object tag = highlighter.addHighlight(start, end, highlightPainter); Object tag = highlighter.addHighlight(start, end, highlightPainter);
highlights.put(id, tag); highlights.put(id, tag);
try
{ // scrolls highlighted text to middle of viewport
JViewport viewport = (JViewport)SwingUtilities.getAncestorOfClass(JViewport.class, text);
int halfViewHeight = viewport.getExtentSize().height / 2;
Rectangle textRectangle = text.modelToView(end);
int yFactor = textRectangle.y - halfViewHeight;
if (yFactor > 0) {
viewport.setViewPosition(new Point(0, yFactor));
text.repaint();
}
/* this does scrolling at the bottom of the text window
Rectangle rect = text.modelToView(end); Rectangle rect = text.modelToView(end);
text.scrollRectToVisible(rect); text.scrollRectToVisible(rect);
text.repaint(); text.repaint();
} catch (BadLocationException ble) {} */
} }
catch (BadLocationException ble) catch (BadLocationException ble)
{ {

View file

@ -30,17 +30,18 @@ import java.util.Enumeration;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import javax.swing.text.JTextComponent; import javax.swing.text.JTextComponent;
import org.thdl.media.SmartMoviePanel;
import org.thdl.util.ThdlDebug; import org.thdl.util.ThdlDebug;
public class TwoWayTextPlayer extends TextHighlightPlayer public class TwoWayTextPlayer extends TextHighlightPlayer
{ {
protected TreeMap orderedOffsets = null; protected TreeMap orderedOffsets = null;
protected SoundPanel sound = null; protected SmartMoviePanel sound = null;
protected long doubleClickDelay = 300L; protected long doubleClickDelay = 300L;
protected long lastClickTime; protected long lastClickTime;
protected Point lastClickPoint = null; protected Point lastClickPoint = null;
public TwoWayTextPlayer(SoundPanel sp, TranscriptView view, Color highlightColor) public TwoWayTextPlayer(SmartMoviePanel sp, TranscriptView view, Color highlightColor)
{ {
super(view, highlightColor); super(view, highlightColor);
sound = sp; sound = sp;