/////////////////////////////////////////////////////////////////////////////
// Name:        dbmodel.h
// Purpose:     Database Objects
// Author:      Daniel Horak
// Modified by:
// RCS-ID:      $Id: dbmodel.h,v 1.3 2004/01/01 13:56:19 horakdan Exp $
// Copyright:   (c) Daniel Horak
// Licence:     GPL
/////////////////////////////////////////////////////////////////////////////

#ifndef __DBMODEL_H
#define __DBMODEL_H

class DBEntity;
class DBModelEntityContainer;
class DBModelEntityListCtrl;
class DBModelRelationContainer;

class DBModel : public DBObject
{
public:
	DBModel(DataDesignerProject *project, DataDesignerContainer *container);
	virtual ~DBModel();
	
	virtual wxDialog *Editor(bool edit);
	
	virtual void LoadXmlNode(wxXmlNode *node);
	virtual wxXmlNode *GetXmlNode();
	
	virtual wxTreeItemId AppendItem();
	
	DBModelEntityContainer	*m_entities;		// list of entities used in model
	DBModelRelationContainer	*m_relations;	// list of relation used in model
};

class DBModelEditor : public DBObjectEditor
{
public:
	DBModelEditor(DBObject *object, bool edit);
	virtual ~DBModelEditor();
	
	void OnApply(wxCommandEvent& event);

protected:
	wxPanel			*m_page_entities;
	DBModelEntityListCtrl	*m_list_entities;

private:
	DECLARE_EVENT_TABLE()
};

class DBModelContainer : public DataDesignerContainer
{
public:
	DBModelContainer(DataDesignerProject *project, const wxTreeItemId& id);
	
	virtual ~DBModelContainer() { }
	
	virtual DBObject *CreateObject();
	virtual void	ShowList();
};

class DBModelListCtrl : public DBObjectListCtrl
{
public:
	DBModelListCtrl(wxWindow *parent, DataDesignerContainer *container);
	
	virtual ~DBModelListCtrl();
	
	virtual void SetObject(long item, DBObject *object);
};

#endif // __DBSIMPLEATTR_H


syntax highlighted by Code2HTML, v. 0.9.1