1/*
2 * Copyright 2001-2013 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus, superstippi@gmx.de
7 *		Marc Flerackers, mflerackers@androme.be
8 *		John Scipione, jscipione@gmail.com
9 */
10#ifndef _BMC_PRIVATE_H
11#define _BMC_PRIVATE_H
12
13
14#include <BeBuild.h>
15#include <MenuBar.h>
16#include <MessageFilter.h>
17
18
19static const float kVMargin = 2.0f;
20
21
22class _BMCFilter_ : public BMessageFilter {
23public:
24								_BMCFilter_(BMenuField* menuField, uint32 what);
25	virtual						~_BMCFilter_();
26
27	virtual	filter_result		Filter(BMessage* message, BHandler** handler);
28
29private:
30			_BMCFilter_&		operator=(const _BMCFilter_&);
31
32			BMenuField*			fMenuField;
33};
34
35
36class _BMCMenuBar_ : public BMenuBar {
37public:
38								_BMCMenuBar_(BRect frame, bool fixedSize,
39									BMenuField* menuField);
40								_BMCMenuBar_(BMenuField* menuField);
41								_BMCMenuBar_(BMessage* data);
42	virtual						~_BMCMenuBar_();
43
44	static	BArchivable*		Instantiate(BMessage* data);
45
46	virtual	void				AttachedToWindow();
47	virtual	void				Draw(BRect updateRect);
48	virtual	void				FrameResized(float width, float height);
49	virtual	void				MakeFocus(bool focused = true);
50	virtual	void				MessageReceived(BMessage* message);
51	virtual	void				SetMaxContentWidth(float width);
52	virtual	void				SetEnabled(bool enabled);
53
54			void				TogglePopUpMarker(bool show)
55									{ fShowPopUpMarker = show; }
56			bool				IsPopUpMarkerShown() const
57									{ return fShowPopUpMarker; }
58
59	virtual	BSize				MinSize();
60	virtual	BSize				MaxSize();
61
62private:
63								_BMCMenuBar_&operator=(const _BMCMenuBar_&);
64
65			void				_Init();
66
67			BMenuField*			fMenuField;
68			bool				fFixedSize;
69			bool				fShowPopUpMarker;
70			float				fPreviousWidth;
71};
72
73
74#endif // _BMC_PRIVATE_H
75