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)); } }
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)); } }