Example usage for com.google.gwt.dom.client NodeList getItem

List of usage examples for com.google.gwt.dom.client NodeList getItem

Introduction

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

Prototype

public T getItem(int index) 

Source Link

Usage

From source file:com.extjs.gxt.ui.client.widget.ColorPalette.java

License:sencha.com license

private int indexOf(NodeList<Element> elements, Element elem) {
    for (int i = 0; i < elements.getLength(); i++) {
        if (elements.getItem(i) == elem) {
            return i;
        }//from   w  w  w  .java2 s  .c  o  m
    }
    return -1;
}

From source file:com.extjs.gxt.ui.client.widget.DataView.java

License:Open Source License

protected void renderAll() {
    if (template == null) {
        template = new Template(defaultTemplate);
    }/*ww w.ja  v a  2s  . c  o m*/

    StringBuffer sb = new StringBuffer();
    for (DataViewItem item : getItems()) {
        sb.append(bulkRenderItem(item));
    }
    getElement().setInnerHTML(sb.toString());

    NodeList<Element> elems = el().select(itemSelector);

    for (int i = 0; i < elems.getLength(); i++) {
        DataViewItem item = getItem(i);
        item.setElement(elems.getItem(i));
    }
}

From source file:com.extjs.gxt.ui.client.widget.DatePicker.java

License:sencha.com license

@Override
protected void onRender(Element target, int index) {
    setElement(DOM.createDiv(), target, index);
    disableTextSelection(true);/* w ww  . ja va2 s  . com*/

    header = new Header();
    header.render(getElement());

    days = new Grid(1, 7);
    days.setStyleName("x-date-days");
    days.setCellPadding(0);
    days.setCellSpacing(0);
    days.setBorderWidth(0);

    String[] dn = constants.narrowWeekdays();
    String[] longdn = constants.weekdays();

    firstDOW = getCalculatedStartDay();

    days.setHTML(0, 0, "<span>" + dn[(0 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 1, "<span>" + dn[(1 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 2, "<span>" + dn[(2 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 3, "<span>" + dn[(3 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 4, "<span>" + dn[(4 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 5, "<span>" + dn[(5 + firstDOW) % 7] + "</span>");
    days.setHTML(0, 6, "<span>" + dn[(6 + firstDOW) % 7] + "</span>");

    days.getRowFormatter().getElement(0).setAttribute("role", "row");

    for (int i = 0; i < 7; i++) {
        days.getCellFormatter().getElement(0, i).setAttribute("role", "columnheader");
        days.getCellFormatter().getElement(0, i).setAttribute("aria-label", longdn[i]);
    }

    grid = new Grid(6, 7);
    grid.setStyleName("x-date-inner");
    grid.setCellSpacing(0);
    grid.setCellPadding(0);
    grid.addClickHandler(new ClickHandler() {

        public void onClick(ClickEvent event) {
            Event evt = DOM.eventGetCurrentEvent();
            ComponentEvent be = new ComponentEvent(DatePicker.this, evt);
            onDayClick(be);
        }
    });
    String s = GXT.isAriaEnabled() ? "<a role=gridcell tabindex=0><span role=presentation></span></a>"
            : "<a href=#><span></span></a>";
    for (int row = 0; row < 6; row++) {
        if (GXT.isAriaEnabled()) {
            grid.getRowFormatter().getElement(row).setAttribute("role", "row");
        }
        for (int col = 0; col < 7; col++) {
            grid.setHTML(row, col, s);
            if (GXT.isAriaEnabled()) {
                grid.getCellFormatter().getElement(row, col).setAttribute("role", "presentation");
            }
        }
    }

    footer = new com.google.gwt.user.client.ui.HorizontalPanel();
    footer.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    footer.setWidth("100%");

    todayBtn = new Button(messages.getTodayText(), new SelectionListener<ButtonEvent>() {
        public void componentSelected(ButtonEvent ce) {
            selectToday();
        }
    });
    if (messages.getTodayTip() != null) {
        todayBtn.setToolTip(messages.getTodayTip());
    }
    footer.add(todayBtn);
    todayBtn.getElement().getParentElement().setClassName("x-date-bottom");

    monthPicker = new El(DOM.createDiv());
    monthPicker.dom.setClassName("x-date-mp");

    gridWrapper = new El((Element) Document.get().createElement("DIV"));
    gridWrapper.dom.setAttribute("role", "grid");

    gridWrapper.appendChild(days.getElement());
    gridWrapper.appendChild(grid.getElement());

    getElement().appendChild(header.getElement());
    getElement().appendChild(gridWrapper.dom);
    getElement().appendChild(footer.getElement());
    getElement().appendChild(monthPicker.dom);

    El btntext = monthBtn.el().selectNode("button");
    btntext.setId(XDOM.getUniqueId());
    gridWrapper.dom.setAttribute("aria-labelledby", btntext.getId());

    setWidth(177);

    cells = Util.toElementArray(el().select("table.x-date-inner tbody td"));
    textNodes = Util.toElementArray(el().select("table.x-date-inner tbody span"));

    activeDate = value != null ? value : new DateWrapper();
    update(activeDate);

    if (GXT.isAriaEnabled()) {
        String[] tags = new String[] { "table", "tbody", "tr", "td" };
        for (int i = 0; i < tags.length; i++) {
            NodeList<Element> elems = el().select(tags[i]);
            for (int j = 0; j < elems.getLength(); j++) {
                if (elems.getItem(j).getAttribute("role").equals("")) {
                    elems.getItem(j).setAttribute("role", "presentation");
                }
                if (i == 3) {
                    elems.getItem(j).setId(XDOM.getUniqueId());
                }
            }
        }
    }

    el().makePositionable();
    el().setTabIndex(0);
    el().setElementAttribute("hideFocus", "true");
    sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.ONFOCUS);

    new KeyNav<ComponentEvent>(this) {

        @Override
        public void onDown(ComponentEvent ce) {
            onKeyDown(ce);
        }

        @Override
        public void onEnd(ComponentEvent ce) {
            onKeyEnd(ce);
        }

        @Override
        public void onEnter(ComponentEvent ce) {
            onKeyEnter(ce);
        }

        @Override
        public void onHome(ComponentEvent ce) {
            onKeyHome(ce);
        }

        @Override
        public void onKeyPress(ComponentEvent ce) {
            // space bar pressed
            if (ce.getKeyCode() == 32) {
                selectToday();
            }
        }

        @Override
        public void onLeft(ComponentEvent ce) {
            onKeyLeft(ce);
        }

        @Override
        public void onPageDown(ComponentEvent ce) {
            onKeyPageDown(ce);
        }

        @Override
        public void onPageUp(ComponentEvent ce) {
            onKeyPageUp(ce);
        }

        @Override
        public void onRight(ComponentEvent ce) {
            onKeyRight(ce);
        }

        @Override
        public void onUp(ComponentEvent ce) {
            onKeyUp(ce);
        }

    };
}

From source file:com.extjs.gxt.ui.client.widget.grid.BufferView.java

License:sencha.com license

protected void doClean() {
    if (grid == null || !grid.isViewReady() || !bufferEnabled) {
        return;//from   w  ww .ja v a  2 s  . c  o  m
    }
    int count = getVisibleRowCount();
    if (count > 0) {
        int[] vr = getVisibleRows(count);
        vr[0] -= cacheSize;
        vr[1] += cacheSize;

        int i = 0;
        NodeList<Element> rows = getRows();
        // if first is less than 0, all rows have been rendered
        // so lets clean the end...
        if (vr[0] <= 0) {
            i = vr[1] + 1;
        }
        for (int len = grid.getStore().getCount(); i < len; i++) {
            // if current row is outside of first and last and
            // has content, update the innerHTML to nothing
            if ((i < vr[0] || i > vr[1])) {
                detachWidget(i, false);
                widgetList.set(i, null);
                cleanModel(ds.getAt(i));
                rows.getItem(i).setInnerHTML("");
            }
        }
    }
}

From source file:com.extjs.gxt.ui.client.widget.grid.ColumnHeader.java

License:sencha.com license

protected void adjustColumnWidths(int[] columnWidths) {
    NodeList<Element> ths = tbody.getFirstChildElement().getChildNodes().cast();
    if (ths == null) {
        return;/* www.  j  a  va  2 s. c om*/
    }

    for (int i = 0; i < columnWidths.length; i++) {
        if (cm.isHidden(i)) {
            continue;
        }

        ths.getItem(getDomIndexByColumn(i)).getStyle().setPropertyPx("width", columnWidths[i]);
    }

    cleanCells();

    for (int i = 0; i < heads.size(); i++) {
        Head head = heads.get(i);
        if (head != null && !head.isRendered())
            continue;
        String id = head.getElement().getAttribute("x-col");

        ColumnConfig cc = cm.getColumnById(id);
        if (cc == null)
            return;
        int w = cc.getWidth();
        Element cell = head.getElement().getParentElement().cast();
        adjustCellWidth(cell, w);
    }

    for (int i = 0; i < groups.size(); i++) {
        Group group = groups.get(i);
        if (group != null && !group.isRendered())
            continue;
        Element cell = group.getElement().getParentElement().cast();
        int colspan = 1;
        String scolspan = cell.getAttribute("colspan");
        if (scolspan != null && !scolspan.equals("")) {
            colspan = Integer.parseInt(scolspan);
        }
        int w = 0;
        int mark = group.config.getColumn();
        for (int k = mark; k < (mark + colspan); k++) {
            ColumnConfig c = cm.getColumn(k);
            if (c.isHidden()) {
                mark++;
                continue;
            }
            w += cm.getColumnWidth(k);
        }
        mark += colspan;

        adjustCellWidth(cell, w);
    }
}

From source file:com.extjs.gxt.ui.client.widget.grid.ColumnHeader.java

License:sencha.com license

protected void cleanCells() {
    NodeList<Element> tds = DomQuery.select("tr.x-grid3-hd-row > td", table.getElement());
    for (int i = 0; i < tds.getLength(); i++) {
        Element td = tds.getItem(i);
        if (!td.hasChildNodes()) {
            El.fly(td).removeFromParent();
        }/* www .  j av  a2s.  co m*/
    }
}

From source file:com.extjs.gxt.ui.client.widget.grid.GridSelectionModel.java

License:sencha.com license

protected void onKeyDown(GridEvent<M> e) {
    if (GXT.isFocusManagerEnabled()) {
        if (selectedGroup == null && (selectedHeader != null || selected.size() == 0)) {
            e.cancelBubble();/*ww w .j  a  v a2s  .  c  o  m*/
            if (e.isAltKey()) {
                grid.getView().getHeader().showColumnMenu(selectedHeader.column);
                return;
            }
            if (selectedHeader != null) {
                selectedHeader.deactivate();
            }
            select(0, false);
            return;
        }
        if (grouped) {
            GroupingView view = (GroupingView) grid.getView();
            NodeList<Element> groups = view.getGroups().cast();
            int gc = view.getGroups().getLength();

            if (selectedGroup != null) {
                int gindex = indexOf(groups, selectedGroup);
                if (!view.isExpanded(selectedGroup)) {
                    if (gindex < gc - 1) {
                        view.onGroupSelect(selectedGroup, false);
                        selectedGroup = groups.getItem(gindex + 1);
                        view.onGroupSelect(selectedGroup, true);
                    }
                    return;
                }
                view.onGroupSelect(selectedGroup, false);
                Element r = view.getGroupRow(selectedGroup, 0).cast();

                selectedGroup = null;

                if (r != null) {
                    int idx = view.findRowIndex(r);
                    select(idx, false);
                    view.focusRow(idx);
                    return;
                }
            }
            if (lastSelected != null) {
                Element row = view.getRow(lastSelected).cast();
                Element group = view.findGroup(row).cast();

                int totalGroups = groups.getLength();
                int groupIndex = indexOf(groups, group);

                NodeList<Element> groupRows = group.getChildNodes().getItem(1).getChildNodes().cast();

                int rowsInGroup = group.getChildNodes().getItem(1).getChildNodes().getLength();
                int rowInGroupIndex = indexOf(groupRows, row);
                if (rowInGroupIndex == rowsInGroup - 1) {
                    if (groupIndex < totalGroups - 1) {
                        deselectAll();
                        selectedGroup = groups.getItem(groupIndex + 1);
                        view.onGroupSelect(selectedGroup, true);
                        return;

                    }
                }
            }
        }
    }
    if (!e.isControlKey() && selected.size() == 0 && getLastFocused() == null) {
        select(0, false);
    } else {
        int idx = listStore.indexOf(getLastFocused());
        if (idx >= 0) {
            if (e.isControlKey() || (e.isShiftKey() && isSelected(listStore.getAt(idx + 1)))) {
                if (!e.isControlKey()) {
                    deselect(idx);
                }

                M lF = listStore.getAt(idx + 1);
                if (lF != null) {
                    setLastFocused(lF);
                    grid.getView().focusCell(idx + 1, 0, false);
                }

            } else {
                if (e.isShiftKey() && lastSelected != getLastFocused()) {
                    select(listStore.indexOf(lastSelected), idx + 1, true);
                    grid.getView().focusCell(idx + 1, 0, false);
                } else {
                    if (idx + 1 < listStore.getCount()) {
                        selectNext(e.isShiftKey());
                        grid.getView().focusCell(idx + 1, 0, false);
                    }
                }
            }
        }
    }

    e.preventDefault();
}

From source file:com.extjs.gxt.ui.client.widget.grid.GridSelectionModel.java

License:sencha.com license

protected void onKeyUp(GridEvent<M> e) {
    if (GXT.isFocusManagerEnabled()) {
        if (selectedHeader != null) {
            return;
        }/*from   w  w w.  j a  va  2 s.co  m*/
        if (listStore.indexOf(lastSelected) == 0 && !grouped) {
            deselectAll();
            ColumnHeader header = grid.getView().getHeader();
            Head h = getHead(0, false);
            if (h != null) {
                selectedHeader = h;
                header.selectHeader(header.indexOf(h));
            }
        }
        if (grouped) {
            GroupingView view = (GroupingView) grid.getView();
            NodeList<Element> groups = view.getGroups().cast();
            if (selectedGroup != null) {
                int gindex = indexOf(groups, selectedGroup);

                if (gindex == 0) {
                    deselectAll();
                    ColumnHeader header = grid.getView().getHeader();
                    Head h = getHead(0, false);
                    if (h != null) {
                        selectedHeader = h;
                        header.selectHeader(header.indexOf(h));
                    }
                }

                view.onGroupSelect(selectedGroup, false);
                selectedGroup = null;

                if (gindex > 0) {
                    selectedGroup = groups.getItem(gindex - 1);
                    if (view.isExpanded(selectedGroup)) {
                        int grows = view.getGroupRowCount(selectedGroup);
                        Element r = view.getGroupRow(selectedGroup, grows - 1).cast();
                        selectedGroup = null;
                        select(view.findRowIndex(r), false);
                        view.focusRow(view.findRowIndex(r));

                    } else {
                        view.onGroupSelect(selectedGroup, true);
                    }
                    return;
                }
            }
            if (lastSelected != null) {
                Element row = view.getRow(lastSelected).cast();
                Element group = view.findGroup(row).cast();
                if (row == view.getGroupRow(group, 0)) {
                    deselectAll();
                    selectedGroup = group;
                    view.onGroupSelect(selectedGroup, true);
                    return;
                }
            }
        }
    }
    int idx = listStore.indexOf(getLastFocused());
    if (idx >= 0) {
        if (e.isControlKey() || (e.isShiftKey() && isSelected(listStore.getAt(idx - 1)))) {
            if (!e.isControlKey()) {
                deselect(idx);
            }

            M lF = listStore.getAt(idx - 1);
            if (lF != null) {
                setLastFocused(lF);
                grid.getView().focusCell(idx - 1, 0, false);
            }

        } else {

            if (e.isShiftKey() && lastSelected != getLastFocused()) {
                select(listStore.indexOf(lastSelected), idx - 1, true);
                grid.getView().focusCell(idx - 1, 0, false);
            } else {
                if (idx > 0) {
                    selectPrevious(e.isShiftKey());
                    grid.getView().focusCell(idx - 1, 0, false);
                }
            }

        }
    }

    e.preventDefault();
}

From source file:com.extjs.gxt.ui.client.widget.grid.GridSelectionModel.java

License:sencha.com license

private int indexOf(NodeList<Element> elems, Element elem) {
    for (int i = 0; i < elems.getLength(); i++) {
        if (elems.getItem(i) == elem) {
            return i;
        }//from ww  w.  j a  va 2 s . c  om
    }
    return -1;
}

From source file:com.extjs.gxt.ui.client.widget.grid.GridView.java

License:sencha.com license

protected void initElements() {
    NodeList<Node> cs = grid.getElement().getFirstChild().getChildNodes();

    el = grid.el().firstChild();//from  w w  w  .j  a v a2s.c o  m

    mainWrap = new El((com.google.gwt.user.client.Element) cs.getItem(0));
    mainHd = mainWrap.firstChild();

    if (grid.isHideHeaders()) {
        mainHd.setVisible(false);
    }

    innerHd = mainHd.firstChild();

    scroller = mainWrap.getChild(1);
    scroller.addEventsSunk(Event.ONSCROLL);

    if (forceFit) {
        scroller.setStyleAttribute("overflowX", "hidden");
    }

    mainBody = scroller.firstChild();
    focusEl = scroller.getChild(1);
    grid.swallowEvent(Events.OnClick, focusEl.dom, true);
}