This class is meant as an emulation of SCHLayoutView. last mod: 30-jul-07 sciss
Also refer to JSCView for different behaviour affecting all widgets
Note: please use the abstraction layer GUI.hLayoutView if possible! (see GUI)
A container view that lays out all its children vertically from top to bottom. For the horizontal version, see JSCHLayoutView.
( q = 10; w = JSCWindow.new; h = JSCVLayoutView(w,Rect(0,0,300,300)); Array.fill(q,{ arg i; JSCRangeSlider(h,Rect(0,0,75,20)).hi_(i / q); }); w.front )
Resize the window to see the effect.
// note: children can never exceed the bounds // of their parent container in swing !! ( q = 10; w = JSCWindow.new; h = JSCVLayoutView(w,Rect(10,10,300,300)); h.background = Color.red(alpha:0.2); h.resize = 5; // elastic Array.fill(q,{ arg i; var s; s = JSCRangeSlider(h,Rect(0,0,75,20)).hi_( i / q ); s }); w.front ) // Contents are elastic ( q = 10; w = JSCWindow.new; h = JSCVLayoutView(w,Rect(10,10,300,300)); h.background = Color.red(alpha:0.2); h.resize = 5; // elastic Array.fill(q,{ arg i; var s; s = JSCRangeSlider(h,Rect(0,0,75,20)).hi_( i / q ); s.resize = 5; // elastic s }); w.front ) // set minHeight on contents ( q = 5; w = JSCWindow.new; h = JSCVLayoutView(w,Rect(10,10,300,300)); h.background = Color.red(alpha:0.2); h.resize = 5; // elastic Array.fill(q,{ arg i; var s; s = JSCRangeSlider(h,Rect(0,0,75,20)).hi_( i / 5 ); if(i < 2,{ s.resize = 5; // some elastic s.setProperty(\minHeight,20); },{ s.resize = 1; // some not elastic }); s }); w.front ) ( q = 5; w = JSCWindow.new; h = JSCVLayoutView(w,Rect(0,0,300,300)); h.background = Color.red(alpha:0.2); h.resize = 5; // elastic Array.fill(q,{ arg i; var s; s = JSCRangeSlider(h,Rect(0,0,75,20)); s.hi = i / 5; s.resize = 5; s.setProperty(\minHeight,20); s.setProperty(\maxHeight,40); s }); w.front )
Default spacing between components is 4 pixels. You can alter this value but setting the 'spacing' property:
( q = 10; w = JSCWindow.new; v = JSCVLayoutView(w,Rect(10,10,300,300)); v.spacing = 0; // no padding Array.fill(q,{ JSCRangeSlider(v,Rect(0,0,75,20)) }); w.front ) v.spacing = 8;