Ejemplo n.º 1
0
        //private List<ERDiagram> _hookedERDiagrams = new List<ERDiagram>();
        private void SetupContextMenu(ERDiagram diagram)
        {
            if (diagram == null)
            {
                return;
            }
            //if (_hookedERDiagrams.Contains(diagram)) return;

#if DENALI || SQL2014
            IDiagramAction actionHideMemberIf = null;
            foreach (IDiagramAction action in diagram.Actions)
#else
            IViewModelAction actionHideMemberIf = null;
            foreach (IViewModelAction action in diagram.Actions)
#endif
            {
                if (action is ERDiagramActionHideMemberIf)
                {
                    actionHideMemberIf = action;  break;
                }
            }
            if (actionHideMemberIf != null)
            {
                return;                             //if this context menu is already part of the diagram, then we're done
            }
            ERDiagramActionHideMemberIf levels = new ERDiagramActionHideMemberIf(diagram, this);
            levels.Text         = "Set HideMemberIf...";
            levels.DisplayIndex = 0x19f;
#if DENALI || SQL2014
            IDiagramTag tagHierarchyLevel = (IDiagramTag)diagram.GetType().InvokeMember("tagHierarchyLevel", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, diagram, null);
            levels.Key           = new DiagramObjectKey(@"Actions\{0}", new object[] { "HideMemberIf" });
            levels.AvailableRule = delegate(IEnumerable <IEnumerable <IDiagramTag> > tagSets)
            {
                return(tagSets.All <IEnumerable <IDiagramTag> >(tagSet => tagSet.Contains <IDiagramTag>(tagHierarchyLevel)));
            };
#else
            IViewModelTag tagHierarchyLevel = (IViewModelTag)diagram.GetType().InvokeMember("tagHierarchyLevel", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, diagram, null);
            levels.Key           = new ViewModelObjectKey(@"Actions\{0}", new object[] { "HideMemberIf" });
            levels.AvailableRule = delegate(IEnumerable <IEnumerable <IViewModelTag> > tagSets)
            {
                return(tagSets.All <IEnumerable <IViewModelTag> >(tagSet => tagSet.Contains <IViewModelTag>(tagHierarchyLevel)));
            };
#endif
            diagram.GetType().InvokeMember("InitializeViewStates", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod, null, diagram, new object[] { levels });
            diagram.Actions.Add(levels);

            //_hookedERDiagrams.Add(diagram);
        }
Ejemplo n.º 2
0
        private void SetupContextMenu(ERDiagram diagram)
        {
            if (diagram == null)
            {
                return;
            }
#if DENALI || SQL2014
            foreach (IDiagramAction action in diagram.Actions)
#else
            foreach (IViewModelAction action in diagram.Actions)
#endif
            {
                if (action is ERDiagramActionSyncDescriptions)
                {
                    return;                                            //if this context menu is already part of the diagram, then we're done
                }
            }



            ERDiagramActionSyncDescriptions syncAction = new ERDiagramActionSyncDescriptions(diagram, this);
            syncAction.Text         = "Sync Descriptions...";
            syncAction.DisplayIndex = 0x19f;
#if DENALI || SQL2014
            IDiagramTag tagTable = (IDiagramTag)diagram.GetType().InvokeMember("tagTable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, diagram, null);
            syncAction.Key           = new DiagramObjectKey(@"Actions\{0}", new object[] { "SyncDescriptions" });
            syncAction.AvailableRule = delegate(IEnumerable <IEnumerable <IDiagramTag> > tagSets)
            {
                return(tagSets.All <IEnumerable <IDiagramTag> >(tagSet => tagSet.Contains <IDiagramTag>(tagTable)));
            };
#else
            IViewModelTag tagTable = (IViewModelTag)diagram.GetType().InvokeMember("tagTable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, diagram, null);
            syncAction.Key           = new ViewModelObjectKey(@"Actions\{0}", new object[] { "SyncDescriptions" });
            syncAction.AvailableRule = delegate(IEnumerable <IEnumerable <IViewModelTag> > tagSets)
            {
                return(tagSets.All <IEnumerable <IViewModelTag> >(tagSet => tagSet.Contains <IViewModelTag>(tagTable)));
            };
#endif
            diagram.GetType().InvokeMember("InitializeViewStates", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod, null, diagram, new object[] { syncAction });
            diagram.Actions.Add(syncAction);
        }