public static bool TitlePropertyHasImplicitImplementation(object documentContentOrDocumentViewModel)
        {
            IDocumentContent documentContent = documentContentOrDocumentViewModel as IDocumentContent;

#if !NETFX_CORE
            if (documentContent != null)
            {
                return(ExpressionHelper.PropertyHasImplicitImplementation(documentContent, i => i.Title));
            }
#pragma warning disable 612, 618
            IDocumentViewModel documentViewModel = documentContentOrDocumentViewModel as IDocumentViewModel;
            if (documentViewModel != null)
            {
                return(ExpressionHelper.PropertyHasImplicitImplementation(documentViewModel, i => i.Title));
            }
#pragma warning restore 612, 618
#else
            if (documentContent != null)
            {
                InterfaceMapping mapping = documentContent.GetType().GetTypeInfo().GetRuntimeInterfaceMap(typeof(IDocumentContent));
                return(mapping.TargetMethods.FirstOrDefault(mi => mi.Name == "set_Title" && mi.IsPrivate) != null);
            }
#endif
            throw new ArgumentException("", "documentContentOrDocumentViewModel");
        }
示例#2
0
 /// <summary>
 /// Saves a document and resets the dirty flag.
 /// </summary>
 /// <param name="fileToSave"></param>
 /// <param name="saveAsFlag"></param>
 public void Save(IDocumentViewModel fileToSave, bool saveAsFlag = false)
 {
     if (fileToSave.FilePath == null || saveAsFlag)
     {
         var dlg = new SaveFileDialog();
         if (fileToSave.FilePath != null)
         {
             dlg.FileName = Path.GetFileName(fileToSave.FilePath);
         }
         else
         {
             dlg.FileName = Path.GetFileName(fileToSave.ContentId);
         }
         //dlg.RestoreDirectory = true;
         dlg.InitialDirectory = Path.GetDirectoryName(fileToSave.FilePath);
         if (dlg.ShowDialog().GetValueOrDefault())
         {
             fileToSave.FilePath = dlg.SafeFileName;
             ActiveDocument.SaveAsCommand.SafeExecute();
         }
     }
     else
     {
         ActiveDocument.SaveCommand.SafeExecute();
     }
 }
        int Compare(int sortColumnIndex, IDocumentViewModel objX, IDocumentViewModel objY)
        {
            var objSortColumn = default(DocumentsSortColumnInfo);
            int intResult     = 0;

            if (sortColumnIndex >= mobjSortColumns.Count)
            {
                return(0);
            }

            objSortColumn = (DocumentsSortColumnInfo)mobjSortColumns [sortColumnIndex];

            if (objSortColumn.Direction == SortDirection.Ascending)
            {
                intResult = CompareValues(objSortColumn.ColumnName, objX, objY);
            }
            else
            {
                intResult = CompareValues(objSortColumn.ColumnName, objY, objX);
            }

            // Difference not found, sort by next sort column
            if (intResult == 0)
            {
                return(Compare(sortColumnIndex + 1, objX, objY));
            }

            return(intResult);
        }
        public DocumentView(IDocumentViewModel viewModel)
        {
            Helpers.NullCheck(viewModel);

            this.DataContext = viewModel;

            InitializeComponent();
        }
            public void Update(DependencyObject target, IDocumentViewModel documentViewModel) {
                object title = documentViewModel.Title;
#if !SILVERLIGHT
                if(convertToString)
                    title = title == null ? string.Empty : title.ToString();
#endif
                target.SetValue(targetProperty, title);
            }
        /// <summary>
        /// Compares two documents and returns a value indicating whether one is less than,
        /// equal to, or greater than the other. This method is of Comparison&lt;T&gt; delegate type
        /// </summary>
        /// <param name="x">First document.</param>
        /// <param name="y">Second document.</param>
        public int Compare(IDocumentViewModel x, IDocumentViewModel y)
        {
            if (mobjSortColumns.Count == 0)
            {
                return(0);
            }

            return(Compare(0, x, y));
        }
示例#7
0
 /// <summary>
 /// Determines the matching view for a specific given type of viewmodel.
 /// </summary>
 /// <param name="item">Identifies the viewmodel object for which we require an associated view.</param>
 /// <param name="container">Identifies the container's instance that wants to resolve this association.</param>
 public override System.Windows.DataTemplate SelectTemplate(object item,
                                                            System.Windows.DependencyObject container)
 {
     return(item switch
     {
         IDocumentViewModel _ => FileViewTemplate,
         LogViewModel _ => LogViewTemplate,
         ProjectExplorerViewModel _ => ProjectExplorerTemplate,
         _ => base.SelectTemplate(item, container)
     });
示例#8
0
 public bool CouldDeleteDocument(IDocumentViewModel documentViewModel)
 {
     if (documentViewModel != null)
     {
         if (documentViewModel.IsDeletable == false)
         {
             return(false);
         }
     }
     return(true);
 }
            public bool EvaluateCondition()
            {
                if (fixture.DemoBaseTesting.CurrentDemoModule == null)
                {
                    return(true);
                }
                DocumentPreviewControl viewer = BaseTestingFixture.HelperActions.FindElementByType <DocumentPreviewControl>(fixture.DemoBaseTesting.CurrentDemoModule);
                IDocumentViewModel     model  = viewer.Document;
                bool documentBuilt            = model == null ? false : !model.IsCreating && model.Pages.Count > 0;

                return(documentBuilt);
            }
示例#10
0
 /// <summary>
 /// called only when oldValue or newVlaue is me
 /// </summary>
 /// <param name="oldValue"></param>
 /// <param name="newValue"></param>
 internal protected virtual void OnActiveDocumentChanged(IDocumentViewModel oldValue, IDocumentViewModel newValue)
 {
     //using Object.ReferenceEquals to compare
     if (object.ReferenceEquals(newValue, this))
     {
         ContextualUI.Show(this);
     }
     else if (object.ReferenceEquals(oldValue, this))
     {
         ContextualUI.Hide(this);
     }
 }
 public TitleUpdater(bool convertToString, IDocumentViewModel documentViewModel, DependencyObject target, DependencyProperty targetProperty) {
     TitleUpdater oldUpdater = (TitleUpdater)target.GetValue(TitleUpdaterInternalProperty);
     if(oldUpdater != null)
         oldUpdater.Dispose();
     this.convertToString = convertToString;
     target.SetValue(TitleUpdaterInternalProperty, this);
     this.targetProperty = targetProperty;
     this.updateHandler = new PropertyChangedWeakEventHandler<DependencyObject>(target, OnDocumentViewModelPropertyChanged);
     INotifyPropertyChanged notify = documentViewModel as INotifyPropertyChanged;
     DocumentViewModel = notify;
     if(notify != null)
         notify.PropertyChanged += this.updateHandler.Handler;
 }
示例#12
0
        public void OpenDocument(IDocumentViewModel viewModel)
        {
            Argument.IsNotNull("viewModel", viewModel);
            var docViewModel = (viewModel as DocumentBaseViewModel);

            docViewModel.OnBeforeOpen();
            //see comments up.not using Collection.Contains because it using Equals to compare
            if (!Documents.Contains_CompareByReference <IDocumentViewModel>(viewModel))
            {
                Documents.Add(viewModel);
            }
            docViewModel.IsAliveClosed = false;
            viewModel.IsSelected       = true;
        }
        public static object GetTitle(object documentContentOrDocumentViewModel)
        {
            IDocumentContent documentContent = documentContentOrDocumentViewModel as IDocumentContent;

            if (documentContent != null)
            {
                return(documentContent.Title);
            }
#pragma warning disable 612, 618
            IDocumentViewModel documentViewModel = documentContentOrDocumentViewModel as IDocumentViewModel;
            if (documentViewModel != null)
            {
                return(documentViewModel.Title);
            }
#pragma warning restore 612, 618
            throw new ArgumentException("", "documentContentOrDocumentViewModel");
        }
        public static bool TitlePropertyHasImplicitImplementation(object documentContentOrDocumentViewModel)
        {
            IDocumentContent documentContent = documentContentOrDocumentViewModel as IDocumentContent;

            if (documentContent != null)
            {
                return(ExpressionHelper.PropertyHasImplicitImplementation(documentContent, i => i.Title));
            }
#pragma warning disable 612, 618
            IDocumentViewModel documentViewModel = documentContentOrDocumentViewModel as IDocumentViewModel;
            if (documentViewModel != null)
            {
                return(ExpressionHelper.PropertyHasImplicitImplementation(documentViewModel, i => i.Title));
            }
#pragma warning restore 612, 618
            throw new ArgumentException("", "documentContentOrDocumentViewModel");
        }
        public static void OnClose(object documentContentOrDocumentViewModel, CancelEventArgs e)
        {
            IDocumentContent documentContent = documentContentOrDocumentViewModel as IDocumentContent;

            if (documentContent != null)
            {
                documentContent.OnClose(e);
                return;
            }
#pragma warning disable 612, 618
            IDocumentViewModel documentViewModel = documentContentOrDocumentViewModel as IDocumentViewModel;
#pragma warning restore 612, 618
            if (documentViewModel != null)
            {
                e.Cancel = !documentViewModel.Close();
                return;
            }
        }
        int CompareValues(string columnName, IDocumentViewModel x, IDocumentViewModel y)
        {
            switch (columnName)
            {
            case DocumentsDisplayColumnInfo.COLUMN_SORTORDER:
                return(x.SortOrderIndex.CompareTo(y.SortOrderIndex));

            case DocumentsDisplayColumnInfo.COLUMN_CATEGORY:
                return(x.Category.CompareTo(y.Category));

            case DocumentsDisplayColumnInfo.COLUMN_CREATEDBY:
                return(x.CreatedByUser.CompareTo(y.CreatedByUser));

            case DocumentsDisplayColumnInfo.COLUMN_CREATEDDATE:
                return(x.CreatedDate.CompareTo(y.CreatedDate));

            case DocumentsDisplayColumnInfo.COLUMN_PUBLISHEDONDATE:
                return(x.PublishedOnDate.CompareTo(y.PublishedOnDate));

            case DocumentsDisplayColumnInfo.COLUMN_DESCRIPTION:
                return(x.Description.CompareTo(y.Description));

            case DocumentsDisplayColumnInfo.COLUMN_MODIFIEDBY:
                return(x.ModifiedByUser.CompareTo(y.ModifiedByUser));

            case DocumentsDisplayColumnInfo.COLUMN_MODIFIEDDATE:
                return(x.ModifiedDate.CompareTo(y.ModifiedDate));

            case DocumentsDisplayColumnInfo.COLUMN_OWNEDBY:
                return(x.OwnedByUser.CompareTo(y.OwnedByUser));

            case DocumentsDisplayColumnInfo.COLUMN_SIZE:
                return(x.Size.CompareTo(y.Size));

            case DocumentsDisplayColumnInfo.COLUMN_TITLE:
                return(x.Title.CompareTo(y.Title));

            case DocumentsDisplayColumnInfo.COLUMN_CLICKS:
                return(x.Clicks.CompareTo(y.Clicks));
            }

            return(0);
        }
示例#17
0
        public void SavePage(IDocumentViewModel documentViewModel)
        {
            if (documentViewModel == null)
            {
                return;
            }

            var dialogService = new DialogService();
            var filename      = dialogService.GetFileSavePath(SAVE_TITLE, SAVE_DEFAULT_EXT, SAVE_FILTER);

            if (string.IsNullOrEmpty(filename))
            {
                return;
            }

            var markdown = documentViewModel.MarkdownContent;
            var html     = _documentParser.ParseClean(markdown);

            File.WriteAllText(filename, html);
        }
示例#18
0
 void DocumentClosedEventHandler(DocumentClosedEvent documentClosedEvent)
 {
     IDocumentViewModel documentClosed = documentClosedEvent.Data;
 }
示例#19
0
 public void ActivateDocument(IDocumentViewModel documentViewModel)
 {
     ActiveDocument = documentViewModel;
 }
示例#20
0
        //public event Action<IDocumentViewModel> DocumentClosed;
        public bool CloseDocument(IDocumentViewModel documentViewModel)
        {
            if ((!documentViewModel.CanClose) && !IsClearing)
            {
                this.Messager.MessageBox.ShowInformation(Metaseed.ShellBase.Properties.Resources.ClosingThisDocumentIsNotAlowed);
                return(false);
            }

            if (documentViewModel.IsDataDirty)
            {
                documentViewModel.SaveViewModel();
                Log.Info(documentViewModel.NameText + "-" + Metaseed.ShellBase.Properties.Resources.Saved);
            }
            if (!documentViewModel.KeepAliveWhenClose)
            {
                documentViewModel.CloseViewModel(true);
                var viewModel = documentViewModel as DocumentBaseViewModel;
                if (viewModel != null)
                {
                    viewModel.IsAliveClosed = false;
                }
            }
            else
            {
                var viewModel = documentViewModel as DocumentBaseViewModel;
                if (viewModel != null)
                {
                    viewModel.IsAliveClosed = true;
                }
            }
            if (Application.Current == null || Application.Current.Dispatcher == null)
            {
                return(false);
            }
            if (!Application.Current.Dispatcher.CheckAccess())
            {
                Application.Current.Dispatcher.Invoke(new Action(() => { Documents.Remove(documentViewModel); }),
                                                      DispatcherPriority.Normal);
            }
            else
            {
                Documents.Remove(documentViewModel);
            }

            if (!IsClearing && (documentViewModel.ContentId != null))
            {
                var docUnopen = new DocumentUnopenBase()
                {
                    ContentId = documentViewModel.ContentId, NameText = documentViewModel.Title, Description = documentViewModel.Description, KeepAliveWhenClose = documentViewModel.KeepAliveWhenClose
                };
                if (documentViewModel.KeepAliveWhenClose)
                {
                    docUnopen.DocClosedButAlive = documentViewModel;
                }
                DocumentsUnopen.Add(docUnopen);
                var model = documentViewModel as DocumentBaseViewModel;
                if (model != null)
                {
                    model.OnAfterClose();
                }
            }

            DocumentClosedEvent.SendWith(documentViewModel);
            return(true);
        }
 public CloseDocumentMessage(IDocumentViewModel model)
 {
     Document = model;
 }
        public void SavePage(IDocumentViewModel documentViewModel)
        {
            if (documentViewModel == null) return;

            var dialogService = new DialogService();
            var fileName = dialogService.GetFileSavePath(SAVE_TITLE, SAVE_DEFAULT_EXT, SAVE_FILTER);
            if (string.IsNullOrEmpty(fileName)) return;

            var markdown = documentViewModel.MarkdownContent;
            var html = _documentParser.ParseClean(markdown);

            File.WriteAllText(fileName, html);
        }
示例#23
0
 public override void ActivateDocument(IDocumentViewModel documentViewModel)
 {
     Manager.ActiveContent = documentViewModel;
 }
示例#24
0
        void OpenPackage(string packageFilePath)
        {
            if (!File.Exists(packageFilePath))
            {
                Log.Error("File Not Exist!");
                return;
            }
            _oderOpenDocumentItemList.Clear();
            int oderOpenDocumentItemNum = 0;
            var shellService            = ((ShellService)(ShellService));

            using (Package package = Package.Open(packageFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                //_EventAggregator.GetEvent<PackageBeforeOpenEvent>().Publish(package);
                PackageBeforeOpenEvent.SendWith(package);
                //load documents unopen
                var packageRelationShipDocumentsUnopen = package.GetRelationship(Package_DocumentsUnopen_ID);
                var layoutPartDocumentsUnopen          = package.GetPart(packageRelationShipDocumentsUnopen.TargetUri);
                var xmlSerilalizer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection <DocumentUnopen>));
                var unopenDocs     = xmlSerilalizer.Deserialize(layoutPartDocumentsUnopen.GetStream()) as ObservableCollection <DocumentUnopen>;
                if (unopenDocs != null)
                {
                    foreach (var item in unopenDocs)
                    {
                        shellService.DocumentsUnopen.Add(item);
                        if (item.KeepAliveWhenClose)
                        {
                            _oderOpenDocumentItemList.Add(new OderOpenDocumentItem()
                            {
                                IsUnopenDoc        = true,
                                UnopenDocContentId = item.ContentId,
                                DocUnopen          = item
                            });
                        }
                    }
                }
                //load avalondock panel layout
                var layoutRelationShip = package.GetRelationship(Package_PanelLayoutPart_ID);
                var layoutPart         = package.GetPart(layoutRelationShip.TargetUri);
                var packageManger      = this.GetDependencyResolver().Resolve <DockingManager>();
                var layoutSerializer   = new XmlLayoutSerializer(packageManger);
                layoutSerializer.LayoutSerializationCallback += (s, e) =>
                {
                    //Get LayoutContentViewModel From Package
                    if (e.Model is LayoutAnchorable)
                    {
                        var layoutAnchorable = e.Model as LayoutAnchorable;
                        Debug.Assert(package != null, "package != null");
                        var contentViewModel = OpenPackageContent(package, e.Model.ContentId);
                        var toolViewModel    = contentViewModel as IToolViewModel;
                        System.Diagnostics.Debug.Assert(toolViewModel != null);
                        e.Content = contentViewModel;
                        if (!ShellService.Tools.Contains_CompareByReference(toolViewModel))
                        {
                            ShellService.Tools.Add(toolViewModel);
                        }
                        toolViewModel.IsSelected = layoutAnchorable.IsSelected;
                        toolViewModel.IsActive   = layoutAnchorable.IsActive;
                        toolViewModel.IsVisible  = layoutAnchorable.IsVisible;
                        System.Diagnostics.Debug.Assert(ShellService.Documents.Count == 0);//the code of the avalondock behave in this kind of behavior, and the whole application assume the tools are loaded first.
                        return;
                    }
                    else if (e.Model is LayoutDocument)
                    {
                        var layoutDocument = e.Model as LayoutDocument;

                        //var contentViewModel = Services.ShellService.OpenPackageContent(package, e.Model.ContentId) as IDocumentViewModel;
                        //e.Content = contentViewModel;
                        //if (!ShellService.Documents.Contains_CompareByReference(contentViewModel))
                        //{
                        //    ShellService.Documents.Add(contentViewModel);
                        //}
                        //contentViewModel.IsSelected = layoutDocument.IsSelected;
                        //contentViewModel.IsActive = layoutDocument.IsActive;

                        _oderOpenDocumentItemList.Add(new OderOpenDocumentItem()
                        {
                            Num = oderOpenDocumentItemNum, LayoutContent = layoutDocument
                        });
                        oderOpenDocumentItemNum++;
                        e.Cancel = true;
                        return;
                    }
                    else
                    {
                        return;
                    }
                };

                layoutSerializer.Deserialize(layoutPart.GetStream());
                foreach (var item in _oderOpenDocumentItemList)
                {
                    if (!item.IsUnopenDoc)
                    {
                        //bug fix for avalondock start form 2.1.0, because the close() methord work like 2.0.0
                        //in 2.0.0 close(){
                        //ILayoutRoot root = base.Root;
                        //ILayoutContainer parentAsContainer = base.Parent;
                        //parentAsContainer.RemoveChild(this);
                        //if (root != null)
                        //{
                        //    root.CollectGarbage();
                        //}}
                        //if (item.LayoutContent.Parent != null)
                        //{
                        item.LayoutContent.Parent.RemoveChild(item.LayoutContent);
                        //}
                    }
                }
                //Order Open Document;
                _oderOpenDocumentItemList.Sort((item) =>
                {
                    string packagePartId;
                    string contentId     = null;
                    contentId            = item.IsUnopenDoc ? item.UnopenDocContentId : item.LayoutContent.ContentId;
                    Type packagePartType = ContentID_ToTypeAndPackagePartID(contentId, out packagePartId);
                    return(packagePartType.GetAttributeValue((DocumentOpenOrderAttribute a) => a.Value));
                });

                IDocumentViewModel lastActiveDocument = null;
                foreach (var doc in _oderOpenDocumentItemList)
                {
                    if (doc.IsUnopenDoc)
                    {
                        var contentViewModel  = OpenPackageContent(package, doc.UnopenDocContentId);
                        var documentViewModel = contentViewModel as IDocumentViewModel;
                        System.Diagnostics.Debug.Assert(documentViewModel != null);
                        doc.DocUnopen.DocClosedButAlive = documentViewModel;
                        doc.DocUnopen = null;
                    }
                    else
                    {
                        var contentViewModel  = OpenPackageContent(package, doc.LayoutContent.ContentId);
                        var documentViewModel = contentViewModel as IDocumentViewModel;
                        System.Diagnostics.Debug.Assert(documentViewModel != null);
                        doc.LayoutContentViewModel = documentViewModel;
                        ShellService.OpenDocument(documentViewModel);
                        if (doc.LayoutContent.IsLastFocusedDocument)
                        {
                            lastActiveDocument = doc.LayoutContentViewModel;
                        }
                    }
                }
                _oderOpenDocumentItemList.RemoveAll(x => x.IsUnopenDoc);
                _oderOpenDocumentItemList.Sort((item) => item.Num);

                for (int i = 0; i < _oderOpenDocumentItemList.Count; i++)
                {
                    int indexInShellDocuments = ShellService.Documents.IndexOf(_oderOpenDocumentItemList[i].LayoutContentViewModel);
                    if (i != indexInShellDocuments)
                    {
                        ShellService.Documents.Move(indexInShellDocuments, i);
                    }
                    _oderOpenDocumentItemList[i].LayoutContentViewModel = null;
                }
                if (lastActiveDocument != null)
                {
                    ShellService.ActivateDocument(lastActiveDocument);
                }
                PackageAfterOpenEvent.SendWith(package);
                _oderOpenDocumentItemList.Clear();
            }
        }
示例#25
0
 /// <summary>
 /// Class constructor
 /// </summary>
 public GenericAppViewModel(IDocumentViewModel demoAooViewModel)
     : this()
 {
     _demo = demoAooViewModel;
 }