コード例 #1
0
        protected virtual void ComposePagesDisplay(IGraphSceneDisplay <IVisual, IVisualEdge> display)
        {
            display.SceneFocusChanged += (s, e) => {
                var docMan      = new DigidocViz();
                var pageContent = docMan.PageContent(e.Scene.Graph, e.Item);
                PageContent = pageContent;
                if (pageContent != null && ContentViewer != null)
                {
                    AttachScroller(display, ContentViewer.Frontend as IDisplay);
                    var thing = e.Scene.Graph.ThingOf(e.Item);
                    ContentViewer.ContentId = thing.Id;
                }
            };

            var layout = display.Layout;

            Border            = new Size(0, -5);
            layout.StyleSheet = DefaultStyleSheet;

            var focusAction = display.ActionDispatcher.GetAction <GraphSceneFocusAction <IVisual, IVisualEdge> > ();

            if (focusAction != null)
            {
                focusAction.HitSize = -1;
            }

            var folding = display.Folding();

            folding.Folder.RemoveOrphans = false;
        }
コード例 #2
0
        public virtual void SetDocument(GraphCursor <IVisual, IVisualEdge> source)
        {
            var pagesDisplay = this.PagesDisplay;

            // bring the docpages into view:
            var docManager = new DigidocViz();
            var pageScene  = new Scene();

            pagesDisplay.Data = pageScene;

            var doc = source.Graph.ThingOf(source.Cursor);
            IGraph <IVisual, IVisualEdge> targetGraph = null;

            targetGraph = Mesh.CreateSinkGraph(source.Graph);

            pageScene.Graph = targetGraph;

            Mesh.AddScene(pageScene);

            var targetDocument = targetGraph.VisualOf(doc);

            this.DocumentVisual = targetDocument;

            // get the pages and add them to scene:
            var pages = docManager.Pages(targetGraph, targetDocument).OrderBy(e => e, new VisualComparer()).ToList();

            pages.ForEach(page => pagesDisplay.Data.Add(page));

            var distance = pagesDisplay.Layout.Distance;

            pagesDisplay.Layout.Border = this.Border;

            var aligner = new Aligner <IVisual, IVisualEdge> (pagesDisplay.Data, pagesDisplay.Layout);
            var dd      = this.Border.Height;
            var options = new AlignerOptions {
                Distance        = new Size(dd, dd),
                AlignX          = Alignment.End,
                AlignY          = Alignment.Start,
                Dimension       = Dimension.X,
                PointOrderDelta = 1
            };

            aligner.OneColumn(pages, (Point)this.Border, options);
            aligner.Locator.Commit(aligner.GraphScene.Requests);

            new State {
                Hollow = true
            }.CopyTo(pagesDisplay.State);
            pagesDisplay.Text = source.Cursor.Data == null ? CommonSchema.NullString : source.Cursor.Data.ToString();
            pagesDisplay.Viewport.Reset();
            pagesDisplay.BackendRenderer.Render();

            // show first page:
            var firstPage = pages.FirstOrDefault();

            if (firstPage != null)
            {
                pageScene.Focused = firstPage;
                pagesDisplay.OnSceneFocusChanged();
            }
            pagesDisplay.Perform();

            var pageCache  = new Set <IVisual> (pages);
            var moveResize = pagesDisplay.ActionDispatcher.GetAction <GraphItemMoveResizeAction <IVisual, IVisualEdge> > ();

            moveResize.FocusFilter = e => pageCache.Contains(e) ? null : e;
        }