Пример #1
0
        /// <summary>Opens a document from a given file name. </summary>
        /// <param name="fileName">The file name. </param>
        /// <param name="isReadOnly">The value indicating whether the document can be changed. </param>
        /// <returns>The task. </returns>
        public async Task OpenDocumentAsync(string fileName, bool isReadOnly)
        {
            var existingDocument = Documents.SingleOrDefault(d => d.FilePath == fileName);

            if (existingDocument != null)
            {
                SelectedDocument = existingDocument;
            }
            else
            {
                await RunTaskAsync(async token =>
                {
                    var schemaPath = JsonDocumentModel.GetDefaultSchemaPath(fileName);
                    if (!File.Exists(schemaPath))
                    {
                        var result = await Messenger.Default.SendAsync(new OpenJsonDocumentMessage(Strings.OpenJsonSchemaDocumentDialog));
                        if (!result.Success)
                        {
                            return;
                        }

                        schemaPath = result.Result;
                    }

                    var document        = await JsonDocumentModel.LoadAsync(fileName, schemaPath, ServiceLocator.Default.Resolve <IDispatcher>());
                    document.IsReadOnly = isReadOnly;

                    AddDocument(document);
                    AddRecentFile(fileName);
                });
            }
        }
Пример #2
0
        /// <summary>Opens a document from a given file name. </summary>
        /// <param name="fileName">The file name. </param>
        /// <param name="isReadOnly">The value indicating whether the document can be changed. </param>
        /// <returns>The task. </returns>
        public async Task OpenDocumentAsync(string fileName, bool isReadOnly)
        {
            var existingDocument = Documents.SingleOrDefault(d => d.FilePath == fileName);

            if (existingDocument != null)
            {
                SelectedDocument = existingDocument;
            }
            else
            {
                await RunTaskAsync(async token =>
                {
                    JsonDocumentModel document = null;

                    // First try to load the schema from the default location
                    var defaultSchemaPath = JsonDocumentModel.GetDefaultSchemaPath(fileName);
                    if (File.Exists(defaultSchemaPath))
                    {
                        document = await JsonDocumentModel.LoadAsync(fileName, defaultSchemaPath, ServiceLocator.Default.Resolve <IDispatcher>());
                    }

                    // If no schema was found, check for a "_schema" property on the document
                    if (document == null)
                    {
                        var schemaPropertyPath = JsonObjectModel.GetSchemaProperty(fileName);
                        if (!String.IsNullOrWhiteSpace(schemaPropertyPath) && File.Exists(schemaPropertyPath))
                        {
                            document = await JsonDocumentModel.LoadAsync(fileName, schemaPropertyPath, ServiceLocator.Default.Resolve <IDispatcher>());
                        }
                    }

                    // If no default schema or no schema property, prompt.
                    if (document == null)
                    {
                        var result = await Messenger.Default.SendAsync(new OpenJsonDocumentMessage(Strings.OpenJsonSchemaDocumentDialog));
                        if (!result.Success)
                        {
                            return;
                        }

                        document = await JsonDocumentModel.LoadAsync(fileName, result.Result, ServiceLocator.Default.Resolve <IDispatcher>());
                    }

                    document.IsReadOnly = isReadOnly;

                    AddDocument(document);
                    AddRecentFile(fileName);
                });
            }
        }
Пример #3
0
        /// <summary>Opens a document from a given file name. </summary>
        /// <param name="fileName">The file name. </param>
        /// <param name="isReadOnly">The value indicating whether the document can be changed. </param>
        /// <returns>The task. </returns>
        public async Task OpenDocumentAsync(string fileName, bool isReadOnly)
        {
            var existingDocument = Documents.SingleOrDefault(d => d.FilePath == fileName);

            if (existingDocument != null)
            {
                SelectedDocument = existingDocument;
            }
            else
            {
                await RunTaskAsync(async token =>
                {
                    var schemaPath = JsonDocumentModel.GetDefaultSchemaPath(fileName);

                    var document        = await JsonDocumentModel.LoadAsync(fileName, schemaPath, ServiceLocator.Default.Resolve <IDispatcher>());
                    document.IsReadOnly = isReadOnly;

                    AddDocument(document);
                    AddRecentFile(fileName);
                });
            }
        }