Beispiel #1
0
        public override int OnElementValueChanged(uint elementid, object varValueOld, object varValueNew)
        {
            int hr = VSConstants.S_OK;

            if (elementid == VSConstants.DocumentFrame)
            {
                IVsWindowFrame pWindowFrame = varValueOld as IVsWindowFrame;

                if (pWindowFrame != null)
                {
                    object document;

                    // Get the name of the document associated with the old window frame.
                    //
                    hr = pWindowFrame.GetProperty((int)__VSFPROPID.VSFPROPID_pszMkDocument, out document);

                    if (ErrorHandler.Succeeded(hr))
                    {
                        uint         itemid;
                        IVsHierarchy hier = projMgr;

                        hr = hier.ParseCanonicalName((string)document, out itemid);

                        NemerleFileNode node = projMgr.NodeFromItemId(itemid) as NemerleFileNode;

                        if (null != node)
                        {
                            node.RunGenerator();
                        }
                    }
                }
            }

            return(hr);
        }
Beispiel #2
0
        /// <summary>
        /// Create a file node based on an msbuild item.
        /// </summary>
        /// <param name="item">The msbuild item to be analyzed</param>
        /// <returns>NemerleFileNode or FileNode</returns>
        public override FileNode CreateFileNode(ProjectElement item)
        {
            ErrorHelper.ThrowIsNull(item, "item");

            NemerleFileNode newNode = new NemerleFileNode(this, item, item.IsVirtual);

            string include = item.GetMetadata(ProjectFileConstants.Include);

            var provider = newNode.OleServiceProvider;

            provider.AddService(typeof(EnvDTE.Project), ProjectMgr.GetAutomationObject(), false);
            provider.AddService(typeof(EnvDTE.ProjectItem), newNode.ServiceCreator, false);
            provider.AddService(typeof(VSLangProj.VSProject), this.VSProject, false);

            if (!string.IsNullOrEmpty(include) && Path.GetExtension(include).Equals(".xaml", StringComparison.OrdinalIgnoreCase))
            {
                //Create a DesignerContext for the XAML designer for this file
                newNode.OleServiceProvider.AddService(typeof(DesignerContext), newNode.ServiceCreator, false);
            }

            if (newNode.IsFormSubType)
            {
                newNode.OleServiceProvider.AddService(typeof(DesignerContext), newNode.ServiceCreator, false);
            }

            if (item.ItemName == "Compile") // IsCodeFile(include) &&
                provider.AddService(typeof(SVSMDCodeDomProvider), new NemerleVSMDProvider(newNode), false);

            return newNode;
        }
 // AKhropov: In fact these 2 constructors only to restrict possible file nodes,
 //           could be simply NemerleFileCodeDomProvider(FileNode fileNode)
 internal NemerleFileNodeCodeDomProvider(NemerleFileNode fileNode)
 {
     _fileNode = fileNode;
     Init();
 }
        // AKhropov: In fact these 2 constructors only to restrict possible file nodes,
        //           could be simply NemerleFileCodeDomProvider(FileNode fileNode)

        internal NemerleFileNodeCodeDomProvider(NemerleFileNode fileNode)
        {
            _fileNode = fileNode;
            Init();
        }