コード例 #1
0
        public GraphPresentation()
        {
            myModules = new List <object>();

            myModules.Add(new PropertySetModule <ToolTipContent>(id => new ToolTipContent(id, null)));
            myModules.Add(new PropertySetModule <Selection>(id => new Selection(id)
            {
                IsSelected = false
            }));
            // TODO: move translation from string to WPF entities to parser
            myModules.Add(new PropertySetModule <NodeStyle>(id => new NodeStyle(id)));
            myModules.Add(new PropertySetModule <EdgeStyle>(id => new EdgeStyle(id)));
            myModules.Add(new CaptionModule(id => new Caption(id, null)));
            myModules.Add(new GraphLayoutModule());
            myModules.Add(new NodeMaskModule());
            myModules.Add(new TransformationModule(this));

            Picking = new PickingCache(this, new GraphPicking(this));

            myNodeMaskModuleObserver = GetModule <INodeMaskModule>().CreateObserver();
            myNodeMaskModuleObserver.ModuleChanged += OnModuleChanged;

            myTransformationModuleObserver = GetModule <ITransformationModule>().CreateObserver();
            myTransformationModuleObserver.ModuleChanged += OnModuleChanged;
        }
コード例 #2
0
        public void Attach(IGraphPresentation presentation, Action <IGraphPresentation> writeDocument)
        {
            myWriteDocument = writeDocument;

            if (myTransformationsObserver != null)
            {
                myTransformationsObserver.ModuleChanged -= OnTransformationsChanged;
                myTransformationsObserver.Dispose();
                myTransformationsObserver = null;
            }

            if (myCaptionsJournal != null)
            {
                myCaptionsJournal.ModuleChanged -= OnCaptionsChanged;
                myCaptionsJournal.Dispose();
                myCaptionsJournal = null;
            }

            myPresentation = presentation;

            if (myPresentation != null)
            {
                var transformationModule = myPresentation.GetModule <ITransformationModule>();
                myTransformationsObserver = transformationModule.CreateObserver();
                myTransformationsObserver.ModuleChanged += OnTransformationsChanged;

                var captionsModule = myPresentation.GetModule <ICaptionModule>();
                myCaptionsJournal = captionsModule.CreateJournal();
                myCaptionsJournal.ModuleChanged += OnCaptionsChanged;
            }
        }
コード例 #3
0
        public NodeMaskModule()
        {
            myMasks = new ObservableCollection <INodeMask>();
            myMasks.CollectionChanged += OnCollectionChanged;

            mySelfObserver = CreateObserver();
            mySelfObserver.ModuleChanged += OnModuleChanged;
        }
コード例 #4
0
 public void Dispose()
 {
     if (myNodeMaskModuleObserver != null)
     {
         myNodeMaskModuleObserver.ModuleChanged -= OnGraphVisibilityChanged;
         myNodeMaskModuleObserver.Dispose();
         myNodeMaskModuleObserver = null;
     }
 }
コード例 #5
0
        public ClusterFoldingTransformation(IGraphPresentation presentation)
        {
            myPresentation = presentation;

            myNodeMaskModuleObserver = myPresentation.GetModule <INodeMaskModule>().CreateObserver();
            myNodeMaskModuleObserver.ModuleChanged += OnGraphVisibilityChanged;

            myFoldedClusters = new HashSet <string>();
            myComputedEdges  = new Dictionary <string, ComputedEdge>();
        }
コード例 #6
0
        protected override void OnModelPropertyChanged(string propertyName)
        {
            RaisePropertyChanged(propertyName);

            if (propertyName == "Presentation")
            {
                RemoveNodeCommand.RaiseCanExecuteChanged();
                RemoveAllButCommand.RaiseCanExecuteChanged();
                ShowCyclesCommand.RaiseCanExecuteChanged();
                RemoveNodesWithoutSourcesCommand.RaiseCanExecuteChanged();
                RemoveNodesWithoutTargetsCommand.RaiseCanExecuteChanged();
                RemoveNodesWithoutSiblingsCommand.RaiseCanExecuteChanged();
                ShowNodesOutsideClustersCommand.RaiseCanExecuteChanged();
                FoldUnfoldAllClustersCommand.RaiseCanExecuteChanged();
                AddVisibleNodesOutsideClustersToClusterCommand.RaiseCanExecuteChanged();
                ClearSelectionCommand.RaiseCanExecuteChanged();
                InvertSelectionCommand.RaiseCanExecuteChanged();
                HomeCommand.RaiseCanExecuteChanged();
                InvalidateLayoutCommand.RaiseCanExecuteChanged();
                PrintGraphCommand.RaiseCanExecuteChanged();

                BuildClustersMenu();
                BuildSelectedNodesMenu();

                if (myTransformationsModuleObserver != null)
                {
                    mySelectionObserver.ModuleChanged -= OnSelectionChanged;
                    mySelectionObserver.Dispose();
                    mySelectionObserver = null;

                    myTransformationsModuleObserver.ModuleChanged -= OnTransformationsModuleChanged;
                    myTransformationsModuleObserver.Dispose();
                    myTransformationsModuleObserver = null;
                }

                if (Presentation != null)
                {
                    var transformations = Presentation.GetModule <ITransformationModule>();
                    myTransformationsModuleObserver = transformations.CreateObserver();
                    myTransformationsModuleObserver.ModuleChanged += OnTransformationsModuleChanged;

                    mySelectionObserver = Presentation.GetPropertySetFor <Selection>().CreateObserver();
                    mySelectionObserver.ModuleChanged += OnSelectionChanged;
                }
            }
        }
コード例 #7
0
        protected override void OnModelPropertyChanged(string propertyName)
        {
            if (propertyName == "Presentation")
            {
                if (myPresentation == Model.Presentation)
                {
                    return;
                }

                if (myTransformationsObserver != null)
                {
                    myTransformationsObserver.ModuleChanged -= OnTransformationsChanged;
                    myTransformationsObserver.Dispose();
                }

                myPresentation = Model.Presentation;

                // first build tree - master for preview
                BuildTree();

                // rebuild preview
                myPreviewNodes = null;
                if (Filter == null)
                {
                    PreviewNodes.Refresh();
                }
                else
                {
                    Filter = null;
                }

                // register for updates only AFTER tree is built up completely to avoid getting notified by the built up process
                var transformationModule = Model.Presentation.GetModule <ITransformationModule>();
                myTransformationsObserver = transformationModule.CreateObserver();
                myTransformationsObserver.ModuleChanged += OnTransformationsChanged;
            }
        }