01: /*
02: * Javu WingS - Lightweight Java Component Set
03: * Copyright (c) 2005-2007 Krzysztof A. Sadlocha
04: * e-mail: ksadlocha@programics.com
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2.1 of the License, or (at your option) any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20:
21: package com.javujavu.javux.wings;
22:
23: import java.awt.Dimension;
24: import java.awt.Point;
25: import java.awt.Rectangle;
26:
27: /**
28: * This class is a view of <code>WingScrollPane</code><br>
29: * <br>
30: * <b>This class is thread safe.</b>
31: **/
32: public class WingScrollView extends WingComponent {
33: protected final WingScrollPane pane;
34:
35: protected WingScrollView(WingScrollPane pane) {
36: this .pane = pane;
37: }
38:
39: /**
40: * <br><br><strong>This method acquire TreeLock</strong>
41: */
42: protected void doScrollRectToVisible(Rectangle r) {
43: Dimension vd = getSize();
44: Point pos = pane.getScrollPosition();
45: if (r.x < pos.x || r.y < pos.y
46: || r.x + r.width > pos.x + vd.width
47: || r.y + r.height > pos.y + vd.height) {
48: if (r.x + r.width > pos.x + vd.width && r.x > pos.x)
49: pos.x = r.x + r.width - vd.width;
50: if (r.y + r.height > pos.y + vd.height && r.y > pos.y)
51: pos.y = r.y + r.height - vd.height;
52: if (r.x < pos.x && r.x + r.width <= pos.x + vd.width)
53: pos.x = r.x;
54: if (r.y < pos.y && r.y + r.height <= pos.y + vd.height)
55: pos.y = r.y;
56: pane.setScrollPosition(pos.x, pos.y);
57: }
58: }
59:
60: protected Dimension getViewSize(WingComponent child) {
61: return getSize();
62: }
63: }
|