public override IEnumerable <ISavableFile> Create(FileCreationContext context)
        {
            byte[] data      = null;
            var    evaluator = context.GetStringEvaluator();

            if (ContentsType == Templates.ContentsType.Text)
            {
                data = Encoding.UTF8.GetBytes(evaluator.EvaluateString(UnevaluatedContents));
            }
            else
            {
                data = Convert.FromBase64String(UnevaluatedContents);
            }

            var file = context.FileService.CreateFile(context.FilePath.ParentDirectory.Combine(evaluator.EvaluateString(UnevaluatedName)), data);

            if (!string.IsNullOrEmpty(DependentUpon))
            {
                file.Dependencies.Add(evaluator.EvaluateString(DependentUpon));
            }

            if (context.CurrentProject != null)
            {
                var entry = new ProjectFileEntry(file.FilePath);
                entry.Dependencies.AddRange(file.Dependencies);

                context.CurrentProject.ProjectFiles.Add(entry);
            }

            return(new ISavableFile[] { file });
        }
Beispiel #2
0
        public MSBuildProject(FilePath filePath)
        {
            FilePath = filePath;

            _msBuildProject = ProjectRootElement.Open(filePath.FullPath, _globalCollection);

            foreach (var item in _msBuildProject.Items)
            {
                if (item.ItemType == "Reference")
                    References.Add(item.Include);
                else if (item.ItemType == "Compile" || item.ItemType == "None")
                {
                    var entry = new ProjectFileEntry(new FilePath(this.ProjectDirectory, item.Include));

                    foreach (var element in item.Metadata)
                    {
                        if (element.Name == "DependentUpon")
                        {
                            entry.Dependencies.Add(element.Value);
                        }
                    }

                    entry.ParentProject = this;
                    AddFileEventHandlers(entry);
                    ProjectFiles.Add(entry);
                }
            }

            SetupEventHandlers();
            HasUnsavedData = false;
        }
Beispiel #3
0
        public MSBuildProject(FilePath filePath)
        {
            FilePath = filePath;

            _msBuildProject = ProjectRootElement.Open(filePath.FullPath, _globalCollection);

            foreach (var item in _msBuildProject.Items)
            {
                if (item.ItemType == "Reference")
                {
                    References.Add(item.Include);
                }
                else if (item.ItemType == "Compile" || item.ItemType == "None")
                {
                    var entry = new ProjectFileEntry(new FilePath(this.ProjectDirectory, item.Include));

                    foreach (var element in item.Metadata)
                    {
                        if (element.Name == "DependentUpon")
                        {
                            entry.Dependencies.Add(element.Value);
                        }
                    }

                    entry.ParentProject = this;
                    AddFileEventHandlers(entry);
                    ProjectFiles.Add(entry);
                }
            }

            SetupEventHandlers();
            HasUnsavedData = false;
        }
        public FileNode(ProjectFileEntry file, IconProvider iconProvider)
            : base(file.FilePath)
        {
            if (file == null)
                throw new ArgumentNullException("file");

            if (iconProvider == null)
                throw new ArgumentNullException("iconProvider");

            FileEntry = file;
            FileEntry.FilePathChanged += FileEntry_FilePathChanged;

            ImageIndex = SelectedImageIndex = (_iconProvider = iconProvider).GetImageIndex(file);
        }
Beispiel #5
0
        private ProjectFileEntry ReadProjectFileEntryItem(ProjectItemElement element)
        {
            var entry = new ProjectFileEntry(new FilePath(this.ProjectDirectory, element.Include));

            foreach (var metadata in element.Metadata)
            {
                if (metadata.Name == "DependentUpon")
                {
                    entry.Dependencies.Add(metadata.Value);
                }
            }

            entry.ParentProject = this;
            return(entry);
        }
Beispiel #6
0
 private void existingFileToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (var dialog = new OpenFileDialog())
     {
         if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             var directoryNode = GetCurrentDirectoryNode();
             var projectNode   = directoryNode.GetProjectNode();
             var sourcePath    = new FilePath(dialog.FileName);
             var newPath       = new FilePath(directoryNode.FilePath, sourcePath.FileName + sourcePath.Extension);
             _extensionHost.FileService.CopyFile(sourcePath, newPath);
             var fileEntry = new ProjectFileEntry(newPath);
             projectNode.ProjectEntry.Project.ProjectFiles.Add(fileEntry);
         }
     }
 }
Beispiel #7
0
        public FileNode(ProjectFileEntry file, IconProvider iconProvider)
            : base(file.FilePath)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            if (iconProvider == null)
            {
                throw new ArgumentNullException("iconProvider");
            }

            FileEntry = file;
            FileEntry.FilePathChanged += FileEntry_FilePathChanged;

            ImageIndex = SelectedImageIndex = (_iconProvider = iconProvider).GetImageIndex(file);
        }
Beispiel #8
0
 private void RemoveFileEventHandlers(ProjectFileEntry entry)
 {
     entry.FilePathChanged           -= new PathChangedEventHandler(ProjectFileEntry_FilePathChanged);
     entry.Dependencies.InsertedItem -= DependantFiles_InsertedItem;
     entry.Dependencies.RemovedItem  -= DependantFiles_RemovedItem;
 }
Beispiel #9
0
 private void RemoveFileEventHandlers(ProjectFileEntry entry)
 {
     entry.FilePathChanged -= new PathChangedEventHandler(ProjectFileEntry_FilePathChanged);
     entry.Dependencies.InsertedItem -= DependantFiles_InsertedItem;
     entry.Dependencies.RemovedItem -= DependantFiles_RemovedItem;
 }
        private ProjectFileEntry ReadProjectFileEntryItem(ProjectItemElement element)
        {
            var entry = new ProjectFileEntry(new FilePath(this.ProjectDirectory, element.Include));

            foreach (var metadata in element.Metadata)
            {
                if (metadata.Name == "DependentUpon")
                {
                    entry.Dependencies.Add(metadata.Value);
                }
            }

            entry.ParentProject = this;
            return entry;
        }
 private void existingFileToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (var dialog = new OpenFileDialog())
     {
         if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             var directoryNode = GetCurrentDirectoryNode();
             var projectNode = directoryNode.GetProjectNode();
             var sourcePath = new FilePath(dialog.FileName);
             var newPath = new FilePath(directoryNode.FilePath, sourcePath.FileName + sourcePath.Extension);
             _extensionHost.FileService.CopyFile(sourcePath, newPath);
             var fileEntry = new ProjectFileEntry(newPath);
             projectNode.ProjectEntry.Project.ProjectFiles.Add(fileEntry);
         }
     }
 }