///////////////////////////////////////////////////////////////////////////// // 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