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