public void AddToConnections(ConnectionModelProxy connection) { try { Execute.OnUIThread(() => { Connections.Add(new ResourceContainer(connection.Name, connection, IconsDescription.Connection)); }); } catch (TaskCanceledException) { // Silently continue } }
public ConnectionViewModel(ConnectionModelProxy connection) { model = connection; if (connection != null && String.IsNullOrEmpty(connection.Name)) { UnsavedChanges = true; } Owner = connection.Context.Service; ConnectionTypes = new ObservableCollection <ConnectionTypeModelProxy>(); Parameters = new ObservableCollection <ConnectionViewParameter>(); Task.Run(() => { // We need to read the info from our backend again since we don't // get any property values when enumerating all connections try { if (connection.ConnectionType != null) { connection = connection.Context.Service.GetConnectionDetails(connection); } var result = Owner.GetConnectionTypes(); var connectionTypeNameProp = default(PropertyInfo); if (connection.ConnectionType != null) { connectionTypeNameProp = connection.ConnectionType.GetType().GetProperty("Name"); } var connectionTypeName = string.Empty; if (connectionTypeNameProp != null) { connectionTypeName = connectionTypeNameProp.GetValue(connection.ConnectionType).ToString(); } Execute.OnUIThread(() => { foreach (var type in result) { ConnectionTypes.Add(type); if (type.Name.Equals(connectionTypeName, StringComparison.InvariantCultureIgnoreCase)) { ConnectionType = type; } } if (Owner is AzureService && connection.ConnectionType != null) { var fields = (connection.ConnectionFieldValues as List <Vendor.Azure.ConnectionFieldValue>); if (fields.Count > 0) { Parameters.Clear(); foreach (var field in fields) { var paramName = field.ConnectionFieldName; if (field.IsEncrypted) { paramName = field.ConnectionFieldName + " (encrypted)"; } if (!field.IsOptional) { paramName += "*"; } Parameters.Add(new ConnectionViewParameter { DisplayName = paramName, Name = field.ConnectionFieldName, Value = field.Value }); } } } else if (Owner is SmaService && connection.ConnectionType != null) { var fields = (connection.ConnectionFieldValues as List <SMA.ConnectionFieldValue>); if (fields.Count > 0) { Parameters.Clear(); foreach (var field in fields) { var paramName = field.ConnectionFieldName; if (field.IsEncrypted) { paramName = field.ConnectionFieldName + " (encrypted)"; } if (field.IsOptional != null && field.IsOptional.HasValue && !field.IsOptional.Value) { paramName += "*"; } Parameters.Add(new ConnectionViewParameter { DisplayName = paramName, Name = field.ConnectionFieldName, Value = field.Value }); } } } LongRunningOperation.Stop(); }); } catch (ApplicationException ex) { LongRunningOperation.Stop(); GlobalExceptionHandler.Show(ex); } }); }