|
|
// qryprop.h - Query node property pages header file
#ifndef _QRYPROP_H_
#define _QRYPROP_H_
#include "scopenode.h"
#include "atlwin.h"
#include "atldlgs.h"
#include "atlctrls.h"
#include "rootprop.h"
#include <list>
class CQueryEditObj { public: CQueryEditObj(CQueryNode* pQueryNode) { ASSERT(pQueryNode != NULL); m_spQueryNode = pQueryNode;
if( pQueryNode ) { m_vObjInfo = pQueryNode->Objects(); m_vMenus = pQueryNode->Menus(); }
m_iPageMax = -1; m_cRef = 0; } HRESULT LoadStrings(IStringTable* pStringTable) { menucmd_vector::iterator itMenuCmd; for (itMenuCmd = Menus().begin(); itMenuCmd != Menus().end(); ++itMenuCmd) { HRESULT hr = (*itMenuCmd)->LoadName(pStringTable); RETURN_ON_FAILURE(hr); }
return S_OK; }
void PageActive(HWND hwndPage); BOOL ApplyChanges(HWND hwndPage);
menucmd_vector& Menus() { return m_vMenus; }
ULONG AddRef() { return ++m_cRef; } ULONG Release() { ASSERT(m_cRef > 0);
if (--m_cRef != 0) return m_cRef; delete this; return 0; }
public: CComPtr<CQueryNode> m_spQueryNode; QueryObjVector m_vObjInfo; menucmd_vector m_vMenus; // Query Nodes now have menus
private: int m_iPageMax; int m_cRef; };
class CQueryGeneralPage : public CPropertyPageImpl<CQueryGeneralPage> {
public: typedef CPropertyPageImpl<CQueryGeneralPage> BC;
// Constructor/destructor
CQueryGeneralPage(CQueryEditObj* pEditObj); virtual ~CQueryGeneralPage();
enum { IDD = IDD_QUERY_GENERAL_PAGE };
protected: BEGIN_MSG_MAP( CQueryGeneralPage ) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) MESSAGE_HANDLER(WM_CLOSE, OnClose)
COMMAND_HANDLER(IDC_COMMENTS, EN_CHANGE, OnChange) COMMAND_HANDLER(IDC_QUERYSCOPE, BN_CLICKED, OnScopeChange) COMMAND_HANDLER(IDC_LOCALSCOPE, BN_CLICKED, OnScopeChange) CHAIN_MSG_MAP(BC) END_MSG_MAP()
// message handlers
LRESULT OnInitDialog( UINT mMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnClose( UINT mMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnChange( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnScopeChange( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
// overrrides
BOOL OnSetActive(); BOOL OnApply();
private: CQueryEditObj& m_EditObject; };
class CQueryMenuPage : public CPropertyPageImpl<CQueryMenuPage> { public: typedef CPropertyPageImpl<CQueryMenuPage> BC;
CQueryMenuPage(CQueryEditObj* pEditObj); virtual ~CQueryMenuPage();
enum { IDD = IDD_QUERY_MENU_PAGE };
protected: BEGIN_MSG_MAP( CQueryMenuPage ) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) NOTIFY_HANDLER(IDC_MENULIST, LVN_ITEMCHANGED, OnMenuChanged) COMMAND_HANDLER(IDC_DEFAULTMENU, BN_CLICKED, OnDefaultChanged) COMMAND_HANDLER(IDC_OBJECTLIST, CBN_SELENDOK, OnObjectSelect) COMMAND_HANDLER(IDC_MOVEUP, BN_CLICKED, OnMoveUpDown) COMMAND_HANDLER(IDC_MOVEDOWN, BN_CLICKED, OnMoveUpDown); COMMAND_HANDLER(IDC_PROPERTYMENU, BN_CLICKED, OnPropertyMenuChanged) CHAIN_MSG_MAP(BC) END_MSG_MAP()
// handlers
LRESULT OnInitDialog( UINT mMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnMenuChanged(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled); LRESULT OnObjectSelect( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnMoveUpDown( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnDefaultChanged(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); LRESULT OnPropertyMenuChanged(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// overrrides
BOOL OnSetActive(); BOOL OnApply();
void DisplayMenus(); void DisplayMenuItem(int iIndex, CMenuCmd* pMenuCmd, BOOL bEnabled); void SaveMenuSet();
private: CQueryEditObj& m_EditObject; CComboBox m_ObjectCB; CListViewEx m_MenuLV; CQueryObjInfo* m_pObjSel; BOOL m_bLoading; BOOL m_DefaultID; };
class CQueryViewPage : public CPropertyPageImpl<CQueryViewPage> { public: typedef CPropertyPageImpl<CQueryViewPage> BC;
CQueryViewPage(CQueryEditObj* pEditObj); virtual ~CQueryViewPage();
enum { IDD = IDD_QUERY_VIEW_PAGE };
protected: BEGIN_MSG_MAP( CQueryViewPage ) NOTIFY_HANDLER(IDC_COLUMNLIST, LVN_ITEMCHANGED, OnColumnChanged) NOTIFY_HANDLER(IDC_COLUMNLIST, LVN_COLUMNCLICK, OnColumnClick) COMMAND_HANDLER(IDC_OBJECTLIST, CBN_SELENDOK, OnObjectSelect ) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) CHAIN_MSG_MAP(BC) END_MSG_MAP()
// handlers
LRESULT OnInitDialog( UINT mMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnObjectSelect( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnColumnChanged(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled); LRESULT OnColumnClick(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled);
// overrrides
BOOL OnSetActive(); BOOL OnApply();
void DisplayColumns(); void SaveColumnSet();
private: CQueryEditObj& m_EditObject; CQueryObjInfo* m_pObjSel; CComboBox m_ObjectCB; CListViewEx m_ColumnLV; BOOL m_bLoading; };
class CQueryNodeMenuPage : public CPropertyPageImpl<CQueryNodeMenuPage> { public: typedef CPropertyPageImpl<CQueryNodeMenuPage> BC;
CQueryNodeMenuPage(CQueryEditObj* pEditObj); virtual ~CQueryNodeMenuPage();
enum { IDD = IDD_QUERY_NODE_MENU_PAGE };
protected: BEGIN_MSG_MAP( CQueryNodeMenuPage ) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) NOTIFY_HANDLER(IDC_MENULIST, LVN_ITEMCHANGED, OnMenuListChanged) NOTIFY_HANDLER(IDC_MENULIST, NM_DBLCLK, OnMenuListDblClk) COMMAND_HANDLER(IDC_ADDMENU, BN_CLICKED, OnAddMenu) COMMAND_HANDLER(IDC_REMOVEMENU, BN_CLICKED, OnRemoveMenu) COMMAND_HANDLER(IDC_EDITMENU, BN_CLICKED, OnEditMenu) COMMAND_HANDLER(IDC_MOVEUP, BN_CLICKED, OnMoveUpDown) COMMAND_HANDLER(IDC_MOVEDOWN, BN_CLICKED, OnMoveUpDown);
CHAIN_MSG_MAP(BC) END_MSG_MAP()
// handlers
LRESULT OnInitDialog( UINT mMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ); LRESULT OnAddMenu( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnRemoveMenu( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnEditMenu( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnMoveUpDown( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ); LRESULT OnMenuListChanged(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled); LRESULT OnMenuListDblClk(int idCtrl, LPNMHDR pNMHDR, BOOL& bHandled);
// overrrides
BOOL OnSetActive(); BOOL OnApply(); void OnFinalMessage(HWND) { delete this; }
// implementation
void DisplayMenus();
private: CListViewCtrl m_MenuLV; CQueryEditObj& m_EditObject; };
#endif // _QRYPROP_H_
|