public GpxFileRepositoryNodeFile(GpxFile gpxFile, FileOrDirectoryPath filePath)
        {
            this.FilePath = filePath;
            _gpxFile      = new LoadedGpxFile(gpxFile);

            this.InitializeProperties();
        }
        public GpxFileRepositoryNodeFile(FileOrDirectoryPath filePath)
        {
            this.FilePath = filePath;

            try
            {
                _gpxFile = new LoadedGpxFile(GpxFile.Deserialize(
                                                 filePath.Path,
                                                 GpxFileDeserializationMethod.Compatibility));
            }
            catch (Exception e)
            {
                _gpxFile       = null;
                _fileLoadError = e;
            }

            this.InitializeProperties();
        }
        public GpxFileRepositoryNodeDirectory(FileOrDirectoryPath directory)
        {
            this.DirectoryPath = directory;

            foreach (var actDirectory in Directory.GetDirectories(this.DirectoryPath.Path))
            {
                var childDirectory = new GpxFileRepositoryNodeDirectory(new FileOrDirectoryPath(actDirectory));
                childDirectory.Parent = this;
                this.ChildNodes.Add(childDirectory);
            }

            foreach (var actFilePath in Directory.GetFiles(this.DirectoryPath.Path))
            {
                var actFileExtension = Path.GetExtension(actFilePath);
                if (!actFileExtension.Equals(".gpx", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                var childFile = new GpxFileRepositoryNodeFile(new FileOrDirectoryPath(actFilePath));
                childFile.Parent = this;
                this.ChildNodes.Add(childFile);
            }
        }