mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-01 09:37:03 +02:00
73 lines
1.8 KiB
C#
73 lines
1.8 KiB
C#
using System.Runtime.InteropServices;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Input;
|
|
using Robust.Shared.Maths;
|
|
|
|
namespace Robust.Client.UserInterface;
|
|
|
|
[GenerateTypedNameReferences]
|
|
internal sealed partial class ProfTreeEntry : Control
|
|
{
|
|
private readonly ProfTree _tab;
|
|
private readonly ProfTree.TreeExpand _parentExpand;
|
|
public readonly (int str, int i) Id;
|
|
|
|
protected override void StylePropertiesChanged()
|
|
{
|
|
base.StylePropertiesChanged();
|
|
|
|
if (!TryGetStyleProperty("arrowColor", out Arrow.Color))
|
|
Arrow.Color = Color.White;
|
|
|
|
if (!TryGetStyleProperty("arrowOutline", out Arrow.OutlineColor))
|
|
Arrow.OutlineColor = Color.Black;
|
|
}
|
|
|
|
public ProfTreeEntry(
|
|
ProfTree tab,
|
|
ProfTree.TreeExpand parentExpand,
|
|
(int str, int i) id,
|
|
float margin)
|
|
{
|
|
_tab = tab;
|
|
_parentExpand = parentExpand;
|
|
Id = id;
|
|
|
|
RobustXamlLoader.Load(this);
|
|
|
|
LineContainer.Margin = new Thickness(margin, 0, 0, 0);
|
|
}
|
|
|
|
protected internal override void KeyBindDown(GUIBoundKeyEventArgs args)
|
|
{
|
|
if (args.Function != EngineKeyFunctions.UIClick)
|
|
return;
|
|
|
|
args.Handle();
|
|
|
|
ref var tree = ref CollectionsMarshal.GetValueRefOrAddDefault(_parentExpand.ExpandedItems, Id, out var had);
|
|
if (had)
|
|
{
|
|
if (tree!.Enabled)
|
|
{
|
|
tree.Enabled = false;
|
|
if (tree.ExpandedItems.Count == 0)
|
|
_parentExpand.ExpandedItems.Remove(Id);
|
|
}
|
|
else
|
|
{
|
|
tree.Enabled = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
tree = new ProfTree.TreeExpand();
|
|
}
|
|
|
|
_tab.RebuildTree();
|
|
}
|
|
|
|
|
|
}
|