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

#ifndef __DBATTRIBUTE_H
#define __DBATTRIBUTE_H

class DBSimpleAttribute;
class DBEntity;

class DBAttribute : public DBObject
{
public:
	DBAttribute(DataDesignerProject *project, DataDesignerContainer *container);
	virtual ~DBAttribute();
	
	virtual wxDialog *Editor(bool edit);
	
	virtual void LoadXmlNode(wxXmlNode *node);
	virtual wxXmlNode *GetXmlNode();
	
	void AddSimpleAttribute(DBSimpleAttribute *attr);
	void DeleteSimpleAttribute(DBSimpleAttribute *attr);
	
	void Copy(DBAttribute *attr);
	DBEntity *GetEntity();
		
	wxString	m_type;
	wxString	m_length;
	wxString	m_decimals;
	wxString	m_default;
	wxString	m_check;
	bool		m_nullable;
	bool		m_unique;
	bool		m_primarykey;
	bool		m_foreignkey;
	bool		m_array;
	bool		m_generated;		// attr's value is generated from a sequence
	bool		m_imported;		// attr is imported as key from another entity
	wxString	m_relation;
	
	DBObjectList	m_simpleattrs;
};

class DBAttributeEditor : public DBObjectEditor
{
public:
	DBAttributeEditor(DBObject *object, bool edit);
	virtual ~DBAttributeEditor();
	virtual bool TransferDataFromWindow();
	virtual bool TransferDataToWindow();
	
	void OnCheckBox(wxCommandEvent& event);
	
	virtual bool Validate();

private:
	wxComboBox	*c1;		// type
	wxTextCtrl	*t2;		// length
	wxTextCtrl	*t3;		// decimals
	wxCheckBox	*c4;		// nullable
	wxCheckBox	*c5;		// primary key
	wxTextCtrl	*t6;		// default
	wxTextCtrl	*t7;		// check
	wxCheckBox	*c8;		// unique
	wxCheckBox	*c9;		// array
	wxCheckBox	*c10;		// generated
	
	DECLARE_EVENT_TABLE()
};

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

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

	void OnDelete(wxCommandEvent& event);

private:	
	DECLARE_EVENT_TABLE()
};

#endif // __DBATTRIBUTE_H


syntax highlighted by Code2HTML, v. 0.9.1