1/*
2 * Copyright 2010, Clemens Zeidler <haiku@clemens-zeidler.de>
3 * Distributed under the terms of the MIT License.
4 */
5
6#include <stdio.h>
7
8#include <Application.h>
9#include <Button.h>
10#include <List.h>
11#include <Window.h>
12
13// include this for ALM
14#include "ALMLayout.h"
15#include "ALMLayoutBuilder.h"
16
17
18class ThreeButtonsWindow : public BWindow {
19public:
20	ThreeButtonsWindow(BRect frame)
21		:
22		BWindow(frame, "ALM Three Buttons", B_TITLED_WINDOW,
23			B_QUIT_ON_WINDOW_CLOSE)
24	{
25		BButton* button1 = new BButton("A");
26		BButton* button2 = new BButton("B");
27		BButton* button3 = new BButton("C");
28
29		button1->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
30			B_ALIGN_USE_FULL_HEIGHT));
31		button1->SetExplicitMaxSize(BSize(500, 50));
32
33		button2->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
34			B_ALIGN_USE_FULL_HEIGHT));
35		button2->SetExplicitMaxSize(BSize(500, 500));
36
37		button3->SetExplicitAlignment(BAlignment(B_ALIGN_USE_FULL_WIDTH,
38			B_ALIGN_USE_FULL_HEIGHT));
39		button3->SetExplicitMaxSize(BSize(500, 500));
40
41		fLayout = new BALMLayout(0, 0);
42		BALM::BALMLayoutBuilder(this, fLayout)
43			.Add(button1, fLayout->Left(), fLayout->Top(), fLayout->Right())
44			.StartingAt(button1)
45				.AddBelow(button2)
46				.AddBelow(button3, fLayout->Bottom());
47
48		// test size limits
49		BSize min = fLayout->MinSize();
50		BSize max = fLayout->MaxSize();
51		SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height());
52	}
53
54private:
55	BALMLayout* fLayout;
56
57};
58
59
60int
61main()
62{
63	BApplication app("application/x-vnd.haiku.ThreeButtons");
64
65	BRect frameRect;
66	frameRect.Set(100, 100, 600, 300);
67	ThreeButtonsWindow* window = new ThreeButtonsWindow(frameRect);
68	window->Show();
69
70	app.Run();
71	return 0;
72}
73