#ifndef __FOLDER_WINDOW_H__
#define __FOLDER_WINDOW_H__

#include <gui/window.h>
#include <gui/view.h>
#include <gui/rect.h>
#include <gui/menu.h>
#include <gui/button.h>
#include <gui/textview.h>
#include <gui/stringview.h>
#include <gui/requesters.h>
#include <util/application.h>
#include <util/message.h>
#include <stdio.h>

#include "filesView.h"
#include "mimeTable.h"

namespace os {
	class DirectoryView;
}

#define MAX_PATH_SIZE 4096

#define appConfig struct _appConfig

struct _appConfig
{
	mimeTable *mainMimeTable;
};

enum {
	ID_MENU_FILE_EXIT,
	ID_MENU_EDIT_CPFILE,
	ID_MENU_EDIT_MVFILE,
	ID_MENU_EDIT_DELETE,
	ID_MENU_EDIT_CUT,
	ID_MENU_EDIT_COPY,
	ID_MENU_EDIT_PASTE,
	ID_MENU_EDIT_OPTIONS,
	ID_MENU_HELP_ABOUT,

	ID_BUTTON_UP,
	ID_BUTTON_HOME,
	ID_BUTTON_REFRESH,

	ID_SELECTION_CHANGE,
	ID_DIRECTORY_CHANGE,
	ID_DIRECTORY_INVOKED,
	ID_LOCATION_BAR_INVOKED
};

class folderWindow:public os::Window
{
public:
	folderWindow( char *path, appConfig * inputConfig );

	virtual void HandleMessage( os::Message * pcMessage );
	virtual bool OkToQuit();

private:
	void DirectoryUp();

	os::Menu * mainMenu, *tempSubMenu;
	os::Button *parentButton;
	os::StringView *locationLabel;
	os::TextView *locationBar;
	FilesView *mainView;
	os::DirectoryView *mainView2;
	os::StringView *infoLabel;

	char windowPath[MAX_PATH_SIZE];
	_appConfig *mainConfig;
};

#endif /* __FOLDER_WINDOW_H__ */