protected void ReBrandActivateAs(string newTextForActivate, RDMPConcept newConcept, OverlayKind overlayKind = OverlayKind.None) { //Activate is currently branded edit by parent lets tailor that ActivateCommandMenuItem.Image = _activator.CoreIconProvider.GetImage(newConcept, overlayKind); ActivateCommandMenuItem.Text = newTextForActivate; }
/// <summary> /// Adds the given <paramref name="cmd"/> to the menu bar at the top of the control /// </summary> /// <param name="cmd"></param> /// <param name="overrideCommandName"></param> /// <param name="overrideImage"></param> /// <param name="overlayKind"></param> protected void Add(IAtomicCommand cmd, string overrideCommandName, RDMPConcept overrideImage, OverlayKind overlayKind = OverlayKind.None) { Add(cmd, overrideCommandName, _activator.CoreIconProvider.GetImage(overrideImage, overlayKind)); }
protected virtual Bitmap GetImageImpl(object concept, OverlayKind kind = OverlayKind.None) { if (concept == null) { return(null); } //the only valid strings are "Catalogue" etc where the value exactly maps to an RDMPConcept if (concept is string) { RDMPConcept result; if (RDMPConcept.TryParse((string)concept, true, out result)) { concept = result; } else { return(null); //it's a string but an unhandled one so give them null back } } //if they already passed in an image just return it back (optionally with the overlay). if (concept is Bitmap) { return(GetImage((Bitmap)concept, kind)); } //if there are plugins injecting random objects into RDMP tree views etc then we need the ability to provide icons for them if (_pluginIconProviders != null) { foreach (IIconProvider plugin in _pluginIconProviders) { var img = plugin.GetImage(concept, kind); if (img != null) { return(img); } } } if (concept is RDMPCollection) { return(GetImageImpl(GetConceptForCollection((RDMPCollection)concept), kind)); } if (concept is RDMPConcept) { return(GetImageImpl(ImagesCollection[(RDMPConcept)concept], kind)); } if (concept is LinkedColumnInfoNode) { return(GetImageImpl(ImagesCollection[RDMPConcept.ColumnInfo], OverlayKind.Link)); } if (concept is CatalogueUsedByLoadMetadataNode usedByLmd) { return(GetImageImpl(usedByLmd.ObjectBeingUsed, OverlayKind.Link)); } if (concept is DataAccessCredentialUsageNode) { return(GetImageImpl(ImagesCollection[RDMPConcept.DataAccessCredentials], OverlayKind.Link)); } if (ConceptIs(typeof(IFilter), concept)) { return(GetImageImpl(RDMPConcept.Filter, kind)); } if (ConceptIs(typeof(ISqlParameter), concept)) { return(GetImageImpl(RDMPConcept.ParametersNode, kind)); } if (ConceptIs(typeof(IContainer), concept)) { return(GetImageImpl(RDMPConcept.FilterContainer, kind)); } if (ConceptIs(typeof(JoinableCohortAggregateConfiguration), concept)) { return(GetImageImpl(RDMPConcept.PatientIndexTable)); } if (ConceptIs(typeof(JoinableCohortAggregateConfigurationUse), concept)) { return(GetImageImpl(RDMPConcept.PatientIndexTable, OverlayKind.Link)); } if (concept is PermissionWindowUsedByCacheProgressNode) { return(GetImageImpl(((PermissionWindowUsedByCacheProgressNode)concept).GetImageObject(), OverlayKind.Link)); } if (ConceptIs(typeof(DashboardObjectUse), concept)) { return(GetImageImpl(RDMPConcept.DashboardControl, OverlayKind.Link)); } if (concept is DatabaseType) { return(_databaseTypeIconProvider.GetImage((DatabaseType)concept)); } if (concept is ArbitraryFolderNode) { return(GetImageImpl(RDMPConcept.CatalogueFolder, kind)); } if (concept is DiscoveredDatabase) { return(GetImageImpl(RDMPConcept.Database)); } if (concept is DiscoveredTable) { return(GetImageImpl(RDMPConcept.TableInfo)); } if (concept is DiscoveredColumn) { return(GetImageImpl(RDMPConcept.ColumnInfo)); } if (concept is FlatFileToLoad) { return(GetImageImpl(RDMPConcept.File)); } if (concept is CohortCreationRequest) { return(GetImageImpl(RDMPConcept.ExtractableCohort, OverlayKind.Add)); } //This is special case when asking for icon for the Type, since the node itself is an IMasqueradeAs if (ReferenceEquals(concept, typeof(PipelineCompatibleWithUseCaseNode))) { return(GetImageImpl(RDMPConcept.Pipeline)); } foreach (var stateBasedIconProvider in StateBasedIconProviders) { var bmp = stateBasedIconProvider.GetImageIfSupportedObject(concept); if (bmp != null) { return(GetImageImpl(bmp, kind)); } } string conceptTypeName = concept.GetType().Name; RDMPConcept t; //It is a System.Type, get the name and see if there's a corresponding image if (concept is Type) { if (Enum.TryParse(((Type)concept).Name, out t)) { return(GetImageImpl(ImagesCollection[t], kind)); } } //It is an instance of something, get the System.Type and see if there's a corresponding image if (Enum.TryParse(conceptTypeName, out t)) { return(GetImageImpl(ImagesCollection[t], kind)); } //if the object is masquerading as something else if (concept is IMasqueradeAs) { //get what it's masquerading as var masqueradingAs = ((IMasqueradeAs)concept).MasqueradingAs(); //provided we don't have a circular reference here! if (!(masqueradingAs is IMasqueradeAs)) { return(GetImageImpl(masqueradingAs, kind)); //get an image for what your pretending to be } } return(ImagesCollection[RDMPConcept.NoIconAvailable]); }