1 package org.simantics.scenegraph.swing;
\r
3 import java.awt.AWTEvent;
\r
4 import java.awt.Component;
\r
5 import java.awt.Point;
\r
7 import javax.swing.JComponent;
\r
8 import javax.swing.JScrollBar;
\r
9 import javax.swing.JScrollPane;
\r
10 import javax.swing.JViewport;
\r
11 import javax.swing.ScrollPaneLayout;
\r
13 import org.simantics.scenegraph.INode;
\r
15 public class JScrollPaneSG extends JScrollPane implements JComponentSG {
\r
17 private static final long serialVersionUID = 1941565557888406721L;
\r
19 final private INode node;
\r
21 public JScrollPaneSG(Component view, INode node) {
\r
24 setLayout(new ScrollPaneLayout.UIResource());
\r
25 setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_AS_NEEDED);
\r
26 setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_AS_NEEDED);
\r
27 setViewport(createViewport());
\r
28 setVerticalScrollBar(createVerticalScrollBar());
\r
29 setHorizontalScrollBar(createHorizontalScrollBar());
\r
31 setViewportView(view);
\r
38 if (!this.getComponentOrientation().isLeftToRight()) {
\r
39 viewport.setViewPosition(new Point(Integer.MAX_VALUE, 0));
\r
44 class ScrollBarSG extends ScrollBar implements JComponentSG {
\r
46 private static final long serialVersionUID = 209426441282352819L;
\r
48 ScrollBarSG(int flags) {
\r
53 public boolean contains(int eventX, int eventY) {
\r
54 return JComponentUtils.contains(eventX, eventY, this, node);
\r
58 public boolean containsTransformed(Point p) {
\r
59 return super.contains(p.x, p.y);
\r
63 public JComponent getComponent() {
\r
68 protected void processEvent(AWTEvent e) {
\r
69 super.processEvent(JComponentUtils.relocate(e, this, node));
\r
75 public JScrollBar createVerticalScrollBar() {
\r
76 return new ScrollBarSG(JScrollBar.VERTICAL);
\r
80 public JScrollBar createHorizontalScrollBar() {
\r
81 return new ScrollBarSG(JScrollBar.HORIZONTAL);
\r
85 public boolean contains(int eventX, int eventY) {
\r
86 return JComponentUtils.contains(eventX, eventY, this, node);
\r
90 public boolean containsTransformed(Point p) {
\r
91 return super.contains(p.x, p.y);
\r
95 public JComponent getComponent() {
\r
100 protected JViewport createViewport() {
\r
101 return new JViewportSG(node);
\r