1/*
2 * Copyright 2010, Clemens Zeidler <haiku@clemens-zeidler.de>
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <Application.h>
8#include <Button.h>
9#include <ControlLook.h>
10#include <SpaceLayoutItem.h>
11#include <Window.h>
12
13#include "ALMLayout.h"
14#include "ALMGroup.h"
15
16
17class OperatorWindow : public BWindow {
18public:
19	OperatorWindow(BRect frame)
20		:
21		BWindow(frame, "ALM Operator", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE)
22	{
23		BButton* button1 = new BButton("1");
24		BButton* button2 = new BButton("2");
25		BButton* button3 = new BButton("3");
26		BButton* button4 = new BButton("4");
27		BButton* button5 = new BButton("5");
28
29		button1->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
30		button2->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
31		button3->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
32		button4->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
33		button5->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
34
35		// create a new BALMLayout and use  it for this window
36		float spacing = be_control_look->DefaultItemSpacing();
37		BALMLayout* layout = new BALMLayout(spacing);
38		SetLayout(layout);
39		layout->SetInsets(spacing);
40
41		(ALMGroup(button1) | (ALMGroup(button2)
42		/ (ALMGroup(button3) | ALMGroup(BSpaceLayoutItem::CreateGlue())
43			| ALMGroup(button4))
44		/ ALMGroup(button5))).BuildLayout(layout);
45
46		// test size limits
47		BSize min = layout->MinSize();
48		BSize max = layout->MaxSize();
49		SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height());
50	}
51
52};
53
54
55int
56main()
57{
58	BApplication app("application/x-vnd.haiku.ALMOperator");
59
60	OperatorWindow* window = new OperatorWindow(BRect(100, 100, 300, 300));
61	window->Show();
62
63	app.Run();
64	return 0;
65}
66
67