/** * Returns the group that this row belongs to, or null. * @since 3.5.0 */ public Group getGroup() { final Rows rows = (Rows) getParent(); return (rows != null) ? rows.getGroup(getIndex()) : null; }
public void renderItems(Set<? extends Row> rows) { if (_model == null) { //just in case that application developers might change it if (log.isDebugEnabled()) log.debug("No model no render"); return; } if (rows.isEmpty()) return; //nothing to do final Renderer renderer = new Renderer(); try { for (final Row row : rows) renderer.render(row, row.getIndex()); } catch (Throwable ex) { renderer.doCatch(ex); } finally { renderer.doFinally(); } }
int index = newItem.getIndex(); final int[] g = getGroupsInfoAt(index); if (g != null) {
if (refChild == null) { if (isReorder) { final int idx = newItem.getIndex(); final int[] ginfo = getGroupsInfoAt(idx); if (ginfo != null) { g[2] = getChildren().size() - (isReorder ? 2 : 1); } else { final int idx = ((Row) refChild).getIndex(); final int[] g = getGroupsInfoAt(idx); if (g == null) g[2] = idx - 1; if (isReorder) { final int nindex = newItem.getIndex(); final int[] ginfo = getGroupsInfoAt(nindex); if (ginfo != null) {
/** Renders the specified {@link Row} if not loaded yet, * with {@link #getRowRenderer}. * * <p>It does nothing if {@link #getModel} returns null. * In other words, it is meaningful only if live data model is used. */ public void renderRow(Row row) { if (_model == null) return; final Renderer renderer = new Renderer(); try { renderer.render(row, row.getIndex()); } catch (Throwable ex) { renderer.doCatch(ex); } finally { renderer.doFinally(); } }
/** * Re-renders a previously rendered row. * * @param row Row to re-render. */ protected void rerender(Row row) { try { ZKUtil.detachChildren(row); grid.getRowRenderer().render(row, row.getValue(), row.getIndex()); } catch (Exception e) { throw MiscUtil.toUnchecked(e); } }
public boolean setVisible(boolean visible) { if (isVisible() != visible) { final Rows rows = (Rows) getParent(); if (rows != null) { final Group g = rows.getGroup(getIndex()); if (g == null || g.isOpen()) rows.addVisibleItemCount(visible ? 1 : -1); } } return super.setVisible(visible); }
private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { s.defaultReadObject(); _model = (ListModel) s.readObject(); didDeserialize(_model); _renderer = (RowRenderer) s.readObject(); didDeserialize(_renderer); init(); afterUnmarshal(-1); int offset = s.readInt(); int limit = s.readInt(); resetDataLoader(false); // no need to reset, it will reset the old reference. getDataLoader().init(this, offset, limit); //TODO: how to marshal _pgi if _pgi != _paging //TODO: re-register event listener for onPaging if (_model != null) { initDataListener(); getDataLoader().setLoadAll(_renderAll); // Map#Entry cannot be serialized, we have to restore them if (_model instanceof ListModelMap && _rows != null) { for (Component o : _rows.getChildren()) { Row item = (Row) o; item.setValue(_model.getElementAt(item.getIndex())); } } } }
/** Renders all {@link Row} if not loaded yet, * with {@link #getRowRenderer}. */ public void renderAll() { if (_model == null) return; _renderAll = true; getDataLoader().setLoadAll(_renderAll); final Renderer renderer = new Renderer(); if (!_rows.getChildren().isEmpty()) try { Row row = (Row) _rows.getChildren().get(0); int index = row.getIndex(); for (Row nxt; row != null; row = nxt) { nxt = (Row) row.getNextSibling(); //retrieve first since it might be changed renderer.render(row, index++); } } catch (Throwable ex) { renderer.doCatch(ex); } finally { renderer.doFinally(); } }
/** * If the child is a group, its groupfoot will be removed at the same time. */ public boolean removeChild(Component child) { if (child.getParent() == this) beforeRemove(child); final boolean hasGroup = hasGroup(); int index = ((Row) child).getIndex(); if (super.removeChild(child)) { ((Row) child).setIndexDirectly(-1); fixGroupsInfoAfterRemove((Row) child, index); return true; } return false; }
public boolean insertBefore(Component child, Component refChild) { final Grid grid = getGrid(); final boolean isReorder = child.getParent() == this; //bug #3051305: Active Page not update when drag & drop item to the end if (isReorder) { checkInvalidateForMoved(child, true); } Row newItem = (Row) child; final int jfrom = hasGroup() && newItem.getParent() == this ? newItem.getIndex() : -1; fixGroupsInfoBeforeInsert(newItem, (Row) refChild, isReorder); if (super.insertBefore(child, refChild)) { final int jto = refChild instanceof Row ? ((Row) refChild).getIndex() : -1, fixFrom = jfrom < 0 || (jto >= 0 && jfrom > jto) ? jto : jfrom; if (fixFrom < 0) { newItem.setIndexDirectly( getChildren().size() - 1 + (grid != null ? grid.getDataLoader().getOffset() : 0)); } else { fixGroupIndex(fixFrom, jfrom >= 0 && jto >= 0 ? jfrom > jto ? jfrom : jto : -1, !isReorder); } fixGroupsInfoAfterInsert(newItem); //bug #3049167: Totalsize increase when drag & drop in paging Listbox/Grid if (!isReorder) { afterInsert(child); } return true; } return false; }