| Index: obsolete/Microsoft.VisualStudio.Project/Automation/OAFileItem.cs
|
| diff --git a/obsolete/Microsoft.VisualStudio.Project/Automation/OAFileItem.cs b/obsolete/Microsoft.VisualStudio.Project/Automation/OAFileItem.cs
|
| deleted file mode 100644
|
| index bdf3dc77b92037cf0b35c88b67c5551e892ac1ed..0000000000000000000000000000000000000000
|
| --- a/obsolete/Microsoft.VisualStudio.Project/Automation/OAFileItem.cs
|
| +++ /dev/null
|
| @@ -1,364 +0,0 @@
|
| -/// Copyright (c) Microsoft Corporation. All rights reserved.
|
| -
|
| -using System;
|
| -using System.Diagnostics;
|
| -using System.Diagnostics.CodeAnalysis;
|
| -using System.Globalization;
|
| -using System.IO;
|
| -using System.Runtime.InteropServices;
|
| -using EnvDTE;
|
| -using Microsoft.VisualStudio;
|
| -using Microsoft.VisualStudio.Shell;
|
| -using Microsoft.VisualStudio.Shell.Interop;
|
| -using IServiceProvider = System.IServiceProvider;
|
| -using VSConstants = Microsoft.VisualStudio.VSConstants;
|
| -
|
| -namespace Microsoft.VisualStudio.Project.Automation
|
| -{
|
| - /// <summary>
|
| - /// Represents an automation object for a file in a project
|
| - /// </summary>
|
| - [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")]
|
| - [ComVisible(true), CLSCompliant(false)]
|
| - public class OAFileItem : OAProjectItem<FileNode>
|
| - {
|
| - #region ctors
|
| - public OAFileItem(OAProject project, FileNode node)
|
| - : base(project, node)
|
| - {
|
| - }
|
| -
|
| - #endregion
|
| -
|
| - #region overridden methods
|
| - /// <summary>
|
| - /// Returns the dirty state of the document.
|
| - /// </summary>
|
| - /// <exception cref="InvalidOperationException">Is thrown if the project is closed or it the service provider attached to the project is invalid.</exception>
|
| - /// <exception cref="ComException">Is thrown if the dirty state cannot be retrived.</exception>
|
| - public override bool IsDirty
|
| - {
|
| - get
|
| - {
|
| - if(this.Node == null || this.Node.ProjectMgr == null || this.Node.ProjectMgr.IsClosed || this.Node.ProjectMgr.Site == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| - bool isDirty = false;
|
| -
|
| - using(AutomationScope scope = new AutomationScope(this.Node.ProjectMgr.Site))
|
| - {
|
| - DocumentManager manager = this.Node.GetDocumentManager();
|
| -
|
| - if(manager == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - bool isOpen, isOpenedByUs;
|
| - uint docCookie;
|
| - IVsPersistDocData persistDocData;
|
| - manager.GetDocInfo(out isOpen, out isDirty, out isOpenedByUs, out docCookie, out persistDocData);
|
| - }
|
| - return isDirty;
|
| - }
|
| -
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Gets the Document associated with the item, if one exists.
|
| - /// </summary>
|
| - public override EnvDTE.Document Document
|
| - {
|
| - get
|
| - {
|
| - if(this.Node == null || this.Node.ProjectMgr == null || this.Node.ProjectMgr.IsClosed || this.Node.ProjectMgr.Site == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - EnvDTE.Document document = null;
|
| -
|
| - using(AutomationScope scope = new AutomationScope(this.Node.ProjectMgr.Site))
|
| - {
|
| - IVsUIHierarchy hier;
|
| - uint itemid;
|
| -
|
| - IVsWindowFrame windowFrame;
|
| -
|
| - VsShellUtilities.IsDocumentOpen(this.Node.ProjectMgr.Site, this.Node.Url, VSConstants.LOGVIEWID_Any, out hier, out itemid, out windowFrame);
|
| -
|
| - if(windowFrame != null)
|
| - {
|
| - object var;
|
| - ErrorHandler.ThrowOnFailure(windowFrame.GetProperty((int)__VSFPROPID.VSFPROPID_DocCookie, out var));
|
| - object documentAsObject;
|
| - ErrorHandler.ThrowOnFailure(scope.Extensibility.GetDocumentFromDocCookie((int)var, out documentAsObject));
|
| - if(documentAsObject == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| - else
|
| - {
|
| - document = (Document)documentAsObject;
|
| - }
|
| - }
|
| -
|
| - }
|
| -
|
| - return document;
|
| - }
|
| - }
|
| -
|
| -
|
| - /// <summary>
|
| - /// Opens the file item in the specified view.
|
| - /// </summary>
|
| - /// <param name="ViewKind">Specifies the view kind in which to open the item (file)</param>
|
| - /// <returns>Window object</returns>
|
| - public override EnvDTE.Window Open(string viewKind)
|
| - {
|
| - if(this.Node == null || this.Node.ProjectMgr == null || this.Node.ProjectMgr.IsClosed || this.Node.ProjectMgr.Site == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - IVsWindowFrame windowFrame = null;
|
| - IntPtr docData = IntPtr.Zero;
|
| -
|
| - using(AutomationScope scope = new AutomationScope(this.Node.ProjectMgr.Site))
|
| - {
|
| - try
|
| - {
|
| - // Validate input params
|
| - Guid logicalViewGuid = VSConstants.LOGVIEWID_Primary;
|
| - try
|
| - {
|
| - if(!(String.IsNullOrEmpty(viewKind)))
|
| - {
|
| - logicalViewGuid = new Guid(viewKind);
|
| - }
|
| - }
|
| - catch(FormatException)
|
| - {
|
| - // Not a valid guid
|
| - throw new ArgumentException(SR.GetString(SR.ParameterMustBeAValidGuid, CultureInfo.CurrentUICulture), "viewKind");
|
| - }
|
| -
|
| - uint itemid;
|
| - IVsHierarchy ivsHierarchy;
|
| - uint docCookie;
|
| - IVsRunningDocumentTable rdt = this.Node.ProjectMgr.Site.GetService(typeof(SVsRunningDocumentTable)) as IVsRunningDocumentTable;
|
| - Debug.Assert(rdt != null, " Could not get running document table from the services exposed by this project");
|
| - if(rdt == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - ErrorHandler.ThrowOnFailure(rdt.FindAndLockDocument((uint)_VSRDTFLAGS.RDT_NoLock, this.Node.Url, out ivsHierarchy, out itemid, out docData, out docCookie));
|
| -
|
| - // Open the file using the IVsProject3 interface
|
| - ErrorHandler.ThrowOnFailure(this.Node.ProjectMgr.OpenItem(this.Node.ID, ref logicalViewGuid, docData, out windowFrame));
|
| -
|
| - }
|
| - finally
|
| - {
|
| - if(docData != IntPtr.Zero)
|
| - {
|
| - Marshal.Release(docData);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Get the automation object and return it
|
| - return ((windowFrame != null) ? VsShellUtilities.GetWindowObject(windowFrame) : null);
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Saves the project item.
|
| - /// </summary>
|
| - /// <param name="fileName">The name with which to save the project or project item.</param>
|
| - /// <exception cref="InvalidOperationException">Is thrown if the save operation failes.</exception>
|
| - /// <exception cref="ArgumentNullException">Is thrown if fileName is null.</exception>
|
| - public override void Save(string fileName)
|
| - {
|
| - this.DoSave(false, fileName);
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Saves the project item.
|
| - /// </summary>
|
| - /// <param name="fileName">The file name with which to save the solution, project, or project item. If the file exists, it is overwritten</param>
|
| - /// <returns>true if the rename was successful. False if Save as failes</returns>
|
| - public override bool SaveAs(string fileName)
|
| - {
|
| - try
|
| - {
|
| - this.DoSave(true, fileName);
|
| - }
|
| - catch(InvalidOperationException)
|
| - {
|
| - return false;
|
| - }
|
| - catch(COMException)
|
| - {
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Gets a value indicating whether the project item is open in a particular view type.
|
| - /// </summary>
|
| - /// <param name="viewKind">A Constants.vsViewKind* indicating the type of view to check./param>
|
| - /// <returns>A Boolean value indicating true if the project is open in the given view type; false if not. </returns>
|
| - public override bool get_IsOpen(string viewKind)
|
| - {
|
| - if(this.Node == null || this.Node.ProjectMgr == null || this.Node.ProjectMgr.IsClosed || this.Node.ProjectMgr.Site == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - // Validate input params
|
| - Guid logicalViewGuid = VSConstants.LOGVIEWID_Primary;
|
| - try
|
| - {
|
| - if(!(String.IsNullOrEmpty(viewKind)))
|
| - {
|
| - logicalViewGuid = new Guid(viewKind);
|
| - }
|
| - }
|
| - catch(FormatException)
|
| - {
|
| - // Not a valid guid
|
| - throw new ArgumentException(SR.GetString(SR.ParameterMustBeAValidGuid, CultureInfo.CurrentUICulture), "viewKind");
|
| - }
|
| -
|
| - bool isOpen = false;
|
| -
|
| - using(AutomationScope scope = new AutomationScope(this.Node.ProjectMgr.Site))
|
| - {
|
| - IVsUIHierarchy hier;
|
| - uint itemid;
|
| -
|
| - IVsWindowFrame windowFrame;
|
| -
|
| - isOpen = VsShellUtilities.IsDocumentOpen(this.Node.ProjectMgr.Site, this.Node.Url, logicalViewGuid, out hier, out itemid, out windowFrame);
|
| -
|
| - }
|
| -
|
| - return isOpen;
|
| - }
|
| -
|
| - /// <summary>
|
| - /// Gets the ProjectItems for the object.
|
| - /// </summary>
|
| - public override ProjectItems ProjectItems
|
| - {
|
| - get
|
| - {
|
| - if(this.Project.Project.CanFileNodesHaveChilds)
|
| - return new OAProjectItems(this.Project, this.Node);
|
| - else
|
| - return base.ProjectItems;
|
| - }
|
| - }
|
| -
|
| -
|
| - #endregion
|
| -
|
| - #region helpers
|
| - /// <summary>
|
| - /// Saves or Save As the file
|
| - /// </summary>
|
| - /// <param name="isCalledFromSaveAs">Flag determining which Save method called , the SaveAs or the Save.</param>
|
| - /// <param name="fileName">The name of the project file.</param>
|
| - private void DoSave(bool isCalledFromSaveAs, string fileName)
|
| - {
|
| - if(fileName == null)
|
| - {
|
| - throw new ArgumentNullException("fileName");
|
| - }
|
| -
|
| - if(this.Node == null || this.Node.ProjectMgr == null || this.Node.ProjectMgr.IsClosed || this.Node.ProjectMgr.Site == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - using(AutomationScope scope = new AutomationScope(this.Node.ProjectMgr.Site))
|
| - {
|
| - IntPtr docData = IntPtr.Zero;
|
| -
|
| - try
|
| - {
|
| - IVsRunningDocumentTable rdt = this.Node.ProjectMgr.Site.GetService(typeof(SVsRunningDocumentTable)) as IVsRunningDocumentTable;
|
| - Debug.Assert(rdt != null, " Could not get running document table from the services exposed by this project");
|
| - if(rdt == null)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - // First we see if someone else has opened the requested view of the file.
|
| - uint itemid;
|
| - IVsHierarchy ivsHierarchy;
|
| - uint docCookie;
|
| - int canceled;
|
| - string url = this.Node.Url;
|
| -
|
| - ErrorHandler.ThrowOnFailure(rdt.FindAndLockDocument((uint)_VSRDTFLAGS.RDT_NoLock, url, out ivsHierarchy, out itemid, out docData, out docCookie));
|
| -
|
| - // If an empty file name is passed in for Save then make the file name the project name.
|
| - if(!isCalledFromSaveAs && fileName.Length == 0)
|
| - {
|
| - ErrorHandler.ThrowOnFailure(this.Node.ProjectMgr.SaveItem(VSSAVEFLAGS.VSSAVE_SilentSave, url, this.Node.ID, docData, out canceled));
|
| - }
|
| - else
|
| - {
|
| - Utilities.ValidateFileName(this.Node.ProjectMgr.Site, fileName);
|
| -
|
| - // Compute the fullpath from the directory of the existing Url.
|
| - string fullPath = fileName;
|
| - if(!Path.IsPathRooted(fileName))
|
| - {
|
| - string directory = Path.GetDirectoryName(url);
|
| - fullPath = Path.Combine(directory, fileName);
|
| - }
|
| -
|
| - if(!isCalledFromSaveAs)
|
| - {
|
| - if(!NativeMethods.IsSamePath(this.Node.Url, fullPath))
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| -
|
| - ErrorHandler.ThrowOnFailure(this.Node.ProjectMgr.SaveItem(VSSAVEFLAGS.VSSAVE_SilentSave, fullPath, this.Node.ID, docData, out canceled));
|
| - }
|
| - else
|
| - {
|
| - ErrorHandler.ThrowOnFailure(this.Node.ProjectMgr.SaveItem(VSSAVEFLAGS.VSSAVE_SilentSave, fullPath, this.Node.ID, docData, out canceled));
|
| - }
|
| - }
|
| -
|
| - if(canceled == 1)
|
| - {
|
| - throw new InvalidOperationException();
|
| - }
|
| - }
|
| - catch(COMException e)
|
| - {
|
| - throw new InvalidOperationException(e.Message);
|
| - }
|
| - finally
|
| - {
|
| - if(docData != IntPtr.Zero)
|
| - {
|
| - Marshal.Release(docData);
|
| - }
|
| - }
|
| - }
|
| -
|
| - }
|
| - #endregion
|
| -
|
| - }
|
| -}
|
|
|