コード例 #1
0
        private void UpdatePageFor(IssueRepositoryConnector connector)
        {
            configPagePanel.Controls.Clear();

            bool needsCurrentSettings = false;

            _configPage = GetConfigurationPageFor(connector, ref needsCurrentSettings);

            if (_connectorPageControlMap == null)
            {
                _connectorPageControlMap = new Dictionary <string, Control>();
            }

            Control newControl = null;

            if (!_connectorPageControlMap.TryGetValue(connector.Name, out newControl))
            {
                newControl      = GetControlFor(_configPage);
                newControl.Dock = DockStyle.Fill;
                _connectorPageControlMap.Add(connector.Name, newControl);
            }

            // setup config page
            if (_configPage != null)
            {
                _configPage.OnPageEvent += new EventHandler <ConfigPageEventArgs>(_configPage_OnPageEvent);
            }

            configPagePanel.Controls.Add(newControl);

            if (_configPage != null && needsCurrentSettings)
            {
                BeginInvoke((DoSomething) delegate()
                {
                    IssueRepositorySettings currentSettings = CurrentSolutionSettings;
                    if (currentSettings != null &&
                        string.Equals(currentSettings.ConnectorName, connector.Name))
                    {
                        _configPage.Settings = currentSettings;
                    }
                });
            }
        }
コード例 #2
0
        private IssueRepositoryConfigurationPage GetConfigurationPageFor(IssueRepositoryConnector connector, ref bool needsCurrentSettings)
        {
            if (connector == null)
            {
                return(null);
            }
            if (_connectorPageMap == null)
            {
                _connectorPageMap = new Dictionary <string, IssueRepositoryConfigurationPage>();
            }
            IssueRepositoryConfigurationPage configPage = null;

            if (_connectorPageMap.ContainsKey(connector.Name))
            {
                configPage = _connectorPageMap[connector.Name];
            }
            else
            {
                Exception exception = null;
                try
                {
                    // triggers connector package initialization
                    configPage = connector.ConfigurationPage;
                }
                catch (Exception exc)
                {
                    exception = exc;
                }
                if (configPage == null)
                {
                    // use a dummy configuration page in case where connector does not provide a configuration page or
                    // if an exception is thrown while initializing the connector.
                    configPage = exception == null ?
                                 new DummyIssueRepositoryConfigurationPage(string.Format("'{0}' does not provide a configuration page.", connector.Name))
                        : new DummyIssueRepositoryConfigurationPage(exception);
                }
                _connectorPageMap.Add(connector.Name, configPage);
                needsCurrentSettings = true;
            }
            return(configPage);
        }
コード例 #3
0
        private static Control GetControlFor(IssueRepositoryConfigurationPage configPage)
        {
            Control result = null;

            if (configPage != null)
            {
                IWin32Window window = configPage.Window;
                if (window != null)
                {
                    IntPtr handle = window.Handle;
                    if (handle != IntPtr.Zero)
                    {
                        result = Control.FromHandle(window.Handle);
                    }
                }
            }

            if (result == null)
            {
                result      = new Label();
                result.Text = "Don't associate current solution with an issue repository.";
            }
            return(result);
        }