예제 #1
0
 public static void SetCurrent(DocumentViewModel value)
 {
     if (value == null)
     {
         return;
     }
     OutputService.Log($"SET Current request for {value.Model.File.Path}");
     _queue.Add(value);
 }
예제 #2
0
        public void Render(string model)
        {
            _renderComplete.Reset();
            var r = new ReleaseUI($"Render ReleaseUI for {ViewModel.Model.File.Path}", true);

            ViewModel.RenderStarted();
            SuspendLayout();
            try
            {
                if (model == null)
                {
                    Log.WriteError("Model is NULL, this should not happen!", typeof(DocumentWindow).FullName, MethodBase.GetCurrentMethod().Name);
                    return;
                }


                if (InvokeRequired)
                {
                    Invoke(new Action <string>(Render), model);
                    return;
                }

                PerformanceService.StartEvent($"{PerformanceService.CONST_RenderDocument}{ViewModel.Model.File.Path}");
                OutputService.Log($"Document Render for {ViewModel.Model.File.Path}");
                Log.WriteEnter(typeof(DocumentWindow).FullName, MethodBase.GetCurrentMethod().Name);

                // Setting SelectionChangedDelayedEnabled for the first time
                if (!fctbDocument.SelectionChangedDelayedEnabled)
                {
                    fctbDocument.SelectionChangedDelayedEnabled = true;
                }
                scBase.Panel1Collapsed = !XmlDal.DataModel.Options.DocumentSourceInfo;
                PreCachePropertyLineData();
                r.DoEvents();
                sourceInfo.Render(ViewModel.Model.File);
                fctbDocument.ClearCache();
                r.DoEvents();
                fctbDocument.Text = model;
                r.DoEvents();
                ApplyFolding();
                // Force the control to paint itself now

                fctbDocument.Invalidate();
                StatusUpdate(StatusModel.Completed);
                Log.WriteTrace("Document Render Complete...", typeof(DocumentWindow).FullName, MethodBase.GetCurrentMethod().Name);
                PerformanceService.StopEvent($"Rebuild Active Document for {ViewModel.Model.File.Path}", true);
                PerformanceService.StopEvent($"{PerformanceService.CONST_RenderDocument}{ViewModel.Model.File.Path}", true);
                r.Stop();
            }
            finally
            {
                ResumeLayout();
                ViewModel.DocumentRenderComplete();
                _renderComplete.Set();
            }
        }
        public override void RenderDocument()
        {
            if (MainViewModel.Current == null)
            {
                return;
            }

            if (!View.Visible)
            {
                return;
            }

            OutputService.Log($"DocumentMap Render Request for {MainViewModel.Current.Model.File.Path}");
            _queue.Add(MainViewModel.Current.Model.File);
        }
예제 #4
0
        public void Render(SockDrawerModel model)
        {
            OutputService.Log("Rendering SockDrawer.");
            StatusPanel.StatusUpdate(StatusModel.StartStopWatch);
            StatusPanel.SP_FullScreen           = false;
            StatusPanel.SP_DisplayRemainingTime = false;
            StatusPanel.StatusUpdate(StatusModel.Update("Loading"));

            Model = model;

            if (!_treeViewInvalidated)
            {
                return;
            }

            _treeViewInvalidated = false;
            RenderTreeView();
        }
 public static void Warning(string message)
 {
     OutputService.Log(message);
 }
 private void QueueRender(FileData file)
 {
     OutputService.Log($"Document Map Queue Render for {MainViewModel.Current.Model.File.Path}");
     _current = file;
     base.RenderDocument();
 }
예제 #7
0
        /// <summary>
        /// Current is only set by the following Events
        /// 1.) MainViewModel.Startup Method
        /// 2.) OpenDocument
        /// 3.) DocumentWindow.Enter
        /// 4.) When all documents are closed
        /// </summary>
        private static void QueueCurrent(DocumentViewModel value)
        {
            var complete = true;

            try
            {
                var sw = new Stopwatch(MethodBase.GetCurrentMethod().Name);
                if (_current == value)
                {
                    return;
                }

                if (_current != null &&
                    _current.Model.File.DataController.InvalidateNotificationEvent != null)
                {
                    foreach (var viewModel in DocumentViewModels)
                    {
                        if (viewModel.GetType().Name == "DocumentViewModel")
                        {
                            continue;
                        }
                        _current.Model.File.DataController.InvalidateNotificationEvent -= viewModel.RenderDocument;
                    }
                    _current.Model.File.DataController.InvalidateNotificationEvent -= _current.RenderDocument;
                }

                _current = value;

                if (_current == null)
                {
                    return;
                }

                OutputService.Log($"SET Current for {value.Model.File.Path}");

                foreach (var viewModel in DocumentViewModels)
                {
                    if (viewModel.GetType().Name == "DocumentViewModel")
                    {
                        continue;
                    }
                    _current.Model.File.DataController.InvalidateNotificationEvent += viewModel.RenderDocument;
                }
                _current.Model.File.DataController.InvalidateNotificationEvent += _current.RenderDocument;

                if (!StartupComplete)
                {
                    return;
                }

                // We only Render the Document if 'IsCached' is false OR the first time we render the Document
                // Otherwise we are just setting focus to this document - Sara
                if ((!_current.IsCached || !_current.FirstRenderComplete) & !_current.IsRendering)
                {
                    _current.RenderDocument();
                    complete = false;
                }

                RenderViews();

                PrepareHideOptions();

                sw.Stop();
            }
            finally
            {
                if (complete)
                {
                    _queue.ItemComplete();
                }
            }
        }