1 package org.simantics.spreadsheet.ui;
\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
9 import javax.swing.JComponent;
\r
11 import org.simantics.scenegraph.swing.ComponentNode;
\r
12 import org.simantics.spreadsheet.Adaptable;
\r
13 import org.simantics.spreadsheet.ClientModel;
\r
15 public class SheetNode extends ComponentNode<JComponent> implements ActionListener, FocusListener {
\r
17 private static final long serialVersionUID = -8212264868316567181L;
\r
19 private SpreadsheetModel sm;
\r
21 public void init(Adaptable serverInterface) {
\r
24 sm = new SpreadsheetModel(serverInterface, null);
\r
25 component = sm.createComponent(this);
\r
26 component.addFocusListener(this);
\r
32 public ClientModel getModifier() {
\r
33 return sm.getClientInterface();
\r
36 protected ActionListener actionListener = null;
\r
38 public void setActionListener(ActionListener actionListener) {
\r
39 this.actionListener = actionListener;
\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
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
61 public void render(Graphics2D g2d) {
\r
63 if(sm == null) return;
\r
64 if(sm.getTable() == null) return;
\r
66 container.validate();
\r