internal JavaProjectConfig(JavaProjectNode project, string configuration, string platform)
     : base(project, configuration, platform)
 {
     Contract.Requires(project != null);
     Contract.Requires(!string.IsNullOrEmpty(configuration));
     Contract.Requires(!string.IsNullOrEmpty(platform));
 }
 protected override ProjectNode CreateProject()
 {
     JavaProjectNode node = new JavaProjectNode(Package);
     IOleServiceProvider serviceProvider = base.Package.GetService<IOleServiceProvider>();
     node.SetSite(serviceProvider);
     return node;
 }
 public JavaConfigProvider(JavaProjectNode manager)
     : base(manager)
 {
 }
 public JavaReferenceContainerNode(JavaProjectNode root)
     : base(root)
 {
     Contract.Requires<ArgumentNullException>(root != null, "root");
 }
        void IPropertyPage.SetObjects(uint cObjects, object[] ppunk)
        {
            if (cObjects == 0)
            {
                if (_project != null)
                {
                    //_project.CurrentOutputTypeChanging -= new PropertyChangingEventHandler( HandleOutputTypeChanging );
                    _project = null;
                }
                return;
            }

            if (ppunk[0] is ProjectConfig)
            {
                List<ProjectConfig> configs = new List<ProjectConfig>();

                for (int i = 0; i < cObjects; i++)
                {
                    ProjectConfig config = (ProjectConfig)ppunk[i];
                    if (_project == null)
                    {
                        _project = config.ProjectManager as JavaProjectNode;
                        //_project.CurrentOutputTypeChanging += new PropertyChangingEventHandler( HandleOutputTypeChanging );
                    }

                    configs.Add(config);
                }

                _projectConfigs = configs.ToArray();
            }
            else if (ppunk[0] is NodeProperties)
            {
                if (_project == null)
                {
                    _project = (ppunk[0] as NodeProperties).Node.ProjectManager as JavaProjectNode;
                    //_project.CurrentOutputTypeChanging += new PropertyChangingEventHandler( HandleOutputTypeChanging );
                }

                Dictionary<string, ProjectConfig> configsMap = new Dictionary<string, ProjectConfig>();

                for (int i = 0; i < cObjects; i++)
                {
                    NodeProperties property = (NodeProperties)ppunk[i];
                    IVsCfgProvider provider;
                    ErrorHandler.ThrowOnFailure(property.Node.ProjectManager.GetCfgProvider(out provider));
                    uint[] expected = new uint[1];
                    ErrorHandler.ThrowOnFailure(provider.GetCfgs(0, null, expected, null));
                    if (expected[0] > 0)
                    {
                        ProjectConfig[] configs = new ProjectConfig[expected[0]];
                        uint[] actual = new uint[1];
                        int hr = provider.GetCfgs(expected[0], configs, actual, null);
                        if (hr != VSConstants.S_OK)
                            Marshal.ThrowExceptionForHR(hr);

                        foreach (ProjectConfig config in configs)
                        {
                            string key = string.Format("{0}|{1}", config.ConfigName, config.Platform);
                            if (!configsMap.ContainsKey(key))
                                configsMap.Add(key, config);
                        }
                    }
                }

                if (configsMap.Count > 0)
                {
                    if (_projectConfigs == null)
                        _projectConfigs = new ProjectConfig[configsMap.Keys.Count];

                    configsMap.Values.CopyTo(_projectConfigs, 0);
                }
            }

            if (_active && _project != null)
            {
                BindProperties();
                IsDirty = false;
            }
        }
        void IPropertyPage.SetObjects(uint cObjects, object[] ppunk)
        {
            if (cObjects == 0)
            {
                if (_project != null)
                {
                    //_project.CurrentOutputTypeChanging -= new PropertyChangingEventHandler( HandleOutputTypeChanging );
                    _project = null;
                }
                return;
            }

            if (ppunk[0] is ProjectConfig)
            {
                List <ProjectConfig> configs = new List <ProjectConfig>();

                for (int i = 0; i < cObjects; i++)
                {
                    ProjectConfig config = (ProjectConfig)ppunk[i];
                    if (_project == null)
                    {
                        _project = config.ProjectManager as JavaProjectNode;
                        //_project.CurrentOutputTypeChanging += new PropertyChangingEventHandler( HandleOutputTypeChanging );
                    }

                    configs.Add(config);
                }

                _projectConfigs = configs.ToArray();
            }
            else if (ppunk[0] is NodeProperties)
            {
                if (_project == null)
                {
                    _project = (ppunk[0] as NodeProperties).Node.ProjectManager as JavaProjectNode;
                    //_project.CurrentOutputTypeChanging += new PropertyChangingEventHandler( HandleOutputTypeChanging );
                }

                Dictionary <string, ProjectConfig> configsMap = new Dictionary <string, ProjectConfig>();

                for (int i = 0; i < cObjects; i++)
                {
                    NodeProperties property = (NodeProperties)ppunk[i];
                    IVsCfgProvider provider;
                    ErrorHandler.ThrowOnFailure(property.Node.ProjectManager.GetCfgProvider(out provider));
                    uint[] expected = new uint[1];
                    ErrorHandler.ThrowOnFailure(provider.GetCfgs(0, null, expected, null));
                    if (expected[0] > 0)
                    {
                        ProjectConfig[] configs = new ProjectConfig[expected[0]];
                        uint[]          actual  = new uint[1];
                        int             hr      = provider.GetCfgs(expected[0], configs, actual, null);
                        if (hr != VSConstants.S_OK)
                        {
                            Marshal.ThrowExceptionForHR(hr);
                        }

                        foreach (ProjectConfig config in configs)
                        {
                            string key = string.Format("{0}|{1}", config.ConfigName, config.Platform);
                            if (!configsMap.ContainsKey(key))
                            {
                                configsMap.Add(key, config);
                            }
                        }
                    }
                }

                if (configsMap.Count > 0)
                {
                    if (_projectConfigs == null)
                    {
                        _projectConfigs = new ProjectConfig[configsMap.Keys.Count];
                    }

                    configsMap.Values.CopyTo(_projectConfigs, 0);
                }
            }

            if (_active && _project != null)
            {
                BindProperties();
                IsDirty = false;
            }
        }