1 #include <Application.h> 2 #include <Button.h> 3 #include <List.h> 4 #include <Window.h> 5 6 #include "ALMLayout.h" 7 8 9 class AreasWindow : public BWindow { 10 public: 11 AreasWindow(BRect frame) 12 : 13 BWindow(frame, "ALM Areas", B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE) 14 { 15 button1 = new BButton("1"); 16 button2 = new BButton("2"); 17 button3 = new BButton("3"); 18 button4 = new BButton("4"); 19 20 button1->SetExplicitMinSize(BSize(0, 0)); 21 button1->SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED)); 22 23 // create a new BALMLayout and use it for this window 24 BALMLayout* layout = new BALMLayout(6); 25 SetLayout(layout); 26 27 // create extra tabs 28 BReference<YTab> y1 = layout->AddYTab(); 29 BReference<YTab> y2 = layout->AddYTab(); 30 BReference<YTab> y3 = layout->AddYTab(); 31 32 Area* a1 = layout->AddView(button1, layout->Left(), layout->Top(), 33 layout->Right(), y1); 34 a1->SetTopInset(10); 35 a1->SetLeftInset(10); 36 a1->SetRightInset(10); 37 38 layout->AddView(button2, layout->Left(), y1, layout->Right(), y2); 39 button2->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_TOP)); 40 41 Area* a3 = layout->AddView(button3, layout->Left(), y2, layout->Right(), 42 y3); 43 button3->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, 44 B_ALIGN_VERTICAL_CENTER)); 45 a3->SetHeightAs(a1); 46 47 layout->AddView(button4, layout->Left(), y3, layout->Right(), 48 layout->Bottom()); 49 button4->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, 50 B_ALIGN_BOTTOM)); 51 52 // test size limits 53 BSize min = layout->MinSize(); 54 BSize max = layout->MaxSize(); 55 SetSizeLimits(min.Width(), max.Width(), min.Height(), max.Height()); 56 } 57 58 private: 59 BButton* button1; 60 BButton* button2; 61 BButton* button3; 62 BButton* button4; 63 }; 64 65 66 class Areas : public BApplication { 67 public: 68 Areas() 69 : 70 BApplication("application/x-vnd.haiku.Areas") 71 { 72 BRect frameRect; 73 frameRect.Set(100, 100, 300, 300); 74 AreasWindow* window = new AreasWindow(frameRect); 75 window->Show(); 76 } 77 }; 78 79 80 int 81 main() 82 { 83 Areas app; 84 app.Run(); 85 return 0; 86 } 87 88