Beispiel #1
0
 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));
 }
Beispiel #3
0
        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]);
        }