]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SheetNode.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SheetNode.java
new file mode 100644 (file)
index 0000000..51dca50
--- /dev/null
@@ -0,0 +1,72 @@
+package org.simantics.spreadsheet.ui;\r
+\r
+import java.awt.Graphics2D;\r
+import java.awt.event.ActionEvent;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.FocusListener;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import javax.swing.JComponent;\r
+\r
+import org.simantics.scenegraph.swing.ComponentNode;\r
+import org.simantics.spreadsheet.Adaptable;\r
+import org.simantics.spreadsheet.ClientModel;\r
+\r
+public class SheetNode extends ComponentNode<JComponent> implements ActionListener, FocusListener {\r
+\r
+    private static final long serialVersionUID = -8212264868316567181L;\r
+\r
+    private SpreadsheetModel sm;\r
+\r
+    public void init(Adaptable serverInterface) {\r
+\r
+       scale = true;\r
+        sm = new SpreadsheetModel(serverInterface, null);\r
+        component =  sm.createComponent(this);\r
+        component.addFocusListener(this);\r
+        \r
+        super.init();\r
+\r
+    }\r
+    \r
+    public ClientModel getModifier() {\r
+       return sm.getClientInterface();\r
+    }\r
+\r
+    protected ActionListener actionListener = null;\r
+\r
+    public void setActionListener(ActionListener actionListener) {\r
+        this.actionListener = actionListener;\r
+    }\r
+\r
+    @ServerSide\r
+    @Override\r
+    public void actionPerformed(ActionEvent e) {\r
+        if(actionListener != null)\r
+            actionListener.actionPerformed(e);\r
+        if(container.getParent() != null)\r
+            container.getParent().requestFocusInWindow(); // Loose focus\r
+    }\r
+\r
+    @Override\r
+    @SyncField("bounds")\r
+    public void setBounds(Rectangle2D bounds) {\r
+       this.bounds = bounds;\r
+        container.setBounds(0, 0, (int)bounds.getWidth(), (int)bounds.getHeight());\r
+        container.setSize((int)bounds.getWidth(), (int)bounds.getHeight());\r
+        container.validate();\r
+    }\r
+    \r
+    @Override\r
+    public void render(Graphics2D g2d) {\r
+        \r
+        if(sm == null) return;\r
+        if(sm.getTable() == null) return;\r
+        \r
+        container.validate();\r
+\r
+        super.render(g2d);\r
+        \r
+    }\r
+\r
+}\r