diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-23 21:31:04 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-23 21:31:04 +0000 |
| commit | 947b8814056ea2fba6bbcfab86591f74bffc0311 (patch) | |
| tree | 3ca4b2e68dc14c3128b9c781d23f1d0b1f2bee49 /libjava/classpath/javax/swing/JViewport.java | |
| parent | 49792907376493f0939563eb0219b96a48f1ae3b (diff) | |
| download | ppe42-gcc-947b8814056ea2fba6bbcfab86591f74bffc0311.tar.gz ppe42-gcc-947b8814056ea2fba6bbcfab86591f74bffc0311.zip | |
Imported Classpath 0.18.
* sources.am, Makefile.in: Updated.
* Makefile.am (nat_source_files): Removed natProxy.cc.
* java/lang/reflect/natProxy.cc: Removed.
* gnu/classpath/jdwp/VMFrame.java,
gnu/classpath/jdwp/VMIdManager.java,
gnu/classpath/jdwp/VMVirtualMachine.java,
java/lang/reflect/VMProxy.java: New files.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* scripts/makemake.tcl (verbose): Add gnu/java/awt/peer/qt to BC
list.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/net/DefaultContentHandlerFactory.java (getContent):
Remove ClasspathToolkit references.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/awt/xlib/XCanvasPeer.java: Add new peer methods.
* gnu/awt/xlib/XFramePeer.java: Likewise.
* gnu/awt/xlib/XGraphicsConfiguration.java: Likewise.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am (libgcjawt_la_SOURCES): Remove jawt.c. Add
classpath/native/jawt/jawt.c.
* Makefile.in: Regenerate.
* jawt.c: Remove file.
* include/Makefile.am (tool_include__HEADERS): Remove jawt.h and
jawt_md.h. Add ../classpath/include/jawt.h and
../classpath/include/jawt_md.h.
* include/Makefile.in: Regenerate.
* include/jawt.h: Regenerate.
* include/jawt_md.h: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104586 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/javax/swing/JViewport.java')
| -rw-r--r-- | libjava/classpath/javax/swing/JViewport.java | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/libjava/classpath/javax/swing/JViewport.java b/libjava/classpath/javax/swing/JViewport.java index 397cb31acdf..d750bad29cc 100644 --- a/libjava/classpath/javax/swing/JViewport.java +++ b/libjava/classpath/javax/swing/JViewport.java @@ -89,7 +89,7 @@ import javax.swing.plaf.ViewportUI; * * <p>But in terms of drawing its child, the viewport thinks of itself as * covering a particular position <em>of the view's coordinate space</em>. - * For example, the {@link javax.JViewPort.getViewPosition} method returns + * For example, the {@link #getViewPosition} method returns * the position <code>(VX,VY)</code> shown above, which is an position in * "view space", even though this is <em>implemented</em> by positioning * the underlying child at position <code>(-VX,-VY)</code></p> @@ -487,4 +487,45 @@ public class JViewport extends JComponent { return new ViewportLayout(); } + + /** + * Scrolls the view so that contentRect becomes visible. + * + * @param contentRect the rectangle to make visible within the view + */ + public void scrollRectToVisible(Rectangle contentRect) + { + Point pos = getViewPosition(); + Rectangle viewBounds = getView().getBounds(); + Rectangle portBounds = getBounds(); + + // FIXME: should validate the view if it is not valid, however + // this may cause excessive validation when the containment + // hierarchy is being created. + + // if contentRect is larger than the portBounds, center the view + if (contentRect.height > portBounds.height || + contentRect.width > portBounds.width) + { + setViewPosition(new Point(contentRect.x, contentRect.y)); + return; + } + + // Y-DIRECTION + if (contentRect.y < -viewBounds.y) + setViewPosition(new Point(pos.x, contentRect.y)); + else if (contentRect.y + contentRect.height > + -viewBounds.y + portBounds.height) + setViewPosition (new Point(pos.x, contentRect.y - + (portBounds.height - contentRect.height))); + + // X-DIRECTION + pos = getViewPosition(); + if (contentRect.x < -viewBounds.x) + setViewPosition(new Point(contentRect.x, pos.y)); + else if (contentRect.x + contentRect.width > + -viewBounds.x + portBounds.width) + setViewPosition (new Point(contentRect.x - + (portBounds.width - contentRect.width), pos.y)); + } } |

