xref: /haiku/headers/os/interface/ScrollView.h (revision d734a8ce5a83e48e17a2d0d6635090d48c5ad161)
1*d734a8ceSbeveloper /*******************************************************************************
2*d734a8ceSbeveloper /
3*d734a8ceSbeveloper /	File:			ScrollView.h
4*d734a8ceSbeveloper /
5*d734a8ceSbeveloper /   Description:    BScrollView provides scrolling machinery for its contents
6*d734a8ceSbeveloper /                   (where the "contents" is some other view).
7*d734a8ceSbeveloper /
8*d734a8ceSbeveloper /	Copyright 1993-98, Be Incorporated, All Rights Reserved
9*d734a8ceSbeveloper /
10*d734a8ceSbeveloper *******************************************************************************/
11*d734a8ceSbeveloper 
12*d734a8ceSbeveloper #ifndef	_SCROLL_VIEW_H
13*d734a8ceSbeveloper #define	_SCROLL_VIEW_H
14*d734a8ceSbeveloper 
15*d734a8ceSbeveloper #include <BeBuild.h>
16*d734a8ceSbeveloper #include <ScrollBar.h>		/* For convenience */
17*d734a8ceSbeveloper #include <View.h>
18*d734a8ceSbeveloper 
19*d734a8ceSbeveloper /*----------------------------------------------------------------*/
20*d734a8ceSbeveloper /*----- BScrollView class ----------------------------------------*/
21*d734a8ceSbeveloper 
22*d734a8ceSbeveloper class BScrollView : public BView {
23*d734a8ceSbeveloper 
24*d734a8ceSbeveloper public:
25*d734a8ceSbeveloper 						BScrollView(const char *name,
26*d734a8ceSbeveloper 								BView *target,
27*d734a8ceSbeveloper 								uint32 resizeMask = B_FOLLOW_LEFT |
28*d734a8ceSbeveloper 													B_FOLLOW_TOP,
29*d734a8ceSbeveloper 								uint32 flags = 0,
30*d734a8ceSbeveloper 								bool horizontal = false,
31*d734a8ceSbeveloper 								bool vertical = false,
32*d734a8ceSbeveloper 								border_style border = B_FANCY_BORDER);
33*d734a8ceSbeveloper 						BScrollView(BMessage *data);
34*d734a8ceSbeveloper virtual					~BScrollView();
35*d734a8ceSbeveloper static	BArchivable		*Instantiate(BMessage *data);
36*d734a8ceSbeveloper virtual	status_t		Archive(BMessage *data, bool deep = true) const;
37*d734a8ceSbeveloper 
38*d734a8ceSbeveloper virtual	void			Draw(BRect updateRect);
39*d734a8ceSbeveloper virtual	void			AttachedToWindow();
40*d734a8ceSbeveloper 		BScrollBar		*ScrollBar(orientation flag) const;
41*d734a8ceSbeveloper 
42*d734a8ceSbeveloper virtual	void			SetBorder(border_style border);
43*d734a8ceSbeveloper 		border_style	Border() const;
44*d734a8ceSbeveloper 
45*d734a8ceSbeveloper virtual	status_t		SetBorderHighlighted(bool state);
46*d734a8ceSbeveloper 		bool			IsBorderHighlighted() const;
47*d734a8ceSbeveloper 
48*d734a8ceSbeveloper 		void			SetTarget(BView *new_target);
49*d734a8ceSbeveloper 		BView			*Target() const;
50*d734a8ceSbeveloper 
51*d734a8ceSbeveloper virtual void			MessageReceived(BMessage *msg);
52*d734a8ceSbeveloper virtual	void			MouseDown(BPoint pt);
53*d734a8ceSbeveloper virtual void			WindowActivated(bool state);
54*d734a8ceSbeveloper virtual	void			MouseUp(BPoint pt);
55*d734a8ceSbeveloper virtual	void			MouseMoved(BPoint pt, uint32 code, const BMessage *msg);
56*d734a8ceSbeveloper virtual	void			DetachedFromWindow();
57*d734a8ceSbeveloper virtual	void			AllAttached();
58*d734a8ceSbeveloper virtual	void			AllDetached();
59*d734a8ceSbeveloper virtual	void			FrameMoved(BPoint new_position);
60*d734a8ceSbeveloper virtual	void			FrameResized(float new_width, float new_height);
61*d734a8ceSbeveloper 
62*d734a8ceSbeveloper virtual BHandler		*ResolveSpecifier(BMessage *msg,
63*d734a8ceSbeveloper 										int32 index,
64*d734a8ceSbeveloper 										BMessage *specifier,
65*d734a8ceSbeveloper 										int32 form,
66*d734a8ceSbeveloper 										const char *property);
67*d734a8ceSbeveloper 
68*d734a8ceSbeveloper virtual void			ResizeToPreferred();
69*d734a8ceSbeveloper virtual void			GetPreferredSize(float *width, float *height);
70*d734a8ceSbeveloper virtual void			MakeFocus(bool state = true);
71*d734a8ceSbeveloper virtual status_t		GetSupportedSuites(BMessage *data);
72*d734a8ceSbeveloper 
73*d734a8ceSbeveloper /*----- Private or reserved -----------------------------------------*/
74*d734a8ceSbeveloper virtual status_t		Perform(perform_code d, void *arg);
75*d734a8ceSbeveloper 
76*d734a8ceSbeveloper private:
77*d734a8ceSbeveloper 
78*d734a8ceSbeveloper friend class BView;
79*d734a8ceSbeveloper 
80*d734a8ceSbeveloper virtual	void			_ReservedScrollView1();
81*d734a8ceSbeveloper virtual	void			_ReservedScrollView2();
82*d734a8ceSbeveloper virtual	void			_ReservedScrollView3();
83*d734a8ceSbeveloper virtual	void			_ReservedScrollView4();
84*d734a8ceSbeveloper 
85*d734a8ceSbeveloper 		BScrollView		&operator=(const BScrollView &);
86*d734a8ceSbeveloper 
87*d734a8ceSbeveloper static	BRect			CalcFrame(BView *, bool, bool, border_style);
88*d734a8ceSbeveloper 		int32			ModFlags(int32, border_style);
89*d734a8ceSbeveloper 		void			InitObject();
90*d734a8ceSbeveloper 
91*d734a8ceSbeveloper 		BView			*fTarget;
92*d734a8ceSbeveloper 		BScrollBar		*fHSB;
93*d734a8ceSbeveloper 		BScrollBar		*fVSB;
94*d734a8ceSbeveloper 		border_style	fBorder;
95*d734a8ceSbeveloper 		uint16			fPrevWidth;
96*d734a8ceSbeveloper 		uint16			fPrevHeight;
97*d734a8ceSbeveloper 
98*d734a8ceSbeveloper 		uint32			_reserved[3];	/* was 4 */
99*d734a8ceSbeveloper 
100*d734a8ceSbeveloper 		bool			fHighlighted;
101*d734a8ceSbeveloper };
102*d734a8ceSbeveloper 
103*d734a8ceSbeveloper /*-------------------------------------------------------------*/
104*d734a8ceSbeveloper /*-------------------------------------------------------------*/
105*d734a8ceSbeveloper 
106*d734a8ceSbeveloper #endif /* _SCROLL_VIEW_H */
107