예제 #1
0
        public override HResult CreateProject(string fileName, NiProjectCreateMode createMode, out INiProject project)
        {
            project = null;

            try
            {
                project = LoadProject(fileName, createMode);

                return HResult.OK;
            }
            catch (Exception ex)
            {
                return ErrorUtil.GetHResult(ex);
            }
        }
예제 #2
0
        public HResult CloseProject()
        {
            try
            {
                if (ActiveProject == null)
                {
                    return(HResult.OK);
                }

                var hr = ((INiEnv)GetService(typeof(INiEnv))).CloseAllDocuments(NiSaveAllMode.All);

                if (ErrorUtil.Failure(hr) || hr == HResult.False)
                {
                    return(hr);
                }

                if (((NiOpenDocumentManager)GetService(typeof(INiOpenDocumentManager))).HaveOpenDocuments)
                {
                    throw new InvalidOperationException(Labels.OpenDocumentsPresent);
                }

                var activeProject = ActiveProject;

                ActiveProject = null;

                ErrorUtil.ThrowOnFailure(activeProject.Close());

                if (((NiRunningDocumentTable)GetService(typeof(INiRunningDocumentTable))).HaveOpenDocuments)
                {
                    Log.Warn("There are still documents in the running document table after closing the project");
                }

                return(HResult.OK);
            }
            catch (Exception ex)
            {
                return(ErrorUtil.GetHResult(ex));
            }
        }
예제 #3
0
        private HResult OpenProject(string fileName, NiProjectCreateMode mode)
        {
            try
            {
                if (fileName == null)
                {
                    throw new ArgumentNullException("fileName");
                }

                // Find the associated factory.

                INiProjectFactory factory = null;

                string extension = Path.GetExtension(fileName);

                if (extension != null)
                {
                    Debug.Assert(extension[0] == '.' && extension.Length > 1);

                    factory = FindProjectFactory(extension.Substring(1));
                }

                if (factory == null)
                {
                    throw new ArgumentException(NeutralResources.CannotFindProjectFactory, "fileName");
                }

                // Close the existing project.

                if (ActiveProject != null)
                {
                    var activeProject = ActiveProject;
                    ActiveProject = null;
                    activeProject.Close();
                }

                // Create and load the new project.

                INiProject project;
                var        result = factory.CreateProject(
                    fileName,
                    mode,
                    out project
                    );

                if (ErrorUtil.Failure(result))
                {
                    return(result);
                }

                project.SetPropertyEx(NiHierarchyProperty.OwnerType, factory.GetType().GUID);

                ActiveProject = project;

                return(HResult.OK);
            }
            catch (Exception ex)
            {
                return(ErrorUtil.GetHResult(ex));
            }
        }
예제 #4
0
 public abstract HResult CreateProject(string fileName, NiProjectCreateMode createMode, out INiProject project);
예제 #5
0
 public abstract HResult CreateProject(string fileName, NiProjectCreateMode createMode, out INiProject project);
예제 #6
0
        public HResult CloseProject()
        {
            try
            {
                if (ActiveProject == null)
                    return HResult.OK;

                var hr = ((INiEnv)GetService(typeof(INiEnv))).CloseAllDocuments(NiSaveAllMode.All);

                if (ErrorUtil.Failure(hr) || hr == HResult.False)
                    return hr;

                if (((NiOpenDocumentManager)GetService(typeof(INiOpenDocumentManager))).HaveOpenDocuments)
                    throw new InvalidOperationException(Labels.OpenDocumentsPresent);

                var activeProject = ActiveProject;

                ActiveProject = null;

                ErrorUtil.ThrowOnFailure(activeProject.Close());

                if (((NiRunningDocumentTable)GetService(typeof(INiRunningDocumentTable))).HaveOpenDocuments)
                    Log.Warn("There are still documents in the running document table after closing the project");

                return HResult.OK;
            }
            catch (Exception ex)
            {
                return ErrorUtil.GetHResult(ex);
            }
        }
예제 #7
0
        private HResult OpenProject(string fileName, NiProjectCreateMode mode)
        {
            try
            {
                if (fileName == null)
                    throw new ArgumentNullException("fileName");

                // Find the associated factory.

                INiProjectFactory factory = null;

                string extension = Path.GetExtension(fileName);

                if (extension != null)
                {
                    Debug.Assert(extension[0] == '.' && extension.Length > 1);

                    factory = FindProjectFactory(extension.Substring(1));
                }

                if (factory == null)
                    throw new ArgumentException(NeutralResources.CannotFindProjectFactory, "fileName");

                // Close the existing project.

                if (ActiveProject != null)
                {
                    var activeProject = ActiveProject;
                    ActiveProject = null;
                    activeProject.Close();
                }

                // Create and load the new project.

                INiProject project;
                var result = factory.CreateProject(
                    fileName,
                    mode,
                    out project
                );

                if (ErrorUtil.Failure(result))
                    return result;

                project.SetPropertyEx(NiHierarchyProperty.OwnerType, factory.GetType().GUID);

                ActiveProject = project;

                return HResult.OK;
            }
            catch (Exception ex)
            {
                return ErrorUtil.GetHResult(ex);
            }
        }
예제 #8
0
        public override HResult CreateProject(string fileName, NiProjectCreateMode createMode, out INiProject project)
        {
            project = null;

            try
            {
                project = LoadProject(fileName, createMode);

                return(HResult.OK);
            }
            catch (Exception ex)
            {
                return(ErrorUtil.GetHResult(ex));
            }
        }