Warning: session_start(): open(/var/lib/php/sessions/sess_436fhe4knogjntv6b86mbrgilh, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass JG22Network is Swingable {
G22Utils g22utils;
new MainPanel mainPanel;
new G22Network network;
// example instance of the network so we can test it immediately
G22NetworkInstance networkInstance;
// margin on bottom/right
transient int margin = 50;
class MainPanel extends JPanel {
*() { super(null); } // no layout manager
public Dimension getPreferredSize() {
Rect r = combinedChildBounds(this);
if (r == null) r = rect(0, 0, 0, 0);
//_print("JG22Network.getPreferredSize = " + r);
ret new Dimension(r.x2()+margin, r.y2()+margin);
}
void revalidateMe() {
//_print("JG22Network.revalidateMe");
//awtLater(0.5, -> {
revalidateIncludingFullCenterContainer(this);
repaint();
//});
}
}
*(G22Utils *g22utils, G22Network *network) {
onChangeAndNow(network, -> makeInstance());
for (element : network.elements)
visualizeElement(element);
}
void makeInstance {
networkInstance = new G22NetworkInstance(network);
networkInstance.init(g22utils);
print("Network instance made");
}
void visualizeElement(G22NetworkElement element) swing {
mainPanel.add(new JG22NetworkElement(g22utils, this, element).visualize());
mainPanel.revalidateMe();
}
void newElement {
new G22NetworkElement element;
element.network(network);
network.elements.add(element);
network.change();
visualizeElement(element);
}
void deleteElement(JG22NetworkElement element) {
network.elements.remove(element.element);
network.change();
mainPanel.remove(element.visualize());
mainPanel.repaint();
}
cachedVisual
withRightAlignedButtons(/*jscroll_center_borderless*/jscroll(mainPanel),
"New element", rThread newElement);
}