1//--------------------------------------------------------------------
2//
3//	ViewLayoutFactory.h
4//
5//	Written by: Owen Smith
6//
7//--------------------------------------------------------------------
8
9/*
10	Copyright 1999, Be Incorporated.   All Rights Reserved.
11	This file may be used under the terms of the Be Sample Code License.
12*/
13
14#ifndef _ViewLayoutFactory_h
15#define _ViewLayoutFactory_h
16
17#include <InterfaceKit.h>
18#include <SupportDefs.h>
19
20typedef enum { CORNER_TOPLEFT, CORNER_BOTTOMLEFT,
21	CORNER_TOPRIGHT, CORNER_BOTTOMRIGHT } corner;
22
23// bit flags
24typedef enum { RECT_WIDTH = 1, RECT_HEIGHT,
25	RECT_WIDTH_AND_HEIGHT } rect_dim;
26
27typedef enum { ALIGN_LEFT, ALIGN_TOP, ALIGN_RIGHT,
28	ALIGN_BOTTOM, ALIGN_HCENTER, ALIGN_VCENTER } align_side;
29
30//====================================================================
31//	CLASS: ViewLayoutFactory
32// ---------------------------
33//  A class, still under construction, that handles some
34//	simple view layout problems. Primarily, it creates
35//	standard Interface Kit views that are automatically
36//	set to their preferred size. In addition, it provides:
37//
38//	* Positioning of views using any one of the corners of
39//	the view's rectangle
40//	* Alignment of a group of views along one edge or center,
41//	to a specified distance between views.
42//	* Adjustment of the width or height of a group of views
43//	to the maximum value represented by the group.
44//	* Resizing of a view to surround all of its children,
45//	plus a specified margin on the right and bottom sides.
46
47class ViewLayoutFactory
48{
49	//----------------------------------------------------------------
50	//	Factory generators
51
52public:
53	BButton*		MakeButton(const char* name, const char* label,
54						uint32 msgID, BPoint pos,
55						corner posRef = CORNER_TOPLEFT);
56	BCheckBox*		MakeCheckBox(const char* name, const char* label,
57						uint32 msgID, BPoint pos,
58						corner posRef = CORNER_TOPLEFT);
59	BTextControl*	MakeTextControl(const char* name, const char* label,
60						const char* text, BPoint pos, float controlWidth,
61						corner posRef = CORNER_TOPLEFT);
62
63	void			LayoutTextControl(BTextControl& control,
64						BPoint pos, float controlWidth,
65						corner posRef = CORNER_TOPLEFT);
66
67	//----------------------------------------------------------------
68	//	Other operations
69
70public:
71	void			MoveViewCorner(BView& view, BPoint pos,
72						corner posRef = CORNER_TOPLEFT);
73	void			Align(BList& viewList, align_side side,
74						float alignLen);
75	void			ResizeToListMax(BList& viewList, rect_dim resizeDim,
76						corner anchor = CORNER_TOPLEFT);
77	void			ResizeAroundChildren(BView& view, BPoint margin);
78};
79
80#endif /* _ViewLayoutFactory_h */
81