Code/UI/NodePickRoot.cs
namespace Nodebox.UI;
[Title("Nodebox Node Pick Root")]
public sealed class NodePickRoot : PanelComponent, IGraphStyle {
[Property]
public GraphStyle GraphStyle { get; set; }
[JsonIgnore]
[Change(nameof(OnCollectionChange))]
public Node.Collection Collection { get; set; } = null;
[JsonIgnore]
public NodePick NodePick { get; private set; } = null;
protected override void OnTreeFirstBuilt() {
base.OnTreeFirstBuilt();
Recreate();
}
private void Recreate() {
if (!Panel.IsValid()) { return; }
NodePick = new();
NodePick.Parent = Panel;
NodePick.Collection = Collection;
NodePick.NodeSelected += (type) => NodeSelected?.Invoke(type);
NodePick.Focus();
}
public Action<SerializableType> NodeSelected { get; set; }
private void OnCollectionChange() {
NodePick?.Collection = Collection;
}
protected override void OnEnabled() {
base.OnEnabled();
NodePick?.TextEntryRef?.Focus();
}
protected override void OnDisabled() {
base.OnDisabled();
Panel.Blur();
}
protected override void OnMouseDown(MousePanelEvent e) {
base.OnMouseDown(e);
e.StopPropagation();
if (e.Target == Panel) {
Enabled = false;
}
}
// protected override int BuildHash() => HashCode.Combine(
// // GraphStyle,
// );
}