]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JScrollPaneSG.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scenegraph.swing / src / org / simantics / scenegraph / swing / JScrollPaneSG.java
1 package org.simantics.scenegraph.swing;\r
2 \r
3 import java.awt.AWTEvent;\r
4 import java.awt.Component;\r
5 import java.awt.Point;\r
6 \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
12 \r
13 import org.simantics.scenegraph.INode;\r
14 \r
15 public class JScrollPaneSG extends JScrollPane implements JComponentSG {\r
16 \r
17         private static final long serialVersionUID = 1941565557888406721L;\r
18 \r
19         final private INode node;\r
20         \r
21         public JScrollPaneSG(Component view, INode node) {\r
22                 \r
23                 this.node = 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
30         if (view != null) {\r
31             setViewportView(view);\r
32         }\r
33         \r
34         setOpaque(true);\r
35 \r
36         updateUI();\r
37 \r
38         if (!this.getComponentOrientation().isLeftToRight()) {\r
39             viewport.setViewPosition(new Point(Integer.MAX_VALUE, 0));\r
40         }\r
41                 \r
42         }\r
43 \r
44         class ScrollBarSG extends ScrollBar implements JComponentSG {\r
45 \r
46                 private static final long serialVersionUID = 209426441282352819L;\r
47 \r
48                 ScrollBarSG(int flags) {\r
49                         super(flags);\r
50                 }\r
51 \r
52                 @Override\r
53                 public boolean contains(int eventX, int eventY) {\r
54                         return JComponentUtils.contains(eventX, eventY, this, node);\r
55                 }\r
56                 \r
57                 @Override\r
58                 public boolean containsTransformed(Point p) {\r
59                         return super.contains(p.x, p.y);\r
60                 }\r
61                 \r
62                 @Override\r
63                 public JComponent getComponent() {\r
64                         return this;\r
65                 }\r
66                 \r
67                 @Override\r
68                 protected void processEvent(AWTEvent e) {\r
69                         super.processEvent(JComponentUtils.relocate(e, this, node));\r
70                 }\r
71                 \r
72         }\r
73         \r
74         @Override\r
75         public JScrollBar createVerticalScrollBar() {\r
76                 return new ScrollBarSG(JScrollBar.VERTICAL);\r
77         }\r
78 \r
79         @Override\r
80         public JScrollBar createHorizontalScrollBar() {\r
81                 return new ScrollBarSG(JScrollBar.HORIZONTAL);\r
82         }\r
83 \r
84         @Override\r
85         public boolean contains(int eventX, int eventY) {\r
86                 return JComponentUtils.contains(eventX, eventY, this, node);\r
87         }\r
88         \r
89         @Override\r
90         public boolean containsTransformed(Point p) {\r
91                 return super.contains(p.x, p.y);\r
92         }\r
93         \r
94         @Override\r
95         public JComponent getComponent() {\r
96                 return this;\r
97         }\r
98         \r
99         @Override\r
100         protected JViewport createViewport() {\r
101                 return new JViewportSG(node);\r
102         }\r
103         \r
104 }\r