Browse Source

Added auto event building

Krzysztof Krysiński 3 months ago
parent
commit
d42b908729

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Align.cs

@@ -13,7 +13,7 @@ public class Align : SingleChildLayoutElement
         Alignment = alignment;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = new ControlDefinition(UniqueId, "Align");
         controlDefinition.AddProperty((int)Alignment);
@@ -21,7 +21,6 @@ public class Align : SingleChildLayoutElement
         if (Child != null)
             controlDefinition.AddChild(Child.BuildNative());
 
-        BuildPendingEvents(controlDefinition);
         return controlDefinition;
     }
 }

+ 1 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Border.cs

@@ -35,7 +35,7 @@ public class Border : SingleChildLayoutElement
         BackgroundColor = backgroundColor;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = new(UniqueId, "Border");
         if (Child != null)

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Button.cs

@@ -18,13 +18,12 @@ public class Button : SingleChildLayoutElement
             Click += onClick;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition button = new ControlDefinition(UniqueId, "Button");
         if (Child != null)
             button.AddChild(Child.BuildNative());
 
-        BuildPendingEvents(button);
         return button;
     }
 }

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Center.cs

@@ -9,14 +9,13 @@ public class Center : SingleChildLayoutElement
         Child = child;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition center = new ControlDefinition(UniqueId, "Center");
 
         if (Child != null)
             center.AddChild(Child.BuildNative());
 
-        BuildPendingEvents(center);
         return center;
     }
 }

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/CheckBox.cs

@@ -32,13 +32,12 @@ public class CheckBox : SingleChildLayoutElement
     }
 
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition checkbox = new ControlDefinition(UniqueId, "CheckBox");
         if (Child != null)
             checkbox.AddChild(Child.BuildNative());
 
-        BuildPendingEvents(checkbox);
         return checkbox;
     }
 }

+ 1 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Column.cs

@@ -22,7 +22,7 @@ public class Column : MultiChildLayoutElement
         Children = new List<LayoutElement>(children);
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = new ControlDefinition(UniqueId, "Column");
         controlDefinition.AddProperty(MainAxisAlignment);

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Container.cs

@@ -19,7 +19,7 @@ public class Container : SingleChildLayoutElement
         Child = child;
     }
     
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition container = new ControlDefinition(UniqueId, "Container");
         container.AddProperty(Margin);
@@ -34,7 +34,6 @@ public class Container : SingleChildLayoutElement
             container.AddChild(Child.BuildNative());
         }
 
-        BuildPendingEvents(container);
         return container;
     }
 }

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Icon.cs

@@ -16,14 +16,13 @@ public class Icon : StatelessElement
             Color = color.Value;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition icon = new ControlDefinition(UniqueId, "Icon");
         icon.AddProperty(IconName);
         icon.AddProperty(Size);
         icon.AddProperty(Color);
 
-        BuildPendingEvents(icon);
         return icon;
     }
 }

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Image.cs

@@ -37,7 +37,7 @@ public class Image : StatelessElement
         FilterQuality = filterQuality;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition image = new ControlDefinition(UniqueId, "Image");
         
@@ -47,7 +47,6 @@ public class Image : StatelessElement
         image.AddProperty(FillMode);
         image.AddProperty(FilterQuality);
         
-        BuildPendingEvents(image);
         return image;
     }
 }

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Layout.cs

@@ -9,14 +9,13 @@ public sealed class Layout : SingleChildLayoutElement
         Child = body;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition layout = new ControlDefinition(UniqueId, "Layout");
 
         if (Child != null)
             layout.AddChild(Child.BuildNative());
 
-        BuildPendingEvents(layout);
         return layout;
     }
 

+ 9 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/LayoutElement.cs

@@ -33,7 +33,15 @@ public abstract class LayoutElement : ILayoutElement<ControlDefinition>
         remove => RemoveEvent(nameof(PointerReleased), value);
     }
 
-    public abstract ControlDefinition BuildNative();
+    public virtual ControlDefinition BuildNative()
+    {
+        ControlDefinition control = CreateControl();
+
+        BuildPendingEvents(control);
+        return control;
+    }
+
+    protected abstract ControlDefinition CreateControl();
 
     public LayoutElement()
     {

+ 0 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/MultiChildLayoutElement.cs

@@ -12,6 +12,5 @@ public abstract class MultiChildLayoutElement : LayoutElement, IMultiChildLayout
 
     public List<LayoutElement> Children { get; set; }
 
-    public abstract override ControlDefinition BuildNative();
 
 }

+ 2 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Padding.cs

@@ -11,8 +11,8 @@ public class Padding : SingleChildLayoutElement
         Edges = edges;
         Child = child;
     }
-    
-    public override ControlDefinition BuildNative()
+
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = new ControlDefinition(UniqueId, "Padding");
         controlDefinition.Children.Add(Child.BuildNative());

+ 1 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Row.cs

@@ -22,7 +22,7 @@ public class Row : MultiChildLayoutElement
         Children = new List<LayoutElement>(children);
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = new ControlDefinition(UniqueId, "Row");
         controlDefinition.AddProperty(MainAxisAlignment);

+ 0 - 1
src/PixiEditor.Extensions.Sdk/Api/FlyUI/SingleChildLayoutElement.cs

@@ -5,5 +5,4 @@ namespace PixiEditor.Extensions.Sdk.Api.FlyUI;
 public abstract class SingleChildLayoutElement : LayoutElement, ISingleChildLayoutElement<ControlDefinition>
 {
     public ILayoutElement<ControlDefinition> Child { get; set; }
-    public abstract override ControlDefinition BuildNative();
 }

+ 8 - 0
src/PixiEditor.Extensions.Sdk/Api/FlyUI/StatefulElement.cs

@@ -27,10 +27,18 @@ public abstract class StatefulElement<TState> : LayoutElement, IStatefulElement<
     public TState State => (TState)((IStatefulElement<ControlDefinition>)this).State;
 
     public override ControlDefinition BuildNative()
+    {
+        var statefulContainer = CreateControl();
+        BuildPendingEvents(statefulContainer);
+        return statefulContainer;
+    }
+
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition controlDefinition = State.Build().BuildNative();
         ControlDefinition statefulContainer = new ControlDefinition(UniqueId, "StatefulContainer");
         statefulContainer.Children.Add(controlDefinition);
+
         return statefulContainer;
     }
 

+ 1 - 2
src/PixiEditor.Extensions.Sdk/Api/FlyUI/Text.cs

@@ -17,14 +17,13 @@ public class Text : StatelessElement
         TextStyle = textStyle ?? TextStyle.Default;
     }
 
-    public override ControlDefinition BuildNative()
+    protected override ControlDefinition CreateControl()
     {
         ControlDefinition text = new ControlDefinition(UniqueId, "Text");
         text.AddProperty(Value);
         text.AddProperty(TextWrap);
         text.AddProperty(TextStyle);
 
-        BuildPendingEvents(text);
         return text;
     }
 }

+ 1 - 1
src/PixiEditor/Helpers/Behaviours/ClearFocusOnClickBehavior.cs

@@ -27,7 +27,7 @@ internal class ClearFocusOnClickBehavior : Behavior<Control>
 
     private void AssociatedObject_MouseDown(object? sender, PointerPressedEventArgs? e)
     {
-        AssociatedObject.Focus();
+        AssociatedObject?.Focus();
         ShortcutController.UnblockShortcutExecutionAll();
     }
 }