]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SheetNode.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / SheetNode.java
1 package org.simantics.spreadsheet.ui;\r
2 \r
3 import java.awt.Graphics2D;\r
4 import java.awt.event.ActionEvent;\r
5 import java.awt.event.ActionListener;\r
6 import java.awt.event.FocusListener;\r
7 import java.awt.geom.Rectangle2D;\r
8 \r
9 import javax.swing.JComponent;\r
10 \r
11 import org.simantics.scenegraph.swing.ComponentNode;\r
12 import org.simantics.spreadsheet.Adaptable;\r
13 import org.simantics.spreadsheet.ClientModel;\r
14 \r
15 public class SheetNode extends ComponentNode<JComponent> implements ActionListener, FocusListener {\r
16 \r
17     private static final long serialVersionUID = -8212264868316567181L;\r
18 \r
19     private SpreadsheetModel sm;\r
20 \r
21     public void init(Adaptable serverInterface) {\r
22 \r
23         scale = true;\r
24         sm = new SpreadsheetModel(serverInterface, null);\r
25         component =  sm.createComponent(this);\r
26         component.addFocusListener(this);\r
27         \r
28         super.init();\r
29 \r
30     }\r
31     \r
32     public ClientModel getModifier() {\r
33         return sm.getClientInterface();\r
34     }\r
35 \r
36     protected ActionListener actionListener = null;\r
37 \r
38     public void setActionListener(ActionListener actionListener) {\r
39         this.actionListener = actionListener;\r
40     }\r
41 \r
42     @ServerSide\r
43     @Override\r
44     public void actionPerformed(ActionEvent e) {\r
45         if(actionListener != null)\r
46             actionListener.actionPerformed(e);\r
47         if(container.getParent() != null)\r
48             container.getParent().requestFocusInWindow(); // Loose focus\r
49     }\r
50 \r
51     @Override\r
52     @SyncField("bounds")\r
53     public void setBounds(Rectangle2D bounds) {\r
54         this.bounds = bounds;\r
55         container.setBounds(0, 0, (int)bounds.getWidth(), (int)bounds.getHeight());\r
56         container.setSize((int)bounds.getWidth(), (int)bounds.getHeight());\r
57         container.validate();\r
58     }\r
59     \r
60     @Override\r
61     public void render(Graphics2D g2d) {\r
62         \r
63         if(sm == null) return;\r
64         if(sm.getTable() == null) return;\r
65         \r
66         container.validate();\r
67 \r
68         super.render(g2d);\r
69         \r
70     }\r
71 \r
72 }\r