/////////////////////////////////////////////////////////////////////////////
// Name: dbentity.h
// Purpose: Database Objects
// Author: Daniel Horak
// Modified by:
// RCS-ID: $Id: dbentity.h,v 1.5 2004/01/01 13:56:19 horakdan Exp $
// Copyright: (c) Daniel Horak
// Licence: GPL
/////////////////////////////////////////////////////////////////////////////
#ifndef __DBENTITY_H
#define __DBENTITY_H
class DBAttribute;
class DBAttributeContainer;
class DBAttributeListCtrl;
class DBIndexContainer;
class DBIndexListCtrl;
class DBTriggerContainer;
class DBTriggerListCtrl;
class DBConstraint;
class DBConstraintContainer;
class DBConstraintListCtrl;
class DBModelEntity;
class DBRelation;
class DBEntity : public DBObject
{
public:
DBEntity(DataDesignerProject *project, DataDesignerContainer *container);
virtual ~DBEntity();
virtual wxTreeItemId AppendItem();
virtual wxDialog *Editor(bool edit);
virtual void LoadXmlNode(wxXmlNode *node);
virtual wxXmlNode *GetXmlNode();
virtual void CreateShape();
DBAttributeContainer *GetAttributes() { return m_attrs; }
int GetAttributeCount();
DBAttribute *GetAttributeByName(const wxString& name);
DBAttribute *AddAttribute(DBAttribute *attr);
void AddAttributeToPrimaryKey(DBAttribute *attr);
void DeleteAttributeFromPrimaryKey(DBAttribute *attr);
DBConstraint *GetPrimaryKeyConstraint();
void AddForeignKeyConstraint(DBRelation *relation, bool identifying);
void AddParentsPrimaryKey(DBRelation *relation);
void AddModelEntity(DBModelEntity *ent);
void DeleteModelEntity(DBModelEntity *ent);
DBAttributeContainer *m_attrs;
DBIndexContainer *m_indexes;
DBTriggerContainer *m_triggers;
DBConstraintContainer *m_constraints;
bool m_placed; // was manually placed in schema
wxCoord m_xpos;
wxCoord m_ypos;
DBObjectList m_modelentities;
};
class DBEntityEditor : public DBObjectEditor
{
public:
DBEntityEditor(DBObject *object, bool edit);
virtual ~DBEntityEditor();
virtual bool TransferDataFromWindow();
virtual bool TransferDataToWindow();
void OnApply(wxCommandEvent& event);
protected:
wxPanel *m_page_attributes;
wxPanel *m_page_constraints;
wxPanel *m_page_indexes;
wxPanel *m_page_triggers;
DBAttributeListCtrl *m_list_attrs;
DBConstraintListCtrl *m_list_constraints;
DBIndexListCtrl *m_list_indexes;
DBTriggerListCtrl *m_list_triggers;
private:
DECLARE_EVENT_TABLE()
};
class DBEntityContainer : public DataDesignerContainer
{
public:
DBEntityContainer(DataDesignerProject *project, const wxTreeItemId& id);
virtual ~DBEntityContainer() { }
virtual DBObject *CreateObject();
virtual void ShowList();
};
class DBEntityListCtrl : public DBObjectListCtrl
{
public:
DBEntityListCtrl(wxWindow *parent, DataDesignerContainer *container);
virtual ~DBEntityListCtrl();
virtual void SetObject(long item, DBObject *object);
};
class DBEntityShape : public wxRectangleShape
{
public:
DBEntityShape(DBEntity *entity);
DBEntityShape(DBModelEntity *sentity);
void Create(DBEntity *entity);
void OnDraw(wxDC& dc);
virtual void OnEndDragLeft(double x, double y, int keys = 0, int attachment = 0);
virtual void OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);
virtual void OnLeftClick(double x, double y, int keys = 0, int attachment = 0);
virtual void OnBeginDragRight(double x, double y, int keys = 0, int attachment = 0);
virtual void OnDragRight(bool draw, double x, double y, int keys = 0, int attachment = 0);
virtual void OnEndDragRight(double x, double y, int keys = 0, int attachment = 0);
protected:
int m_attrcount;
DBModelEntity *m_mentity;
};
#endif // __DBENTITY_H
syntax highlighted by Code2HTML, v. 0.9.1