public void refreshResource(NetworkResource resource) { // Short circuit if it's not in the window if (!isResourceInWindow(resource, oldLeft, oldRight)) { return; } // Always display if we haven't displayed anything yet. if (displayed == null) { displayResource(oldLeft, oldRight, resource); return; } boolean found = false; for (int i = 0, l = displayed.size(); i < l; ++i) { ResourceRow row = displayed.get(i); if (row.getResource().equals(resource)) { row.refresh(); found = true; break; } } // It's in the window but not yet displayed, so create it if (!found) { displayResource(oldLeft, oldRight, resource); } }
/** * Display all resources that fall in the given window. * * @param left the left boundary * @param right the right boundary */ protected void displayResourcesInWindow(double left, double right) { NetworkVisualizationModel model = getModel(); // We dont need to update if we // have not shifted bounds. if ((displayed.size() > 0) && (left == oldLeft) && (right == oldRight)) { return; } else { oldLeft = left; oldRight = right; } // clean up Event Hookups for (int i = 0; i < displayed.size(); i++) { ResourceRow row = displayed.get(i); row.cleanUp(); } // blank the resource Panel displayed.clear(); getContentElement().setInnerHTML(""); // We do a naive linear search until the kinks can be ironed // out of more sophisticated search. List<NetworkResource> networkResources = model.getSortedResources(); for (int i = 0; i < networkResources.size(); i++) { NetworkResource resource = networkResources.get(i); if (isResourceInWindow(resource, left, right)) { displayResource(left, right, resource); } // Bail once we've hit the right edge if (resource.getStartTime() >= right) { break; } } if (shouldFlash) { CssTransitionFloat.get().transition(getElement(), "opacity", 0, 1, 200); shouldFlash = false; } }