static LL showForm_makeComponents(Bool internalFrame, O... _parts) { IVF1 closeFrame = isTrue(internalFrame) ? l1 disposeInternalFrame : isFalse(internalFrame) ? l1 disposeFrame : null; ret showForm_makeComponents(closeFrame, _parts); } static LL showForm_makeComponents(IVF1 closeFrame, O... _parts) { new LL l; L parts = asList(_parts); JButton submitButton = null; for i over parts: if (parts.get(i) instanceof Swingable) parts.set(i, ((Swingable) parts.get(i)).visualize()); for i over parts: { O o = parts.get(i), next = get(parts, i+1); if (o instanceof S && next instanceof Component) setComponentID((Component) next, (S) o); if (o instanceof Component || o instanceof S || next instanceof Component) { // smartAdd accepts strings l.add(mapLL wrapForSmartAdd_jComponent( o == null ? new JPanel : o instanceof S ? humanizeFormLabel((S) o) : o, next)); if (next instanceof JButton && submitButton == null) submitButton = (JButton) next; i++; } else if (isRunnable(o)) l.add(mapLL wrapForSmartAdd_jComponent(null, submitButton = jbutton(showFormSubmitButtonName(), r { O result = call(o); print("Result of form runnable: " + result + ". Button: " + heldInstance(JButton)); if (neq(Bool.FALSE, result)) closeFrame?.get(heldInstance(JButton)); }))); else print("showForm: Unknown element type: " + getClassName(o)); } if (submitButton != null) { final JButton _submitButton = submitButton; onEnterInAllTextFields(concatLists(l), r { clickButton(_submitButton) }); } // massage labels for (L row : l) { JComponent left = first(row); if (left instanceof JLabel) makeBold((JLabel) left).setVerticalAlignment(JLabel.TOP); } ret l; }