]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.scenegraph.swing;\r
2 \r
3 import java.awt.AWTEvent;\r
4 import java.awt.Point;\r
5 import java.awt.event.MouseEvent;\r
6 \r
7 import javax.swing.JComponent;\r
8 import javax.swing.JTable;\r
9 import javax.swing.table.JTableHeader;\r
10 import javax.swing.table.TableColumnModel;\r
11 import javax.swing.table.TableModel;\r
12 \r
13 import org.simantics.scenegraph.INode;\r
14 \r
15 public class JTableSG extends JTable implements JComponentSG {\r
16 \r
17         private static final long serialVersionUID = -8307824148871305452L;\r
18         \r
19         final private INode node;\r
20         \r
21         public JTableSG(TableModel model, INode node) {\r
22                 super(model);\r
23                 this.node = node;\r
24         }\r
25 \r
26         @Override\r
27         public boolean contains(int eventX, int eventY) {\r
28                 return JComponentUtils.contains(eventX, eventY, this, node);\r
29         }\r
30         \r
31         @Override\r
32         public boolean containsTransformed(Point p) {\r
33                 return super.contains(p.x, p.y);\r
34         }\r
35         \r
36         @Override\r
37         public JComponent getComponent() {\r
38                 return this;\r
39         }\r
40         \r
41         @Override\r
42         protected void processEvent(AWTEvent e) {\r
43                 super.processEvent(JComponentUtils.relocate(e, this, node));\r
44         }\r
45         \r
46         private boolean isDragging = false;\r
47         \r
48         protected void mouseDragFinished() {\r
49                 \r
50         }\r
51         \r
52         @Override\r
53     protected JTableHeader createDefaultTableHeader() {\r
54         \r
55         class TableHeaderSG extends JTableHeader implements JComponentSG {\r
56 \r
57                 private static final long serialVersionUID = 209426441282352819L;\r
58 \r
59                 TableHeaderSG(TableColumnModel model) {\r
60                         super(model);\r
61                 }\r
62 \r
63                 @Override\r
64                 public boolean contains(int eventX, int eventY) {\r
65                         return JComponentUtils.contains(eventX, eventY, this, node);\r
66                 }\r
67                 \r
68                 @Override\r
69                 public boolean containsTransformed(Point p) {\r
70                         return super.contains(p.x, p.y);\r
71                 }\r
72                 \r
73                 @Override\r
74                 public JComponent getComponent() {\r
75                         return this;\r
76                 }\r
77                 \r
78                 @Override\r
79                 protected void processEvent(AWTEvent e) {\r
80                         super.processEvent(JComponentUtils.relocate(e, this, node));\r
81                 }\r
82                 \r
83                 @Override\r
84                 protected void processMouseMotionEvent(MouseEvent e) {\r
85                 int id = e.getID();\r
86                 switch(id) {\r
87                   case MouseEvent.MOUSE_DRAGGED:\r
88                           isDragging = true;\r
89                       break;\r
90                 }\r
91                         super.processMouseMotionEvent(e);\r
92                 }\r
93                 \r
94                 @Override\r
95                 protected void processMouseEvent(MouseEvent e) {\r
96                 int id = e.getID();\r
97                 switch(id) {\r
98                   case MouseEvent.MOUSE_RELEASED:\r
99                           if(isDragging) mouseDragFinished();\r
100                           isDragging = false;\r
101                       break;\r
102                 }\r
103                         super.processMouseEvent(e);\r
104                 }\r
105                 \r
106         }\r
107         \r
108         return new TableHeaderSG(columnModel);\r
109         \r
110     }\r
111         \r
112 }\r