public Rectangle getItemBounds(TreeMap subtree) { Rectangle rect = getClientArea(); int x = rect.x - (int) frame.offsetX; int y = rect.y - (int) frame.offsetY; int extent = (int) (Math.min(rect.width, rect.height) * frame.scale); TreeMap tree = treeMap; while (!tree.getNetblock().equals(subtree.getNetblock())) { int h = curve.getIndex(tree.getNetblock(), subtree.getNetblock()); int xi = h % 16; int yi = h / 16; x = x + (xi * extent / 16); y = y + (yi * extent / 16); extent = extent / 16; tree = tree.getSubTree(subtree.getNetblock()); } return new Rectangle(x, y, extent, extent); }