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