1 package org.simantics.scenegraph.swing;
3 import java.awt.AWTEvent;
5 import java.awt.event.MouseEvent;
7 import javax.swing.JComponent;
8 import javax.swing.JTable;
9 import javax.swing.table.JTableHeader;
10 import javax.swing.table.TableColumnModel;
11 import javax.swing.table.TableModel;
13 import org.simantics.scenegraph.INode;
15 public class JTableSG extends JTable implements JComponentSG {
17 private static final long serialVersionUID = -8307824148871305452L;
19 final private INode node;
21 public JTableSG(TableModel model, INode node) {
27 public boolean contains(int eventX, int eventY) {
28 return JComponentUtils.contains(eventX, eventY, this, node);
32 public boolean containsTransformed(Point p) {
33 return super.contains(p.x, p.y);
37 public JComponent getComponent() {
42 protected void processEvent(AWTEvent e) {
43 super.processEvent(JComponentUtils.relocate(e, this, node));
46 private boolean isDragging = false;
48 protected void mouseDragFinished() {
53 protected JTableHeader createDefaultTableHeader() {
55 class TableHeaderSG extends JTableHeader implements JComponentSG {
57 private static final long serialVersionUID = 209426441282352819L;
59 TableHeaderSG(TableColumnModel model) {
64 public boolean contains(int eventX, int eventY) {
65 return JComponentUtils.contains(eventX, eventY, this, node);
69 public boolean containsTransformed(Point p) {
70 return super.contains(p.x, p.y);
74 public JComponent getComponent() {
79 protected void processEvent(AWTEvent e) {
80 super.processEvent(JComponentUtils.relocate(e, this, node));
84 protected void processMouseMotionEvent(MouseEvent e) {
87 case MouseEvent.MOUSE_DRAGGED:
91 super.processMouseMotionEvent(e);
95 protected void processMouseEvent(MouseEvent e) {
98 case MouseEvent.MOUSE_RELEASED:
99 if(isDragging) mouseDragFinished();
103 super.processMouseEvent(e);
108 return new TableHeaderSG(columnModel);