void okClicked(object param) { string proxy = param as string; if (proxy != SecureServicesHelper.GetProxyUrl()) { SecureServicesHelper.SetProxyUrl(proxy); } }
static void OnProxyUseChange(DependencyObject o, DependencyPropertyChangedEventArgs args) { SecureServicesLayerConfigViewModel vm = o as SecureServicesLayerConfigViewModel; ESRI.ArcGIS.Mapping.Core.LayerExtensions.SetUsesProxy(vm.layer, vm.UsesProxy); if (vm.UsesProxy) { if (vm.layer != null && ViewerApplicationControl.Instance != null && ViewerApplicationControl.Instance.ViewerApplication != null) { SecureServicesHelper.SetProxyUrl(vm.layer, SecureServicesHelper.GetProxyUrl()); } } else { SecureServicesHelper.SetProxyUrl(vm.layer, null); } }
public static void UpdateProxyUrl(string proxyUrl) { Map map = (MapApplication.Current != null) ? MapApplication.Current.Map : null; if (map == null) { return; } bool mapRequiresRefresh = false; #region Check if layers can be updated in-place List <Layer> layersForRefresh = new List <Layer>(); foreach (Layer layer in map.Layers) { if (ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetUsesProxy(layer)) { if (ProxyUrlHelper.CanChangeProxyUrl(layer)) { layersForRefresh.Add(layer); } else { mapRequiresRefresh = true; break; } } } #endregion #region Set proxy url if layers can be updated if (!mapRequiresRefresh) { foreach (Layer layer in layersForRefresh) { SecureServicesHelper.SetProxyUrl(layer, proxyUrl); } } #endregion #region Else, serialize/deserialize map, remove and re-add layers else { MapXamlWriter writer = new MapXamlWriter(true); try { string mapXaml = writer.MapToXaml(map); if (!string.IsNullOrEmpty(mapXaml)) { Map newMap = System.Windows.Markup.XamlReader.Load(mapXaml) as Map; if (newMap != null && newMap.Layers.Count == map.Layers.Count) { map.Layers.Clear(); map.Extent = newMap.Extent; List <Layer> layers = new List <Layer>(); foreach (Layer layer in newMap.Layers) { if (ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetUsesProxy(layer)) { SecureServicesHelper.SetProxyUrl(layer, proxyUrl); } layers.Add(layer); } newMap.Layers.Clear(); foreach (Layer layer in layers) { map.Layers.Add(layer); } } } } catch (Exception ex) { Logger.Instance.LogError(ex); MessageBoxDialog.Show(ESRI.ArcGIS.Mapping.Controls.Resources.Strings.ErrorChangingProxies); } } #endregion }