public void update() { boolean structureChanged = false; ArrayList<Download> al = new ArrayList<Download>(ui.getCore().getNetworkManager().getDownloadManager().downloads()); for (Download d : al) { DownloadWrapper dw = getWrapperFor(d); if (dw == null) { structureChanged = true; dw = new DownloadWrapper(d); rows.add(dw); } dw.update(); } for (Iterator i = rows.iterator(); i.hasNext(); ) { DownloadWrapper w = (DownloadWrapper) i.next(); if (!ui.getCore().getNetworkManager().getDownloadManager().contains(w.download)) { structureChanged = true; i.remove(); } } if (structureChanged) { model.fireTableStructureChanged(); } else { model.fireTableRowsUpdated(0, rows.size()); } showTotalBytesReceived(); selectDownloadToShowOnDownloadGrid(); updateDownloadingFromAndUploadingToText(); downloadGrid.repaint(); }