/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef LOCATABLE_DIRECTORY_H
#define LOCATABLE_DIRECTORY_H

#include "LocatableEntry.h"


class LocatableDirectory : public LocatableEntry {
public:
								LocatableDirectory(LocatableEntryOwner* owner,
									LocatableDirectory* parent,
									const BString& path);
								~LocatableDirectory();

	virtual	const char*			Name() const;
			const char*			Path() const;
			void				GetPath(BString& _path) const;

			// mutable (requires locking)
	virtual	bool				GetLocatedPath(BString& _path) const;
	virtual	void				SetLocatedPath(const BString& path,
									bool implicit);

			void				AddEntry(LocatableEntry* entry);
			void				RemoveEntry(LocatableEntry* entry);
			const LocatableEntryList& Entries() const	{ return fEntries; }

private:
			BString				fPath;
			BString				fLocatedPath;
			LocatableEntryList	fEntries;
};


#endif	// LOCATABLE_DIRECTORY_H