public override void Execute(object parameter)
        {
            FeatureLayer fl = Layer as FeatureLayer;

            if (fl != null)
            {
                navigateToUrl(Utility.CreateUriWithProxy(fl.ProxyUrl, fl.Url));
                return;
            }

            ArcGISDynamicMapServiceLayer dynLayer = Layer as ArcGISDynamicMapServiceLayer;

            if (dynLayer != null)
            {
                navigateToUrl(Utility.CreateUriWithProxy(dynLayer.ProxyURL, dynLayer.Url));
                return;
            }

            ArcGISImageServiceLayer imageLayer = Layer as ArcGISImageServiceLayer;

            if (imageLayer != null)
            {
                navigateToUrl(Utility.CreateUriWithProxy(imageLayer.ProxyURL, imageLayer.Url));
                return;
            }

            ArcGISTiledMapServiceLayer tiledLayer = Layer as ArcGISTiledMapServiceLayer;

            if (tiledLayer != null)
            {
                navigateToUrl(Utility.CreateUriWithProxy(tiledLayer.ProxyURL, tiledLayer.Url));
                return;
            }

            GeoRssLayer geoRssLayer = Layer as GeoRssLayer;

            if (geoRssLayer != null)
            {
                if (geoRssLayer.Source != null)
                {
                    navigateToUrl(geoRssLayer.Source.AbsoluteUri);
                }
                return;
            }

            WmsLayer wmsLayer = Layer as WmsLayer;

            if (wmsLayer != null)
            {
                string url = wmsLayer.Url;
                if (!string.IsNullOrEmpty(url))
                {
                    if (!url.Contains("?"))
                    {
                        url += "?";
                    }
                    else
                    {
                        url += "&";
                    }
                    if (url.IndexOf("request=GetCapabilities", StringComparison.OrdinalIgnoreCase) < 0)
                    {
                        url += "request=GetCapabilities";
                    }
                    if (!string.IsNullOrEmpty(wmsLayer.Version) && url.IndexOf("version=", StringComparison.OrdinalIgnoreCase) < 0)
                    {
                        url += "&version=" + wmsLayer.Version;
                    }
                    navigateToUrl(Utility.CreateUriWithProxy(wmsLayer.ProxyUrl, url));
                }
                return;
            }

            OpenStreetMapLayer osmLayer = Layer as OpenStreetMapLayer;

            if (osmLayer != null)
            {
                navigateToUrl("http://www.openstreetmap.org");
                return;
            }

            ESRI.ArcGIS.Client.Bing.TileLayer bingLayer = Layer as ESRI.ArcGIS.Client.Bing.TileLayer;
            if (bingLayer != null)
            {
                navigateToUrl("http://www.bing.com/maps/");
                return;
            }

            ICustomGraphicsLayer customGraphicsLayer = Layer as ICustomGraphicsLayer;

            if (customGraphicsLayer != null && customGraphicsLayer.SupportsNavigateToServiceDetailsUrl())
            {
                Uri uri = customGraphicsLayer.GetServiceDetailsUrl();
                if (uri != null)
                {
                    navigateToUrl(uri.AbsoluteUri);
                }
                return;
            }
        }