/// <summary> /// Launch the Project Properties Editor (properties pages) /// </summary> /// <returns>If we succeeded or not</returns> public override bool EditComponent(ITypeDescriptorContext context, object component) { if (component is ProjectNodeProperties) { IVsPropertyPageFrame propertyPageFrame = (IVsPropertyPageFrame)serviceProvider.GetService((typeof(SVsPropertyPageFrame))); int hr = propertyPageFrame.ShowFrame(Guid.Empty); if (ErrorHandler.Succeeded(hr)) { return(true); } else { propertyPageFrame.ReportError(hr); } } return(false); }
/// <summary> /// Apply Changes on project node. /// </summary> /// <returns>E_INVALIDARG if internal ProjectMgr is null, otherwise applies changes and return S_OK.</returns> protected override int ApplyChanges() { if (this.ProjectMgr == null) { return(VSConstants.E_INVALIDARG); } IVsPropertyPageFrame propertyPageFrame = (IVsPropertyPageFrame)this.ProjectMgr.Site.GetService((typeof(SVsPropertyPageFrame))); Assumes.Present(propertyPageFrame); bool reloadRequired = this.ProjectMgr.TargetFrameworkMoniker != this.targetFrameworkMoniker; this.ProjectMgr.SetProjectProperty(nameof(AssemblyName), this.assemblyName); this.ProjectMgr.SetProjectProperty(nameof(OutputType), this.outputType.ToString()); this.ProjectMgr.SetProjectProperty(nameof(RootNamespace), this.rootNamespace); this.ProjectMgr.SetProjectProperty(nameof(StartupObject), this.startupObject); this.ProjectMgr.SetProjectProperty(nameof(ApplicationIcon), this.applicationIcon); this.ProjectMgr.SetProjectProperty(nameof(Dialect), this.dialect.ToString()); this.ProjectMgr.SetProjectProperty(nameof(VulcanCompatibleResources), this.vulcanCompatibleResources.ToString()); this.ProjectMgr.SetProjectProperty(nameof(NoWin32Manifest), this.noWin32Manifest.ToString()); // reset properties for projectnode ((XSharpProjectNode)this.ProjectMgr).OutputFile = null; ((XSharpProjectNode)this.ProjectMgr).RootNameSpace = this.rootNamespace; if (reloadRequired) { if (MessageBox.Show(SR.GetString(SR.ReloadPromptOnTargetFxChanged), SR.GetString(SR.ReloadPromptOnTargetFxChangedCaption), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { this.ProjectMgr.TargetFrameworkMoniker = this.targetFrameworkMoniker; } } this.IsDirty = false; if (reloadRequired) { // This prevents the property page from displaying bad data from the zombied (unloaded) project propertyPageFrame.HideFrame(); propertyPageFrame.ShowFrame(this.GetType().GUID); } return(VSConstants.S_OK); }
/// <summary> /// Apply Changes on project node. /// </summary> /// <returns>E_INVALIDARG if internal ProjectMgr is null, otherwise applies changes and return S_OK.</returns> protected override int ApplyChanges() { if (this.ProjectMgr == null) { return(VSConstants.E_INVALIDARG); } IVsPropertyPageFrame propertyPageFrame = (IVsPropertyPageFrame)this.ProjectMgr.Site.GetService((typeof(SVsPropertyPageFrame))); bool reloadRequired = this.ProjectMgr.TargetFrameworkMoniker != this.targetFrameworkMoniker; this.ProjectMgr.SetProjectProperty("AssemblyName", this.assemblyName); this.ProjectMgr.SetProjectProperty("OutputType", this.outputType.ToString()); this.ProjectMgr.SetProjectProperty("RootNamespace", this.defaultNamespace); this.ProjectMgr.SetProjectProperty("StartupObject", this.startupObject); this.ProjectMgr.SetProjectProperty("ApplicationIcon", this.applicationIcon); this.ProjectMgr.SetProjectProperty("URL", "URL"); this.ProjectMgr.SetProjectProperty("WebSiteType", "WebSiteType"); if (reloadRequired) { if (MessageBox.Show(SR.GetString(SR.ReloadPromptOnTargetFxChanged), SR.GetString(SR.ReloadPromptOnTargetFxChangedCaption), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { this.ProjectMgr.TargetFrameworkMoniker = this.targetFrameworkMoniker; } } this.IsDirty = false; if (reloadRequired) { // This prevents the property page from displaying bad data from the zombied (unloaded) project propertyPageFrame.HideFrame(); propertyPageFrame.ShowFrame(this.GetType().GUID); } return(VSConstants.S_OK); }
/// <summary> /// Apply Changes on project node. /// </summary> /// <returns>E_INVALIDARG if internal ProjectManager is null, otherwise applies changes and return S_OK.</returns> protected override int ApplyChanges() { if (this.ProjectManager == null) { return(VSConstants.E_INVALIDARG); } IVsPropertyPageFrame propertyPageFrame = (IVsPropertyPageFrame)this.ProjectManager.Site.GetService((typeof(SVsPropertyPageFrame))); bool reloadRequired = this.ProjectManager.TargetFrameworkMoniker != this.targetFrameworkMoniker; this.ProjectManager.SetProjectProperty(GeneralPropertyPageTag.AssemblyName.ToString(), _PersistStorageType.PST_PROJECT_FILE, this.assemblyName); this.ProjectManager.SetProjectProperty(GeneralPropertyPageTag.OutputType.ToString(), _PersistStorageType.PST_PROJECT_FILE, this.outputType.ToString()); this.ProjectManager.SetProjectProperty(GeneralPropertyPageTag.RootNamespace.ToString(), _PersistStorageType.PST_PROJECT_FILE, this.defaultNamespace); this.ProjectManager.SetProjectProperty(GeneralPropertyPageTag.StartupObject.ToString(), _PersistStorageType.PST_PROJECT_FILE, this.startupObject); this.ProjectManager.SetProjectProperty(GeneralPropertyPageTag.ApplicationIcon.ToString(), _PersistStorageType.PST_PROJECT_FILE, this.applicationIcon); if (reloadRequired) { // Make sure the user understands that reloading the project is necessary, but don't interrupt unit tests. if (UIThread.IsUnitTest || MessageBox.Show(Resources.GetString(Resources.ReloadPromptOnTargetFxChanged), Resources.GetString(Resources.ReloadPromptOnTargetFxChangedCaption), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { this.ProjectManager.TargetFrameworkMoniker = this.targetFrameworkMoniker; } } this.IsDirty = false; if (reloadRequired && propertyPageFrame != null) { // This prevents the property page from displaying bad data from the zombied (unloaded) project propertyPageFrame.HideFrame(); propertyPageFrame.ShowFrame(this.GetType().GUID); } return(VSConstants.S_OK); }