srecord noeq JG22NetworkPort(G22Utils g22utils, JG22NetworkElement element, G22NetworkElement.Port port) > JPanel { int size = 10; Color outputColor() { ret Color.green; } Color inputColor() { ret Color.red; } void init { bindChangeListenerToComponent(this, port, l0 update); update(); } void update { _print("Updating port " + port); setOpaque(true); setBackground(port.isOutput() ? outputColor() : inputColor()); setSize(size, size); // TODO: merge with backend computation Rect r = toRect(main getBounds(element.visualize())); r = growRectTopAndLeft(r, size); setLocation(r.x+iround(port.position.x*r.w), r.y+iround(port.position.y*r.h)); setToolTip(this, str(port)); _print("Port " + port.name + " : " + getBounds()); } }