⛏️ index : haiku.git

/*
 * Copyright 2008-2013 Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT license.
 *
 * Authors:
 *		Stephan Aßmus <superstippi@gmx.de>
 *		Axel DΓΆrfler, axeld@pinc-software.de.
 */
#ifndef ABSTRACT_PARAMETERS_PANEL_H
#define ABSTRACT_PARAMETERS_PANEL_H


#include <LayoutBuilder.h>
#include <Partition.h>
#include <PartitionParameterEditor.h>
#include <Window.h>

#include "Support.h"


class BMenuField;
class BTextControl;


class AbstractParametersPanel : public BWindow {
public:
								AbstractParametersPanel(BWindow* window);
	virtual						~AbstractParametersPanel();

	virtual	bool				QuitRequested();
	virtual	void				MessageReceived(BMessage* message);

			status_t			Go(BString& parameters);
			void				Cancel();

protected:
			void				Init(B_PARAMETER_EDITOR_TYPE type,
									const BString& diskSystem,
									BPartition* partition);
			status_t			Go(BString& parameters, BMessage& storage);

	virtual bool				NeedsEditor() const;
	virtual bool				ValidWithoutEditor() const;
	virtual status_t			ParametersReceived(const BString& parameters,
									BMessage& storage);
	virtual	void				AddControls(BLayoutBuilder::Group<>& builder,
									BView* editorView);

protected:
			BButton*			fOkButton;
			status_t			fReturnStatus;

			BPartitionParameterEditor* fEditor;

private:
	class EscapeFilter;
			EscapeFilter*		fEscapeFilter;
			sem_id				fExitSemaphore;
			BWindow*			fWindow;
};


#endif // ABSTRACT_PARAMETERS_PANEL_H