package autotest.tko.embedded_spreadsheet; import autotest.common.spreadsheet.Spreadsheet; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; public class EmbeddedSpreadsheetDisplay extends Composite implements EmbeddedSpreadsheetPresenter.Display { private static final String NO_RESULTS = "There are no results for this query (yet?)"; private Panel panel = new SimplePanel(); private Spreadsheet spreadsheet = new Spreadsheet(); private Label noResults = new Label(NO_RESULTS); public EmbeddedSpreadsheetDisplay() { initWidget(panel); } private void notifyParent(Widget w) { Element elem = w.getElement(); notifyParent(elem.getClientWidth(), elem.getClientHeight()); } private native void notifyParent(int width, int height) /*-{ $wnd.parent.postMessage(width + 'px ' + height + 'px', '*'); }-*/; @Override public Command getOnSpreadsheetRendered() { return new Command() { @Override public void execute() { notifyParent(spreadsheet); } }; } @Override public Spreadsheet getSpreadsheet() { return spreadsheet; } @Override public void showNoResults() { panel.add(noResults); notifyParent(noResults); } @Override public void showSpreadsheet() { panel.add(spreadsheet); } }