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

#ifndef __DBTRIGGER_H
#define __DBTRIGGER_H

#define DBO_TRIGGER_TIME_AFTER	0
#define DBO_TRIGGER_TIME_BEFORE	1
#define DBO_TRIGGER_TYPE_ROW	0
#define DBO_TRIGGER_TYPE_STMT	1

class DBTrigger : public DBObject
{
public:
	DBTrigger(DataDesignerProject *project, DataDesignerContainer *container);
	virtual ~DBTrigger() { }
	
	virtual wxDialog *Editor(bool edit);

	virtual void LoadXmlNode(wxXmlNode *node);
	virtual wxXmlNode *GetXmlNode();
	
	bool		m_event_ins;	// On Insert
	bool		m_event_upd;	// On Update
	bool		m_event_del;	// On Delete
	int		m_time;		// After, Before
	int		m_type;		// Row, Statement
	wxString	m_procedure;
};

class DBTriggerEditor : public DBObjectEditor
{
public:
	DBTriggerEditor(DBObject *object, bool edit);
	virtual ~DBTriggerEditor();
	virtual bool TransferDataFromWindow();
	virtual bool TransferDataToWindow();

private:
	wxRadioBox	*r1;			// time
	wxCheckBox	*c21, *c22, *c23;	// event
	wxRadioBox	*r3;			// type
	wxComboBox	*c4;			// procedure
	
	static wxString	m_time_str[];
	static wxString	m_type_str[];
};

class DBTriggerContainer : public DataDesignerContainer
{
public:
	DBTriggerContainer(DataDesignerProject *project, const wxTreeItemId& id);
	
	virtual ~DBTriggerContainer() { }

	virtual DBObject *CreateObject();
	virtual void	ShowList();
};

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

#endif // __DBTRIGGER_H


syntax highlighted by Code2HTML, v. 0.9.1