]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JTableSG.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scenegraph.swing / src / org / simantics / scenegraph / swing / JTableSG.java
diff --git a/bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JTableSG.java b/bundles/org.simantics.scenegraph.swing/src/org/simantics/scenegraph/swing/JTableSG.java
new file mode 100644 (file)
index 0000000..a991440
--- /dev/null
@@ -0,0 +1,112 @@
+package org.simantics.scenegraph.swing;\r
+\r
+import java.awt.AWTEvent;\r
+import java.awt.Point;\r
+import java.awt.event.MouseEvent;\r
+\r
+import javax.swing.JComponent;\r
+import javax.swing.JTable;\r
+import javax.swing.table.JTableHeader;\r
+import javax.swing.table.TableColumnModel;\r
+import javax.swing.table.TableModel;\r
+\r
+import org.simantics.scenegraph.INode;\r
+\r
+public class JTableSG extends JTable implements JComponentSG {\r
+\r
+       private static final long serialVersionUID = -8307824148871305452L;\r
+       \r
+       final private INode node;\r
+       \r
+       public JTableSG(TableModel model, INode node) {\r
+               super(model);\r
+               this.node = node;\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
+       private boolean isDragging = false;\r
+       \r
+       protected void mouseDragFinished() {\r
+               \r
+       }\r
+       \r
+       @Override\r
+    protected JTableHeader createDefaultTableHeader() {\r
+       \r
+       class TableHeaderSG extends JTableHeader implements JComponentSG {\r
+\r
+               private static final long serialVersionUID = 209426441282352819L;\r
+\r
+               TableHeaderSG(TableColumnModel model) {\r
+                       super(model);\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
+               @Override\r
+               protected void processMouseMotionEvent(MouseEvent e) {\r
+                int id = e.getID();\r
+                switch(id) {\r
+                  case MouseEvent.MOUSE_DRAGGED:\r
+                         isDragging = true;\r
+                      break;\r
+                }\r
+                       super.processMouseMotionEvent(e);\r
+               }\r
+               \r
+               @Override\r
+               protected void processMouseEvent(MouseEvent e) {\r
+                int id = e.getID();\r
+                switch(id) {\r
+                  case MouseEvent.MOUSE_RELEASED:\r
+                         if(isDragging) mouseDragFinished();\r
+                         isDragging = false;\r
+                      break;\r
+                }\r
+                       super.processMouseEvent(e);\r
+               }\r
+               \r
+       }\r
+       \r
+        return new TableHeaderSG(columnModel);\r
+        \r
+    }\r
+       \r
+}\r