Example #1
0
        public void WHEN_FoldingExist_THEN_FoldingRestored()
        {
            var nodeC  = myPresentation.Graph.Nodes.Single(n => n.Id == "c");
            var module = myPresentation.GetModule <TransformationModule>();

            myPresentation.ClusterFolding().Toggle("X17");

            Assert.That(module.Items.OfType <ClusterFoldingTransformation>().Single().Clusters, Is.EquivalentTo(new[] { "X17" }));

            var bookmark = myBuilder.Create(myPresentation, "test");

            Assert.That(bookmark, Is.Not.Null);

            // unfold again to be sure that folding comes really from bookmark
            myPresentation.ClusterFolding().Toggle("X17");

            myBuilder.Apply(myPresentation, bookmark);

            Assert.That(module.Items.OfType <ClusterFoldingTransformation>().Single().Clusters, Is.EquivalentTo(new[] { "X17" }));
        }
Example #2
0
        public static void ToogleFoldingOfVisibleClusters(this IGraphPresentation presentation)
        {
            Contract.RequiresNotNull(presentation, nameof(presentation));

            var transformation = presentation.ClusterFolding();

            var visibleClusters = presentation.TransformedGraph().Clusters
                                  .Where(presentation.Picking.Pick)
                                  .Select(c => c.Id)
                                  .ToList();

            // any visible cluster folded?
            if (visibleClusters.Any(transformation.Clusters.Contains))
            {
                // safe to pass nodes not known to transformation
                transformation.Remove(visibleClusters);
            }
            else
            {
                transformation.Add(visibleClusters);
            }
        }
        private void OnAddCluster(ClusterTreeNode parent)
        {
            // avoid many intermediate updates
            myTransformationsObserver.ModuleChanged -= OnTransformationsChanged;

            var newClusterId  = Guid.NewGuid().ToString();
            var captionModule = myPresentation.GetModule <ICaptionModule>();

            captionModule.Add(new Caption(newClusterId, "<new>"));

            myPresentation.DynamicClusters().AddCluster(newClusterId);

            // start new clusters folded
            myPresentation.ClusterFolding().Toggle(newClusterId);

            // update tree
            {
                var clusterNode = new ClusterTreeNode(myPresentation)
                {
                    Parent        = Root,
                    Id            = newClusterId,
                    Caption       = captionModule.Get(newClusterId).DisplayText,
                    IsDragAllowed = false
                };
                Root.Children.Add(clusterNode);

                // register for notifications after tree is built to avoid intermediate states getting notified

                PropertyChangedEventManager.AddHandler(clusterNode, OnSelectionChanged, PropertySupport.ExtractPropertyName(() => clusterNode.IsSelected));

                // nothing ot update
                //myNodeClusterCache = null;
            }

            Root.Children.Single(n => n.Id == newClusterId).IsSelected = true;

            myTransformationsObserver.ModuleChanged += OnTransformationsChanged;
        }