///////////////////////////////////////////////////////////////////////////// // Name: dbconstraint.h // Purpose: Database Objects // Author: Daniel Horak // Modified by: // RCS-ID: $Id: dbconstraint.h,v 1.2 2004/01/01 13:56:19 horakdan Exp $ // Copyright: (c) Daniel Horak // Licence: GPL ///////////////////////////////////////////////////////////////////////////// #ifndef __DBCONSTRAINT_H #define __DBCONSTRAINT_H class DBSimpleAttributeContainer; class DBSimpleAttributeListCtrl; class DBAttribute; #define DBO_CONSTRAINT_TYPE_PRIMARY_KEY 0 #define DBO_CONSTRAINT_TYPE_FOREIGN_KEY 1 #define DBO_CONSTRAINT_TYPE_UNIQUE 2 #define DBO_CONSTRAINT_TYPE_CHECK 3 class DBConstraint : public DBObject { public: DBConstraint(DataDesignerProject *project, DataDesignerContainer *container); virtual ~DBConstraint(); virtual wxTreeItemId AppendItem(); virtual wxDialog *Editor(bool edit); virtual void LoadXmlNode(wxXmlNode *node); virtual wxXmlNode *GetXmlNode(); DBSimpleAttributeContainer *GetAttributes() { return m_attrs; } void AddAttribute(const wxString &name); void AddAttribute(DBAttribute *attr); void DeleteAttribute(const wxString &name); int m_type; // primary/foreign/unique/check/... bool m_deferrable; // deferrable/not deferrable bool m_immediate; // initially immediate or deferred wxString m_relation; // relation name, iff type is foreign key DBSimpleAttributeContainer *m_attrs; static wxString m_type_val[]; }; class DBConstraintEditor : public DBObjectEditor { public: DBConstraintEditor(DBObject *object, bool edit); virtual ~DBConstraintEditor(); virtual bool TransferDataFromWindow(); virtual bool TransferDataToWindow(); void OnApply(wxCommandEvent& event); protected: wxPanel *m_page_attrs; DBSimpleAttributeListCtrl *m_list_attrs; private: wxComboBox *c1; // type wxCheckBox *c2; // deferrable wxCheckBox *c3; // immediate wxTextCtrl *t4; // relation static wxString m_type_str[]; // values showed for combobox static int m_types_count; DECLARE_EVENT_TABLE() }; class DBConstraintContainer : public DataDesignerContainer { public: DBConstraintContainer(DataDesignerProject *project, const wxTreeItemId& id); virtual ~DBConstraintContainer() { } virtual DBObject *CreateObject(); virtual void ShowList(); }; class DBConstraintListCtrl : public DBObjectListCtrl { public: DBConstraintListCtrl(wxWindow *parent, DataDesignerContainer *container); virtual ~DBConstraintListCtrl(); virtual void SetObject(long item, DBObject *object); }; #endif // __DBCONSTRAINT_H