#if !defined(AFX_CHANGEDOCVERDLG_H__9713EDB9_FFC4_46CE_84CE_E20AA5845566__INCLUDED_)
#define AFX_CHANGEDOCVERDLG_H__9713EDB9_FFC4_46CE_84CE_E20AA5845566__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ChangeDocVerDlg.h : header file
//
#include "resource.h"
#include "apl_gui.h"
#include "CommonChangeClasses.h"
#include "apl_api.h"
#include "afxwin.h"
#include "afxcmn.h"

/////////////////////////////////////////////////////////////////////////////
struct SCDFileInfo
{
	SCDFileInfo(){inst=0;FileName=_T("");code=_T("");}
	CaplInstance* inst;
	CString FileName;
	CString code;
};


/////////////////////////////////////////////////////////////////////////////
// CChangeDocVerDlg dialog

class CChangeDocVerDlg : public CaplTranslateDialog
{
// Construction
public:
	CChangeDocVerDlg(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CChangeDocVerDlg)
	enum { IDD = IDD_CHANGE_ACTIVE_VER_DIALOG };
	CStatic	m_activeVerStatic;
	CStatic	m_itemNameStatic;
	CButton	m_itemTitleStatic;
	CaplButton	m_viewOldBtn;
	CaplButton	m_viewNewBtn;
	CEdit	m_dscr;
	CDateTimeCtrl	m_timeCtrl;
	CDateTimeCtrl	m_dateCtrl;
	CListCtrl	m_fileList;
	CaplButton	m_saveBtn;
	CaplButton	m_viewBtn;
	CaplButton	m_delBtn;
	CaplButton	m_addBtn;
	CaplButton	m_upBtn;
	CaplButton	m_downBtn;
	CEdit	m_id;
	CaplButton	m_okBtn;
	CaplButton	m_cancelBtn;
	CaplButton	m_selectBtn;
	CString	m_sDoc;
	CString	m_sId;
	CString	m_sOldVer;
	CString	m_sNewVer;
	COleDateTime	m_acceptDate;
	COleDateTime	m_acceptTime;
	CString	m_sUser;
	CString	m_sDscr;
	CEdit	m_Edit4Edit;
	//}}AFX_DATA
	
	CaplAPI *m_api;

	bool m_bZerroDocRev;  // Устанавливается в true, если версия не нужна (для ДИ и ДПИ) В этом случае просто записывается описание

	CaplInstance* m_avc; //элемент создан
	CDAVCItemInfo* m_newChng;
	aplExtent *m_items; //то, что уже создано в изменении
	CArray<CDAVCItemInfo, CDAVCItemInfo> *m_newItems;
	aplExtent *m_delItems; //удаленные элементы
	
	CaplInstance* m_change;

	CaplInstance* m_newRev; //элемент не создан
	CaplInstance* m_oldRev;
	CaplInstance* m_doc_or_bp;
	CaplInstance* m_person;
	CaplInstance* m_user;

	aplExtent m_ext_items_for_add_relation;
	aplExtent m_ext_items_for_del_relation;

	bool m_bReadOnly; //режим "только чтение"
	bool m_bCanSelect;
	
	aplExtent m_attachment; //прикрепленные файлы
// 	aplExtent m_delAttachment; //удаленные файлы
// 	CStringArray m_newAttachment; //вновь добавленные
	
	/**
		0 - Документ
		1 - Бизнес-процесс
		2 - Характеристика

	*/
	int m_viewMode;
	
	/** Возвращает строку, содержащую данные о том, где используется данная версия хар-ки.
		@param iCharactVal
			Версия хар-ки.
	*/
	CString GetCharactValAssocItemStr(CaplInstance* iCharactVal);
	void MoveCtrls();

	// номер редактируемой строчки
	int m_num_edit_item;

	CaplTAggr<SCDFileInfo*,SCDFileInfo*,APLAGGR_LIST_OR_AUTOKILLREF> m_fileListData;
	CArray<SCDFileInfo*,SCDFileInfo*> m_fileListDeleted;

	void BeginEditLabel();
	BOOL TestEndEdit(MSG* pMsg);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CChangeDocVerDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

	void update_items_for_add_relation();
	void update_items_for_del_relation();

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CChangeDocVerDlg)
	afx_msg void OnCdDcoSelectButton();
	virtual void OnOK();
	virtual void OnCancel();
	virtual BOOL OnInitDialog();
	afx_msg void OnCdAddFile();
	afx_msg void OnCdDeleteFile();
	afx_msg void OnCdSaveFile();
	afx_msg void OnCdViewFile();
	afx_msg void OnCdViewRevNew();
	afx_msg void OnCdViewRevOld();
	afx_msg void OnCdFileUp();
	afx_msg void OnCdFileDown();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
public:
	CStatic m_dateStaticCtrl;
	CStatic m_st_number;
	CComboBox m_stateCB;
	CString m_sNewState;
	CStatic m_stateST;
	CStatic m_dscrST;
	CComboBox m_combo_method;
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	afx_msg void OnDblclkFileList(NMHDR* pNMHDR, LRESULT* pResult);
	CListCtrl m_list_4_ass;
	afx_msg void OnBnClickedAddRelAdd();
	afx_msg void OnBnClickedDelRelAdd();
	CListCtrl m_list_4_del;
	CaplButton m_add_ass_btn;
	CaplButton m_del_ass_btn;
	CaplButton m_add_remove_ass_btn;
	CaplButton m_del_remove_ass_btn;
	afx_msg void OnBnClickedRemoveRelAdd();
	afx_msg void OnBnClickedRemoveRelDel();
	CEdit m_note_ctrl;
	CString m_sNotes;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CHANGEDOCVERDLG_H__9713EDB9_FFC4_46CE_84CE_E20AA5845566__INCLUDED_)
