1/*
2 * Copyright 2008-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 *		Axel Dörfler, axeld@pinc-software.de.
8 */
9#ifndef ABSTRACT_PARAMETERS_PANEL_H
10#define ABSTRACT_PARAMETERS_PANEL_H
11
12
13#include <LayoutBuilder.h>
14#include <Partition.h>
15#include <PartitionParameterEditor.h>
16#include <Window.h>
17
18#include "Support.h"
19
20
21class BMenuField;
22class BTextControl;
23
24
25class AbstractParametersPanel : public BWindow {
26public:
27								AbstractParametersPanel(BWindow* window);
28	virtual						~AbstractParametersPanel();
29
30	virtual	bool				QuitRequested();
31	virtual	void				MessageReceived(BMessage* message);
32
33			status_t			Go(BString& parameters);
34			void				Cancel();
35
36protected:
37			void				Init(B_PARAMETER_EDITOR_TYPE type,
38									const BString& diskSystem,
39									BPartition* partition);
40			status_t			Go(BString& parameters, BMessage& storage);
41
42	virtual bool				NeedsEditor() const;
43	virtual bool				ValidWithoutEditor() const;
44	virtual status_t			ParametersReceived(const BString& parameters,
45									BMessage& storage);
46	virtual	void				AddControls(BLayoutBuilder::Group<>& builder,
47									BView* editorView);
48
49protected:
50			BButton*			fOkButton;
51			status_t			fReturnStatus;
52
53			BPartitionParameterEditor* fEditor;
54
55private:
56	class EscapeFilter;
57			EscapeFilter*		fEscapeFilter;
58			sem_id				fExitSemaphore;
59			BWindow*			fWindow;
60};
61
62
63#endif // ABSTRACT_PARAMETERS_PANEL_H
64