/// <summary> /// Default constructor. /// </summary> /// <param name="element">Instantiated element.</param> /// <param name="layer">Current root layout layer.</param> /// <param name="member">Binded member.</param> public VirtualizedItemMeta(object element, ref LayoutLayer layer, MemberInfo member) { Element = element as FrameworkElement; Field = element as IGUIField; Root = layer; Member = member; }
/// <summary> /// Spawning Header UI elements un shared layer. Connecting to the shared member. /// </summary> /// <param name="layer">Target UI layer.</param> /// <param name="args"> /// Must contains: <see cref="UIDescriptor"/>. /// <see cref="MemberInfo"/> will excluded from array. Use UI.Controls.Header.OnGUI instead if you want to bind member to the field.</param> public virtual void OnLayout(ref LayoutLayer layer, params object[] args) { // Instiniate header UI. BindedUI = new UI.Controls.Header() { GUIContent = Content }; // Remove reference to the member. // In other case header value would connected to meber that just describe UI view. for (int i = 0; i < args.Length; i++) { // Checking if the target argument. if (args[i] is MemberInfo) { // Drop reference. args[i] = null; break; } } // Call GUI processing. BindedUI.OnLayout(ref layer, args); // Apply state to the element. BindedUI.Active = DefaultState; }
internal static CustomLayoutOptions DeserializeCustomLayoutOptions(JsonElement element) { Optional <IDictionary <string, LayoutLayer> > layers = default; IDictionary <string, InputGroup> inputGroups = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("layers")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } Dictionary <string, LayoutLayer> dictionary = new Dictionary <string, LayoutLayer>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, LayoutLayer.DeserializeLayoutLayer(property0.Value)); } layers = dictionary; continue; } if (property.NameEquals("inputGroups")) { Dictionary <string, InputGroup> dictionary = new Dictionary <string, InputGroup>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, InputGroup.DeserializeInputGroup(property0.Value)); } inputGroups = dictionary; continue; } } return(new CustomLayoutOptions(Optional.ToDictionary(layers), inputGroups)); }
/// <summary> /// Going one layer deeper into UI layout. /// All child element will be placed in horizontal order till calling of the EndGroup element. /// </summary> /// <param name="layer">Curent layer. Refernece eill be changed to the new layer after performing.</param> /// <param name="args">Not using into that elelment.</param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Create grid. IAddChild root = new Grid(); // Set new layer. layer = layer.GoDeeper(root); _Layer = layer; }
/// <summary> /// Going one layer deeper into UI layout. /// All child element will be placed in vertical order till calling of the EndGroup element. /// </summary> /// <param name="layer">Curent layer. Refernece eill be changed to the new layer after performing.</param> /// <param name="args">Not using into that elelment.</param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Creating stack panel. IAddChild root = new StackPanel() { Orientation = Orientation.Vertical }; // Set new layer. layer = layer.GoDeeper(root); _Layer = layer; }
/// <summary> /// Not supported. /// </summary> /// <param name="layer"></param> /// <param name="args"></param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Trying to get shared properties. foreach (object obj in args) { if (obj is MemberInfo) { BindedMember = (MemberInfo)obj; break; } } }
/// <summary> /// Spawn label element into the UI. /// </summary> /// <param name="layer"></param> /// <param name="args"></param> public virtual void OnGUI(ref LayoutLayer layer, params object[] args) { // Instiniate element. var element = new System.Windows.Controls.Label { // Set content. Content = Content.GetTitle() }; // Attaching to layout. layer.root.AddChild(element); }
///// <summary> ///// Occurs when contrent is changed. ///// </summary> //public event Action<IGUIField> ValueChanged; /// <summary> /// Spawn label element into the UI. /// </summary> /// <param name="layer"></param> /// <param name="args"></param> public virtual void OnLayout(ref LayoutLayer layer, params object[] args) { // Instiniate element. var element = new WpfHandler.UI.Controls.GUIContentLabel { // Set content. LabelContent = Content }; // Attaching to layout. layer.ApplyControl(element); // Activating the layout. element.OnLayout(ref layer, args); }
/// <summary> /// Instiniating Space GUI lement. /// </summary> /// <param name="layer">Target GUI layer.</param> /// <param name="args">Not using in that element.</param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Instiniate GUI element. var canvas = new Canvas(); // Convifurate layout's size. if (layer.orientation == Orientation.Horizontal) { canvas.Width = Size; } else { canvas.Height = Size; } // Add element to the root. layer.ApplyControl(canvas); }
/// <summary> /// Configurate GUI element and bind it to auto layout handler. /// </summary> /// <param name="layer">Target UI layer.</param> /// <param name="args">Must contains: <see cref="UIDescriptor"/> and <see cref="MemberInfo"/></param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Find required referendes. MemberInfo member = null; // Trying to get shared properties. foreach (object obj in args) { if (obj is MemberInfo) { member = (MemberInfo)obj; break; } } // Defining field value mode. var type = UIDescriptor.MembersHandler.GetSpecifiedMemberType(member); DefineModeByType(type); }
/// <summary> /// Trying to go to the upper UI's layer. /// </summary> /// <param name="layer">Current layer. Reference will be changed on relevant one.</param> /// <param name="args">Not using in that element.</param> public void OnLayout(ref LayoutLayer layer, params object[] args) { // Trying to go to the upper UI's layer. layer = layer.GoUpper(); _Layer = layer; }
/// <summary> /// Not supported. /// </summary> /// <param name="layer"></param> /// <param name="args"></param> public void OnLayout(ref LayoutLayer layer, params object[] args) { throw new NotSupportedException(); }