xref: /haiku/headers/os/interface/Box.h (revision 52a380120846174213ccce9c4aab0dda17c72083)
1*52a38012Sejakowatz //------------------------------------------------------------------------------
2*52a38012Sejakowatz //	Copyright (c) 2001-2002, OpenBeOS
3*52a38012Sejakowatz //
4*52a38012Sejakowatz //	Permission is hereby granted, free of charge, to any person obtaining a
5*52a38012Sejakowatz //	copy of this software and associated documentation files (the "Software"),
6*52a38012Sejakowatz //	to deal in the Software without restriction, including without limitation
7*52a38012Sejakowatz //	the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*52a38012Sejakowatz //	and/or sell copies of the Software, and to permit persons to whom the
9*52a38012Sejakowatz //	Software is furnished to do so, subject to the following conditions:
10*52a38012Sejakowatz //
11*52a38012Sejakowatz //	The above copyright notice and this permission notice shall be included in
12*52a38012Sejakowatz //	all copies or substantial portions of the Software.
13*52a38012Sejakowatz //
14*52a38012Sejakowatz //	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*52a38012Sejakowatz //	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*52a38012Sejakowatz //	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17*52a38012Sejakowatz //	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*52a38012Sejakowatz //	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19*52a38012Sejakowatz //	FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20*52a38012Sejakowatz //	DEALINGS IN THE SOFTWARE.
21*52a38012Sejakowatz //
22*52a38012Sejakowatz //	File Name:		Box.h
23*52a38012Sejakowatz //	Author:			Marc Flerackers (mflerackers@androme.be)
24*52a38012Sejakowatz //	Description:	BBox objects group views together and draw a border
25*52a38012Sejakowatz //                  around them.
26*52a38012Sejakowatz //------------------------------------------------------------------------------
27*52a38012Sejakowatz 
28*52a38012Sejakowatz #ifndef _BOX_H
29*52a38012Sejakowatz #define _BOX_H
30*52a38012Sejakowatz 
31*52a38012Sejakowatz // Standard Includes -----------------------------------------------------------
32*52a38012Sejakowatz 
33*52a38012Sejakowatz // System Includes -------------------------------------------------------------
34*52a38012Sejakowatz #include <BeBuild.h>
35*52a38012Sejakowatz #include <View.h>
36*52a38012Sejakowatz 
37*52a38012Sejakowatz // Project Includes ------------------------------------------------------------
38*52a38012Sejakowatz 
39*52a38012Sejakowatz // Local Includes --------------------------------------------------------------
40*52a38012Sejakowatz 
41*52a38012Sejakowatz // Local Defines ---------------------------------------------------------------
42*52a38012Sejakowatz 
43*52a38012Sejakowatz // Globals ---------------------------------------------------------------------
44*52a38012Sejakowatz 
45*52a38012Sejakowatz 
46*52a38012Sejakowatz // BBox class ------------------------------------------------------------------
47*52a38012Sejakowatz class BBox : public BView {
48*52a38012Sejakowatz 
49*52a38012Sejakowatz public:
50*52a38012Sejakowatz 						BBox(BRect frame,
51*52a38012Sejakowatz 							const char *name = NULL,
52*52a38012Sejakowatz 							uint32 resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
53*52a38012Sejakowatz 							uint32 flags = B_WILL_DRAW | B_FRAME_EVENTS |
54*52a38012Sejakowatz 											B_NAVIGABLE_JUMP,
55*52a38012Sejakowatz 							border_style border = B_FANCY_BORDER);
56*52a38012Sejakowatz virtual					~BBox();
57*52a38012Sejakowatz 
58*52a38012Sejakowatz /* Archiving */
59*52a38012Sejakowatz 						BBox(BMessage *archive);
60*52a38012Sejakowatz static	BArchivable		*Instantiate(BMessage *archive);
61*52a38012Sejakowatz virtual	status_t		Archive(BMessage *archive, bool deep = true) const;
62*52a38012Sejakowatz 
63*52a38012Sejakowatz virtual	void			SetBorder(border_style border);
64*52a38012Sejakowatz 		border_style	Border() const;
65*52a38012Sejakowatz 
66*52a38012Sejakowatz 		void			SetLabel(const char *string);
67*52a38012Sejakowatz 		status_t		SetLabel(BView *viewLabel);
68*52a38012Sejakowatz 
69*52a38012Sejakowatz 		const char		*Label() const;
70*52a38012Sejakowatz 		BView			*LabelView() const;
71*52a38012Sejakowatz 
72*52a38012Sejakowatz virtual	void			Draw(BRect updateRect);
73*52a38012Sejakowatz virtual	void			AttachedToWindow();
74*52a38012Sejakowatz virtual	void			DetachedFromWindow();
75*52a38012Sejakowatz virtual	void			AllAttached();
76*52a38012Sejakowatz virtual	void			AllDetached();
77*52a38012Sejakowatz virtual void			FrameResized(float width, float height);
78*52a38012Sejakowatz virtual void			MessageReceived(BMessage *message);
79*52a38012Sejakowatz virtual	void			MouseDown(BPoint point);
80*52a38012Sejakowatz virtual	void			MouseUp(BPoint point);
81*52a38012Sejakowatz virtual	void			WindowActivated(bool active);
82*52a38012Sejakowatz virtual	void			MouseMoved(BPoint point, uint32 transit,
83*52a38012Sejakowatz 								   const BMessage *message);
84*52a38012Sejakowatz virtual	void			FrameMoved(BPoint newLocation);
85*52a38012Sejakowatz 
86*52a38012Sejakowatz virtual BHandler		*ResolveSpecifier(BMessage *message,
87*52a38012Sejakowatz 										int32 index,
88*52a38012Sejakowatz 										BMessage *specifier,
89*52a38012Sejakowatz 										int32 what,
90*52a38012Sejakowatz 										const char *property);
91*52a38012Sejakowatz 
92*52a38012Sejakowatz virtual void			ResizeToPreferred();
93*52a38012Sejakowatz virtual void			GetPreferredSize(float *width, float *height);
94*52a38012Sejakowatz virtual void			MakeFocus(bool focused = true);
95*52a38012Sejakowatz virtual status_t		GetSupportedSuites(BMessage *message);
96*52a38012Sejakowatz 
97*52a38012Sejakowatz virtual status_t		Perform(perform_code d, void *arg);
98*52a38012Sejakowatz 
99*52a38012Sejakowatz private:
100*52a38012Sejakowatz 
101*52a38012Sejakowatz virtual	void			_ReservedBox1();
102*52a38012Sejakowatz virtual	void			_ReservedBox2();
103*52a38012Sejakowatz 
104*52a38012Sejakowatz 		BBox			&operator=(const BBox &);
105*52a38012Sejakowatz 
106*52a38012Sejakowatz 		void			InitObject(BMessage *data = NULL);
107*52a38012Sejakowatz 		void			DrawPlain();
108*52a38012Sejakowatz 		void			DrawFancy();
109*52a38012Sejakowatz 		void			ClearAnyLabel();
110*52a38012Sejakowatz 
111*52a38012Sejakowatz 		char			*fLabel;
112*52a38012Sejakowatz 		BRect			fBounds;
113*52a38012Sejakowatz 		border_style	fStyle;
114*52a38012Sejakowatz 		BView			*fLabelView;
115*52a38012Sejakowatz 		uint32			_reserved[1];
116*52a38012Sejakowatz };
117*52a38012Sejakowatz //------------------------------------------------------------------------------
118*52a38012Sejakowatz 
119*52a38012Sejakowatz #endif // _BOX_H
120*52a38012Sejakowatz 
121*52a38012Sejakowatz /*
122*52a38012Sejakowatz  * $Log $
123*52a38012Sejakowatz  *
124*52a38012Sejakowatz  * $Id  $
125*52a38012Sejakowatz  *
126*52a38012Sejakowatz  */
127