public static void RefreshContextMenu(this IDataUi dataUi, ContextMenu contextMenu) { RoutedEventHandler makeDefaultHandler = (sender, e) => { dataUi.InstanceMember.IsDefault = true; dataUi.Refresh(); if (dataUi is ISetDefaultable) { ((ISetDefaultable)dataUi).SetToDefault(); } }; contextMenu.Items.Clear(); AddContextMenuItem("Make Default", makeDefaultHandler, contextMenu); if (dataUi.InstanceMember != null) { foreach (var kvp in dataUi.InstanceMember.ContextMenuEvents) { AddContextMenuItem(kvp.Key, kvp.Value, contextMenu).Tag = dataUi.InstanceMember; } } }
public static void RefreshContextMenu(this IDataUi dataUi, ContextMenu contextMenu) { RoutedEventHandler makeDefaultHandler = (sender, e) => { dataUi.InstanceMember.IsDefault = true; dataUi.Refresh(); // the instance member may have undone the IsDefault, so let's only do this if it's still set to default: if (dataUi is ISetDefaultable && dataUi.InstanceMember.IsDefault) { ((ISetDefaultable)dataUi).SetToDefault(); } }; contextMenu.Items.Clear(); AddContextMenuItem("Make Default", makeDefaultHandler, contextMenu); if (dataUi.InstanceMember != null) { foreach (var kvp in dataUi.InstanceMember.ContextMenuEvents) { AddContextMenuItem(kvp.Key, kvp.Value, contextMenu).Tag = dataUi.InstanceMember; } } }
private UserControl CreateControlByType(InstanceMember instanceMember, Type type) { UserControl controlToAdd = null; if (instanceMember.PreferredDisplayer != null) { controlToAdd = (UserControl)Activator.CreateInstance(instanceMember.PreferredDisplayer); } if (controlToAdd == null) { foreach (var kvp in mTypeDisplayerAssociation) { if (kvp.Key(type)) { controlToAdd = (UserControl)Activator.CreateInstance(kvp.Value); } } } if (controlToAdd == null) { controlToAdd = new TextBoxDisplay(); } IDataUi display = (IDataUi)controlToAdd; display.InstanceMember = instanceMember; return(controlToAdd); }
public TextBoxDisplayLogic(IDataUi container, TextBox textBox) { mAssociatedTextBox = textBox; mContainer = container; mAssociatedTextBox.GotFocus += HandleTextBoxGotFocus; mAssociatedTextBox.PreviewKeyDown += HandlePreviewKeydown; mAssociatedTextBox.TextChanged += HandleTextChanged; }
UserControl CreateInternalControl() { if (InstanceMember == null) { throw new NullReferenceException(nameof(InstanceMember)); } UserControl controlToAdd = null; if (InstanceMember.PreferredDisplayer != null) { controlToAdd = (UserControl)Activator.CreateInstance(InstanceMember.PreferredDisplayer); } if (controlToAdd == null) { var type = InstanceMember.PropertyType; foreach (var kvp in mTypeDisplayerAssociation) { if (kvp.Key(type)) { controlToAdd = (UserControl)Activator.CreateInstance(kvp.Value); } } } if (controlToAdd == null && InstanceMember.CustomOptions != null && InstanceMember.CustomOptions.Count != 0) { controlToAdd = new ComboBoxDisplay(); } if (controlToAdd == null) { controlToAdd = new TextBoxDisplay(); } var displayerType = controlToAdd.GetType(); foreach (var kvp in InstanceMember.PropertiesToSetOnDisplayer) { var propertyInfo = displayerType.GetProperty(kvp.Key); propertyInfo?.SetValue(controlToAdd, kvp.Value, null); } IDataUi display = (IDataUi)controlToAdd; display.InstanceMember = InstanceMember; InstanceMember.CallUiCreated(controlToAdd); // can we share them like this? Is it safe? OK? this.ContextMenu = controlToAdd.ContextMenu; return(controlToAdd); }
public static bool TryGetValueOnInstance(this IDataUi dataUi, out object value) { //////////////////Early Out///////////////////////////////// if (dataUi.HasEnoughInformationToWork() == false || dataUi.InstanceMember.IsWriteOnly) { value = null; return(false); } ////////////////End Early Out/////////////////////////////// value = dataUi.InstanceMember.Value; return(true); }
internal void CallBeforeSetByUi(IDataUi dataUi) { if (BeforeSetByUi != null) { BeforePropertyChangedArgs args = new BeforePropertyChangedArgs(); object value; dataUi.TryGetValueOnUi(out value); args.NewValue = value; BeforeSetByUi(this, args); if (args.WasManuallySet) { // The event changed it, so let's force it back on the UI dataUi.TrySetValueOnUi(args.OverridingValue); } } }
private static void GetIfValuesCanBeSetOnInstance(IDataUi dataUi, out ApplyValueResult result, out bool hasErrorOccurred) { result = ApplyValueResult.UnknownError; hasErrorOccurred = false; if (dataUi.HasEnoughInformationToWork() == false) { result = ApplyValueResult.NotEnoughInformation; hasErrorOccurred = true; } if (dataUi.InstanceMember.IsReadOnly) { result = ApplyValueResult.NotSupported; hasErrorOccurred = true; } if (dataUi.SuppressSettingProperty) { result = ApplyValueResult.NotEnabled; hasErrorOccurred = true; } }
public static ApplyValueResult TrySetValueOnInstance(this IDataUi dataUi, object valueToSet) { ApplyValueResult result; bool hasErrorOccurred; GetIfValuesCanBeSetOnInstance(dataUi, out result, out hasErrorOccurred); if (!hasErrorOccurred) { if (dataUi.InstanceMember.Value != valueToSet) { dataUi.InstanceMember.Value = valueToSet; result = ApplyValueResult.Success; dataUi.InstanceMember.CallAfterSetByUi(); } else { result = ApplyValueResult.Skipped; } } return(result); }
public static ApplyValueResult TrySetValueOnInstance(this IDataUi dataUi) { ApplyValueResult result; bool hasErrorOccurred; GetIfValuesCanBeSetOnInstance(dataUi, out result, out hasErrorOccurred); if (!hasErrorOccurred) { object valueOnUi; result = dataUi.TryGetValueOnUi(out valueOnUi); if (result == ApplyValueResult.Success) { dataUi.InstanceMember.Value = valueOnUi; result = ApplyValueResult.Success; dataUi.InstanceMember.CallAfterSetByUi(); } } return(result); }
public static bool HasEnoughInformationToWork(this IDataUi dataUi) { return(dataUi.InstanceMember.IsDefined); }
public static Type GetPropertyType(this IDataUi dataUi) { return(dataUi.InstanceMember.PropertyType); }