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