#lang scribble/manual
@(require (for-label racket))

@title{Resize behaviour}
 Resize behavior for View and its subclasses@section{categories}
  GUI

@section{section}
  Description
@section{method}
  resize
The link::Classes/View#-resize:: method takes nine different values as argument defining the behavior of the view when the containing window is resized. Each view responds relatively to the stretches of its parent view.

@section{table}
 
## 1 || 2 || 3
## 4 || 5 || 6
## 7 || 8 || 9
::

@section{list}
 
## 1 - fixed to left, fixed to top
## 2 - horizontally elastic, fixed to top
## 3 - fixed to right, fixed to top

## 4 - fixed to left, vertically elastic
## 5 - horizontally elastic, vertically elastic
## 6 - fixed to right, vertically elastic

## 7 - fixed to left, fixed to bottom
## 8 - horizontally elastic, fixed to bottom
## 9 - fixed to right, fixed to bottom
::

@section{section}
  Examples


@racketblock[
// resize behaviours
// use the PopUpMenus to mix resize modes
(
var a;

a = { |i|
	var w, b, x,k,t,p;
	k=i;
	i = i + 1;
	w = Window("resize:"+i, Rect(10 + (k%3 * 220), Window.screenBounds.height- [250,460,670].at(k/3), 200, 180));
	b = w.view.bounds;
	x = CompositeView(w, w.view.bounds.insetBy(20,20))
		.background_(Color.rand)
		.resize_(i);

	y = CompositeView(x, x.bounds.moveTo(0,0).insetBy(20,20))
		.background_(Color.rand)
		.resize_(i);

	y.decorator = FlowLayout(y.bounds).gap_(0.0 @ 0.0);

	t = StaticText(y, Rect(0, 0, 40, 40))
		.background_(Color.rand.alpha_(0.8))
		.resize_(i)
		.string_(i)
		.font_(Font("Helvetica", 26));

	p=PopUpMenu(y,40@40).items_((1..9).collect(_.asString)).value_(i-1).resize_(i)
			.action_{|m| t.string_((m.value+1).asString); [p,t].do(_.resize_(m.value+1))};

	w.front;
	w.onClose = {a.do(_.close) };

} ! 9;
)


// the popupmenu contains the various modes

(
w = Window("soundfile test", Rect(200, 200, 720, 250));

p = PopUpMenu(w, Rect(10,10,80,24))
	.items_( Array.fill(9, {arg i; (i+1).asString;}) )
	.action_({ arg sbs;
		a.resize_(sbs.value+1);
	});

f = SoundFile.new;
f.openRead(Platform.resourceDir +/+ "sounds/a11wlk01.wav");

a = SoundFileView(w, Rect(10,40, 700, 180))
	.soundfile_(f)
	.readWithTask(0, f.numFrames, showProgress: false )
	.resize_(1);

w.front;
)
::
]


