]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JScrollPaneSG.java b/bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JScrollPaneSG.java
new file mode 100644 (file)
index 0000000..d082e85
--- /dev/null
@@ -0,0 +1,104 @@
+package org.simantics.scenegraph.swing;\r
+\r
+import java.awt.AWTEvent;\r
+import java.awt.Component;\r
+import java.awt.Point;\r
+\r
+import javax.swing.JComponent;\r
+import javax.swing.JScrollBar;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JViewport;\r
+import javax.swing.ScrollPaneLayout;\r
+\r
+import org.simantics.scenegraph.INode;\r
+\r
+public class JScrollPaneSG extends JScrollPane implements JComponentSG {\r
+\r
+       private static final long serialVersionUID = 1941565557888406721L;\r
+\r
+       final private INode node;\r
+       \r
+       public JScrollPaneSG(Component view, INode node) {\r
+               \r
+               this.node = node;\r
+        setLayout(new ScrollPaneLayout.UIResource());\r
+        setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_AS_NEEDED);\r
+        setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_AS_NEEDED);\r
+        setViewport(createViewport());\r
+        setVerticalScrollBar(createVerticalScrollBar());\r
+        setHorizontalScrollBar(createHorizontalScrollBar());\r
+        if (view != null) {\r
+            setViewportView(view);\r
+        }\r
+        \r
+        setOpaque(true);\r
+\r
+        updateUI();\r
+\r
+        if (!this.getComponentOrientation().isLeftToRight()) {\r
+            viewport.setViewPosition(new Point(Integer.MAX_VALUE, 0));\r
+        }\r
+               \r
+       }\r
+\r
+       class ScrollBarSG extends ScrollBar implements JComponentSG {\r
+\r
+               private static final long serialVersionUID = 209426441282352819L;\r
+\r
+               ScrollBarSG(int flags) {\r
+                       super(flags);\r
+               }\r
+\r
+               @Override\r
+               public boolean contains(int eventX, int eventY) {\r
+                       return JComponentUtils.contains(eventX, eventY, this, node);\r
+               }\r
+               \r
+               @Override\r
+               public boolean containsTransformed(Point p) {\r
+                       return super.contains(p.x, p.y);\r
+               }\r
+               \r
+               @Override\r
+               public JComponent getComponent() {\r
+                       return this;\r
+               }\r
+               \r
+               @Override\r
+               protected void processEvent(AWTEvent e) {\r
+                       super.processEvent(JComponentUtils.relocate(e, this, node));\r
+               }\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public JScrollBar createVerticalScrollBar() {\r
+               return new ScrollBarSG(JScrollBar.VERTICAL);\r
+       }\r
+\r
+       @Override\r
+       public JScrollBar createHorizontalScrollBar() {\r
+               return new ScrollBarSG(JScrollBar.HORIZONTAL);\r
+       }\r
+\r
+       @Override\r
+       public boolean contains(int eventX, int eventY) {\r
+               return JComponentUtils.contains(eventX, eventY, this, node);\r
+       }\r
+       \r
+       @Override\r
+       public boolean containsTransformed(Point p) {\r
+               return super.contains(p.x, p.y);\r
+       }\r
+       \r
+       @Override\r
+       public JComponent getComponent() {\r
+               return this;\r
+       }\r
+       \r
+       @Override\r
+       protected JViewport createViewport() {\r
+               return new JViewportSG(node);\r
+       }\r
+       \r
+}\r