List of usage examples for com.google.gwt.dom.client Document createTDElement
public TableCellElement createTDElement()
From source file:com.jwh.gwt.fasttable.sample.client.FastTableSample.java
License:Open Source License
private CellListener<SampleModel> buildCellListener() { return new CellListener<SampleModel>() { /**/*from ww w .j a v a 2s .c om*/ * @param event */ @Override public void handlerCellEvent(final CellEvent<SampleModel> event) { final Document document = tablePanel.getElement().getOwnerDocument(); switch (event.getOnEvent()) { case onClick: SelectionListener<SampleModel> listener = new SelectionListener<SampleModel>() { @Override public void select(SampleModel object) { try { showDetailPanel(event, document); } catch (NotFound e) { } } @Override public void unselect(SampleModel object) { try { builder.findRowElement(object).getNextSibling().removeFromParent(); } catch (NotFound e) { } } }; try { final Element rowElement = event.getRowElement(document); final Element columnElement = rowElement.getFirstChildElement(); // Test multi vs single select by changing this flag boolean isMultiSelect = true; isMultiSelect = false; if (isMultiSelect) { builder.multiSelect(columnElement, event.domainObject, listener); } else { builder.singleSelect(columnElement, event.domainObject, listener); } } catch (NotFound e) { } catch (AbortOperation e) { } break; case onMouseOver: try { event.getRowElement(document).addClassName(HIGHLIGHT); } catch (final NotFound e1) { } break; case onMouseOut: try { event.getRowElement(document).removeClassName(HIGHLIGHT); } catch (final NotFound e1) { } break; default: break; } } /** * Show a panel under the selected item * * @param event * @param document * @throws NotFound */ private void showDetailPanel(CellEvent<SampleModel> event, final Document document) throws NotFound { final SampleModel d = event.getDomainObject(); final TableRowElement newRow = event.insertRowAfter(document); final TableCellElement td = document.createTDElement(); td.addClassName(DROP_PANEL); // Note: "colSpan" must have uppercase 'S' for IE td.setAttribute("colSpan", "6"); newRow.appendChild(td); try { LabelValueUtil util = new LabelValueUtil(); util.table.setStyle(Style.BORDER_NONE); util.labelValue("Name", d.name); util.prepareAttribute("rowSpan", "2"); final String buttonId = util.button("OK"); util.newRow(); util.labelValue("Street", d.street); util.newRow(); util.labelValue("City, State ", d.city + ", " + d.state); util.newRow(); util.labelValue("Zip", d.zip); util.newRow(); final String html = util.toHtml(); td.setInnerHTML(html); final Element okButton = document.getElementById(buttonId); DOM.setEventListener((com.google.gwt.user.client.Element) okButton, new EventListener() { @Override public void onBrowserEvent(Event event) { switch (event.getTypeInt()) { case Event.ONMOUSEDOWN: Window.alert( "This demonstrates how to attach events to content created with setInnerHtml()"); break; case Event.ONMOUSEOVER: okButton.addClassName(Style.BUTTON_OVER); break; case Event.ONMOUSEOUT: okButton.removeClassName(Style.BUTTON_OVER); break; default: break; } } }); DOM.sinkEvents((com.google.gwt.user.client.Element) okButton, Event.ONMOUSEOUT | Event.ONMOUSEDOWN | Event.ONMOUSEOVER); } catch (Exception e) { } } }; }