Example #1
0
        private void AddDataSourceImage(Type type)
        {
            DataSourceAttribute attribute = (DataSourceAttribute)Attribute.GetCustomAttribute(type, typeof(DataSourceAttribute));

            if (attribute?.IconResourceName != null && !connectionImageList.Images.ContainsKey(type.FullName))
            {
                connectionImageList.Images.Add(type.FullName, attribute.GetIcon(type.Assembly));
            }
        }
Example #2
0
        private void ConnectionContextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e)
        {
            try
            {
                BindableTreeNode    connectionNode      = ClientUtility.GetContextMenuTreeviewNode(dataSourceTreeView, sender);
                Type                connectionType      = connectionNode.DataSource.GetType();
                ConnectionAttribute connectionAttribute = (ConnectionAttribute)Attribute.GetCustomAttribute(connectionType, typeof(ConnectionAttribute));
                IConnection         connection          = (IConnection)connectionNode.DataSource;
                testConnectionToolStripMenuItem.Visible          = connection is IAvailableProvider;
                openConnectionInBrowserToolStripMenuItem.Visible = connection is IUrlAddressable;
                openConnectionInBrowserToolStripMenuItem.Enabled = connection is IUrlAddressable && ((IUrlAddressable)connection).Url != default(Uri);
                testOpenToolStripSeparator.Visible = connection is IAvailableProvider || connection is IUrlAddressable;
                ConnectionCache cache = new ConnectionCache((IConnection)connectionNode.DataSource);
                clearCacheToolStripMenuItem.Enabled = cache.Count > 0;

                addDataSourceToolStripMenuItem.DropDownItems.Clear();
                List <Type> dataSourceTypes = CoreUtility.GetInterfaceImplementorsWithAttribute(typeof(IDataSource), typeof(DataSourceAttribute));

                foreach (Type dataSourceType in dataSourceTypes)
                {
                    DataSourceAttribute dataSourceAttribute = (DataSourceAttribute)Attribute.GetCustomAttribute(dataSourceType, typeof(DataSourceAttribute));

                    if (connectionType == dataSourceAttribute.ConnectionType || connectionType.IsSubclassOf(dataSourceAttribute.ConnectionType))
                    {
                        ToolStripMenuItem dataSourceToolStripMenuItem = new ToolStripMenuItem()
                        {
                            ImageScaling = ToolStripItemImageScaling.None,
                            Tag          = dataSourceType
                        };
                        dataSourceToolStripMenuItem.Click      += AddDataSourceToolStripMenuItem_Click;
                        dataSourceToolStripMenuItem.Text        = dataSourceAttribute.DisplayName;
                        dataSourceToolStripMenuItem.ToolTipText = dataSourceAttribute.Description;
                        dataSourceToolStripMenuItem.Image       = dataSourceAttribute.GetIcon(dataSourceType.Assembly);
                        addDataSourceToolStripMenuItem.DropDownItems.Add(dataSourceToolStripMenuItem);
                    }
                }

                addDataSourceToolStripMenuItem.Enabled = addDataSourceToolStripMenuItem.DropDownItems.Count > 0;
            }
            catch (Exception ex)
            {
                ApplicationState.Default.RaiseNotification(new NotificationEventArgs(NotificationType.Error, ex.Message, ex));
            }
        }