Example usage for com.google.gwt.dom.client Document createTDElement

List of usage examples for com.google.gwt.dom.client Document createTDElement

Introduction

In this page you can find the example usage for com.google.gwt.dom.client Document createTDElement.

Prototype

public TableCellElement createTDElement() 

Source Link

Usage

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) {
            }
        }
    };
}