public void zoomDraw(Graphics2D g) {
        int edgeHeight = 20;
        int indent = 25;
        int width = CONST.zoomWindowWidth - 2 * indent, height = CONST.zoomWindowHeight - 2
                * indent;
        g.setColor(new Color(0, 255, 0, 100));
        g.fillRect(indent, indent, width, height);
        g.setColor(new Color(0, 0, 0));
        g.drawRect(indent, indent, width, height);
        g.drawLine(indent, indent + edgeHeight, width + indent, indent + edgeHeight);
        g.drawLine(indent, height + indent - edgeHeight, width + indent, height + indent
                - edgeHeight);
        ArrayList<String> neigh = new ArrayList<String>();
        for (int i = 0; i < edges.size(); ++i) {
            String cap = "";
            if (GUI.player.state != RunState.stopped && program != null)
                cap += program.ports.get(i) + ":";
            cap += edges.get(i).to.getID();
            neigh.add(cap);
        }
        int n = neigh.size();
        int up = n / 2, down = n / 2 + n % 2;
        for (int i = 0; i < up - 1; i++) {
            g.drawLine(indent + (i + 1) * (width / up), indent, indent + (i + 1) * (width / up),
                    indent + edgeHeight);
        }
        for (int i = 0; i < down - 1; i++) {
            g.drawLine(indent + (i + 1) * (width / down), CONST.zoomWindowHeight - indent
                    - edgeHeight, indent + (i + 1) * (width / down), CONST.zoomWindowHeight
                    - indent);
        }
        int fontSize = 1000;
        for (String cap : neigh) {
            fontSize = Math.min(fontSize, findFontSize(g, width / down, edgeHeight, cap));
        }
        for (int i = 0; i < up; i++) {
            int boxWidth = width / up;
            String caption = neigh.get(i);
            g.setFont(new Font(null, Font.PLAIN, fontSize));
            int textWidth = g.getFontMetrics().stringWidth(caption);
            g.drawString(neigh.get(i), indent + i * boxWidth + (boxWidth - textWidth) / 2, indent
                    + edgeHeight - 1);
            g.drawLine(indent + i * boxWidth + boxWidth / 2, indent, indent + i * boxWidth
                    + boxWidth / 2, 0);
        }
        for (int i = 0; i < down; i++) {
            int boxWidth = width / down;
            String caption = neigh.get(up + i);
            g.setFont(new Font(null, Font.PLAIN, fontSize));
            int textWidth = g.getFontMetrics().stringWidth(caption);
            g.drawString(neigh.get(up + i), indent + i * boxWidth + (boxWidth - textWidth) / 2,
                    CONST.zoomWindowHeight - indent - 1);
            g.drawLine(indent + i * boxWidth + boxWidth / 2, CONST.zoomWindowHeight - indent,
                    indent + i * boxWidth + boxWidth / 2, CONST.zoomWindowHeight);
        }
        g.setFont(new Font(null, Font.PLAIN, 15));
        g.drawString("ID: " + ((Integer) this.getID()).toString(), indent + 5, indent + edgeHeight
                + 15);
        Iterator<Entry<String, String>> it = watchVariables.entrySet().iterator();
        int count = 2;
        while (it.hasNext()) {
            Map.Entry<String, String> me = it.next();
            g.drawString(me.getKey() + ": " + me.getValue(), indent + 5, indent + edgeHeight + 15
                    * count);
            count++;
        }
    }