public void doListDataChange(ListDataEvent event) { // when this is called _model is never null final ListModel _model = _listbox.getModel(); final int newsz = _model.getSize(), oldsz = _listbox.getItemCount(); int min = event.getIndex0(), max = event.getIndex1(), cnt; switch (event.getType()) { case ListDataEvent.INTERVAL_ADDED: cnt = newsz - oldsz; if (cnt <= 0) throw new UiException("Adding causes a smaller list?"); if ((oldsz <= 0 || cnt > INVALIDATE_THRESHOLD) && !inPagingMold()) _listbox.invalidate(); // Bug 3147518: avoid memory leak // Also better performance (outer better than remove a lot) if (min < 0) if (max < 0) min = 0; else min = max - cnt + 1; if (min > oldsz) min = oldsz; ListitemRenderer renderer = null; final Component next = min < oldsz ? _listbox.getItemAtIndex(min) : null; while (--cnt >= 0) { if (renderer == null) renderer = (ListitemRenderer) getRealRenderer(); _listbox.insertBefore(newUnloadedItem(renderer, min++), next); } break; case ListDataEvent.INTERVAL_REMOVED: cnt = oldsz - newsz; if (cnt <= 0) throw new UiException("Removal causes a larger list?"); if (min >= 0) max = min + cnt - 1; else if (max < 0) max = cnt - 1; // 0 ~ cnt - 1 if (max > oldsz - 1) max = oldsz - 1; if ((newsz <= 0 || cnt > INVALIDATE_THRESHOLD) && !inPagingMold()) _listbox.invalidate(); // Bug 3147518: avoid memory leak // Also better performance (outer better than remove a lot) // detach from end (due to groopfoot issue) Component comp = _listbox.getItemAtIndex(max); while (--cnt >= 0) { Component p = comp.getPreviousSibling(); comp.detach(); comp = p; } break; default: // CONTENTS_CHANGED syncModel(min, max); } }
// Metodo para buscar // public void buscarDatos() throws Exception { try { Map<String, Object> parameters = new HashMap<String, Object>(); String value = tbxValue.getValue().trim().toUpperCase(); parameters.put("codigo_empresa", codigo_empresa); parameters.put("codigo_sucursal", codigo_sucursal); String parameter = lbxParameter.getSelectedItem().getValue().toString(); parameters.put("parameter", parameter); parameters.put("value", "%" + value + "%"); parameters.put("limite_paginado", "limit 25 offset 0"); List<Maestro_manual> lista_datos = maestro_manualService.listar(parameters); listboxResultado.getItems().clear(); divPopups.getChildren().clear(); for (Maestro_manual maestro_manual : lista_datos) { listboxResultado.appendChild(crearFilas(maestro_manual, this)); } listboxResultado.applyProperties(); listboxResultado.invalidate(); } catch (Exception e) { MensajesUtil.mensajeError(e, "", this); } }
public void renderizarMapaDatos() { listboxProcedimientos.getItems().clear(); for (Long key_map : mapa_datos_procedimientos.keySet()) { Map<String, Object> pcd = (Map<String, Object>) mapa_datos_procedimientos.get(key_map); adicionarProcedimiento(pcd); } listboxProcedimientos.invalidate(); }
// Accion del formulario si es nuevo o consultar // public void accionForm(boolean sw, String accion) throws Exception { groupboxConsulta.setVisible(!sw); groupboxEditar.setVisible(sw); if (!accion.equalsIgnoreCase("registrar")) { buscarDatos(); rowId_manual.setVisible(true); lbxTipo_manual.setDisabled(true); listboxProcedimientos.setVisible(true); listboxProcedimientos.invalidate(); } else { // buscarDatos(); limpiarDatos(); rowId_manual.setVisible(false); lbxTipo_manual.setDisabled(false); listboxProcedimientos.setVisible(false); procedimientos_seleccionados.clear(); } tbxAccion.setValue(accion); }
private void syncModel0(int offset, int limit) { int min = offset; int max = offset + limit - 1; final ListModel _model = _listbox.getModel(); final int newsz = _model.getSize(); final int oldsz = _listbox.getItemCount(); final Paginal _pgi = _listbox.getPaginal(); final boolean inPaging = inPagingMold(); final boolean shallInvalidated = // Bug 3147518: avoid memory leak (min < 0 || min == 0) && (max < 0 || max >= newsz || max >= oldsz); int newcnt = newsz - oldsz; int atg = _pgi != null ? _listbox.getActivePage() : 0; ListitemRenderer renderer = null; Component next = null; if (oldsz > 0) { if (min < 0) min = 0; else if (min > oldsz - 1) min = oldsz - 1; if (max < 0) max = oldsz - 1; else if (max > oldsz - 1) max = oldsz - 1; if (min > max) { int t = min; min = max; max = t; } int cnt = max - min + 1; // # of affected if (_model instanceof GroupsListModel) { // detach all from end to front since groupfoot // must be detached before group newcnt += cnt; // add affected later if ((shallInvalidated || newcnt > INVALIDATE_THRESHOLD) && !inPaging) _listbox.invalidate(); // Bug 3147518: avoid memory leak // Also better performance (outer better than remove a lot) Component comp = _listbox.getItemAtIndex(max); next = comp.getNextSibling(); while (--cnt >= 0) { Component p = comp.getPreviousSibling(); comp.detach(); comp = p; } } else { // ListModel int addcnt = 0; Component item = _listbox.getItemAtIndex(min); while (--cnt >= 0) { next = item.getNextSibling(); if (cnt < -newcnt) { // if shrink, -newcnt > 0 item.detach(); // remove extra } else if (((Listitem) item).isLoaded()) { if (renderer == null) renderer = (ListitemRenderer) getRealRenderer(); item.detach(); // always detach _listbox.insertBefore(newUnloadedItem(renderer, min), next); ++addcnt; } ++min; item = next; // B2100338.,next item could be Paging, don't use Listitem directly } if ((shallInvalidated || addcnt > INVALIDATE_THRESHOLD || addcnt + newcnt > INVALIDATE_THRESHOLD) && !inPagingMold()) _listbox.invalidate(); // Bug 3147518: avoid memory leak // Also better performance (outer better than remove a lot) } } else { min = 0; } for (; --newcnt >= 0; ++min) { if (renderer == null) renderer = (ListitemRenderer) getRealRenderer(); _listbox.insertBefore(newUnloadedItem(renderer, min), next); } if (_pgi != null) { if (atg >= _pgi.getPageCount()) atg = _pgi.getPageCount() - 1; _pgi.setActivePage(atg); } }