GME  13
GMEConstraintBrowserDialog.h
Go to the documentation of this file.
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_)