GME
13
|
00001 //############################################################################################################################################### 00002 // 00003 // Object Constraint Language Generic Manager 00004 // GMEConstraintBrowserDialog.h 00005 // 00006 //############################################################################################################################################### 00007 00008 #if !defined(AFX_GMECONSTRAINTBROWSERDIALOG_H__25C4CBC0_D9A0_4003_BD98_5AB843DD921A__INCLUDED_) 00009 #define AFX_GMECONSTRAINTBROWSERDIALOG_H__25C4CBC0_D9A0_4003_BD98_5AB843DD921A__INCLUDED_ 00010 00011 #if _MSC_VER > 1000 00012 #pragma once 00013 #endif // _MSC_VER > 1000 00014 00015 #include "GMEConstraintTreeCtrl.h" 00016 #include "OCLCommonEx.h" 00017 #include "GMEConstraintEx.h" 00018 00019 namespace OclGmeCM { 00020 00021 class Facade; 00022 00023 //############################################################################################################################################## 00024 // 00025 // C L A S S : CSettingsPage <<< + CDialog 00026 // 00027 //============================================================================================================================================== 00028 // 00029 // D E S C R I P T I O N : 00030 // 00031 //############################################################################################################################################## 00032 00033 class CSettingsPage : public CDialog 00034 { 00035 // Construction 00036 public: 00037 CSettingsPage(CWnd* pParent = NULL); // standard constructor 00038 00039 // Dialog Data 00040 //{{AFX_DATA(CSettingsPage) 00041 enum { IDD = IDD_BROWSER_SETTINGS_PAGE }; 00042 CEdit m_edtViolationCount; 00043 CButton m_chkEnableTracking; 00044 CButton m_chkEnableLogical; 00045 CButton m_chkEnableIterator; 00046 //}}AFX_DATA 00047 00048 00049 // Overrides 00050 // ClassWizard generated virtual function overrides 00051 //{{AFX_VIRTUAL(CSettingsPage) 00052 public: 00053 virtual BOOL PreTranslateMessage(MSG* pMsg); 00054 protected: 00055 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 00056 //}}AFX_VIRTUAL 00057 00058 // Implementation 00059 protected: 00060 00061 // Generated message map functions 00062 //{{AFX_MSG(CSettingsPage) 00063 afx_msg void OnRadioButtonClicked(); 00064 afx_msg void OnViolationCountChanged(); 00065 //}}AFX_MSG 00066 DECLARE_MESSAGE_MAP() 00067 }; 00068 00069 //############################################################################################################################################## 00070 // 00071 // C L A S S : CConstraintBrowserDialog<<< + CDialog 00072 // 00073 //============================================================================================================================================== 00074 // 00075 // D E S C R I P T I O N : 00076 // 00077 //############################################################################################################################################## 00078 00079 enum ConstraintStateImage 00080 { 00081 CSIMG_OK = 1, 00082 CSIMG_DEPENDENCY_ERROR = 2, 00083 CSIMG_SYNTAX_ERROR = 3, 00084 CSIMG_CONTEXT_ERROR = 4, 00085 CSIMG_SEMANTIC_ERROR = 5 00086 }; 00087 00088 enum State 00089 { 00090 NS_CHECKED_DISABLED = 1, 00091 NS_UNCHECKED_DISABLED = 2, 00092 NS_CHECKED = 3, 00093 NS_UNCHECKED = 4, 00094 NS_CHECKED_INHERITED = 5, 00095 NS_UNCHECKED_INHERITED = 6, 00096 NS_MISCELLANEOUS = 7, 00097 NS_UNKNOWN = 8, 00098 NS_ERROR = 9 00099 }; 00100 00101 typedef std::map< std::string , OclGme::ConstraintVector > ConstraintVectorMap; 00102 typedef std::map< std::string , OclCommonEx::SPObject > ObjectMap; 00103 typedef std::map< HTREEITEM , OclGme::SpConstraint > ConstraintMap; 00104 00105 typedef std::map< HTREEITEM, std::string > MapH2ID; 00106 typedef std::map< std::string, HTREEITEM > MapID2H; 00107 00108 typedef std::set< HTREEITEM > HandlerSet; 00109 00110 class CConstraintBrowserDialog : public CDialog 00111 { 00112 00113 // D I A L O G E X T E N S I O N B Y I M P L E M E N T O R B E G I N 00114 // ============================================================ 00115 00116 private : 00117 CSettingsPage m_pageSettings; 00118 CComPtr<IUnknown> m_gotoPunk; 00119 00120 public : 00121 void GetGotoPunk(IUnknown ** ppunk) 00122 { 00123 *ppunk=NULL; 00124 if (m_gotoPunk) 00125 m_gotoPunk.CopyTo(ppunk); 00126 } 00127 00128 CImageList m_lstObjectImages; 00129 CImageList m_lstStateImages; 00130 CImageList m_lstCStateImages; 00131 00132 CConstraintTreeCtrl m_treeConstraints; 00133 CConstraintTreeCtrl m_treeObjects; 00134 CConstraintTreeCtrl::Kind m_eKindActiveTree; 00135 bool m_bLoaded; 00136 00137 Facade* m_pFacade; 00138 00139 CComPtr<IMgaObject> m_spObject; 00140 CComPtr<IMgaObjects> m_spObjects; 00141 00142 ConstraintVectorMap m_mapConstraints; 00143 ConstraintMap m_mapConstraint; 00144 00145 MapH2ID m_mapH2ID; 00146 MapID2H m_mapID2H; 00147 00148 HandlerSet m_setClicked; 00149 HandlerSet m_setSelecteds; 00150 00151 public : 00152 CConstraintBrowserDialog( Facade* pFacade, CComPtr<IMgaObject> spObject = NULL, CComPtr<IMgaObjects> spObjects = NULL, CWnd* pParent = NULL ); 00153 ~CConstraintBrowserDialog(); 00154 00155 private : 00156 void SetView( CConstraintTreeCtrl::Kind eKind ); 00157 00158 void LoadConstraints(); 00159 void LoadKinds(); 00160 void LoadSettings(); 00161 void AddConstraint( OclGme::SpConstraint spConstraint ); 00162 void ExpandKind( const std::string& strKind, HTREEITEM hItem ); 00163 void LoadObject( CComPtr<IMgaObject> spObject, HTREEITEM hParent, const OclGme::ConstraintVector& vecConstraints ); 00164 00165 void InsertConstraint( OclGme::SpConstraint spConstraint ); 00166 void RemoveConstraint( OclGme::SpConstraint spConstraint, bool bRemoveEnableInfo = true ); 00167 void RefreshKind( const std::string& strKind ); 00168 00169 void RefreshRootState( HTREEITEM hItem ); 00170 int GetAncestorState( HTREEITEM hItem, const std::string& strCID ); 00171 HTREEITEM FindConstraintNode( HTREEITEM hItem, const std::string& strCID ); 00172 void SetNewState( HTREEITEM hItem, int iNewS, bool bInheritance ); 00173 void SelectItem( HTREEITEM hItem, bool bSelect ); 00174 void PlaceWindow( CWnd& window, int iGap = -1 ); 00175 00176 void ApplyChanges(); 00177 00178 // D I A L O G E X T E N S I O N B Y I M P L E M E N T O R E N D 00179 // ============================================================ 00180 00181 public : 00182 // Dialog Data 00183 //{{AFX_DATA(CConstraintBrowserDialog) 00184 enum { IDD = IDD_BROWSER_DIALOG }; 00185 CButton m_btnLoad; 00186 CButton m_btnApply; 00187 CTabCtrl m_tabTrees; 00188 CButton m_btnRemove; 00189 CButton m_btnOK; 00190 CButton m_btnCheck; 00191 CButton m_btnCancel; 00192 CButton m_btnAdd; 00193 //}}AFX_DATA 00194 00195 00196 // Overrides 00197 // ClassWizard generated virtual function overrides 00198 //{{AFX_VIRTUAL(CConstraintBrowserDialog) 00199 protected: 00200 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 00201 //}}AFX_VIRTUAL 00202 00203 // Implementation 00204 protected: 00205 00206 // Generated message map functions 00207 //{{AFX_MSG(CConstraintBrowserDialog) 00208 virtual BOOL OnInitDialog(); 00209 afx_msg void OnClickAdd(); 00210 afx_msg void OnClickCancel(); 00211 afx_msg void OnClickCheck(); 00212 afx_msg void OnClickOK(); 00213 afx_msg void OnClickRemove(); 00214 afx_msg void OnSelectionChangedTab(NMHDR* pNMHDR, LRESULT* pResult); 00215 afx_msg void OnClickApply(); 00216 afx_msg void OnClickLoad(); 00217 //}}AFX_MSG 00218 afx_msg void OnItemExpanding( NMHDR* pNMHDR, LRESULT* pResult ); 00219 afx_msg void OnCheckChanged( NMHDR* pNMHDR, LRESULT* pResult ); 00220 afx_msg void OnCheckChangedRecursive( NMHDR* pNMHDR, LRESULT* pResult ); 00221 afx_msg void OnShowItem( NMHDR* pNMHDR, LRESULT* pResult ); 00222 afx_msg void OnSelectionChangedTreeConstraints( NMHDR* pNMHDR, LRESULT* pResult ); 00223 afx_msg void OnSelectionChangedTreeObjects( NMHDR* pNMHDR, LRESULT* pResult ); 00224 00225 DECLARE_MESSAGE_MAP() 00226 }; 00227 00228 //{{AFX_INSERT_LOCATION}} 00229 // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 00230 00231 }; // namespace OclGmeCM 00232 00233 #endif // !defined(AFX_GMECONSTRAINTBROWSERDIALOG_H__25C4CBC0_D9A0_4003_BD98_5AB843DD921A__INCLUDED_)