Editor/InteriorLayoutBuilder/RoomLayoutDock.cs
using Editor;
using Sandbox;

namespace ReusableRoomLayout;

[Dock( "Editor", "Interior Layout Builder", "dashboard_customize" )]
public sealed class RoomLayoutDock : Widget
{
	private readonly Button activateButton;

	public RoomLayoutDock( Widget parent ) : base( parent )
	{
		MinimumSize = 240;
		Layout = Layout.Column();
		Layout.Margin = 8;
		Layout.Spacing = 8;

		activateButton = Layout.Add( new Button( "Activate Interior Layout Builder", this ) );
		activateButton.Icon = "dashboard_customize";
		activateButton.Clicked += ActivateTool;

		Layout.Add( new RoomLayoutControls( this ), 1 );
	}

	[EditorEvent.Frame]
	public void Frame()
	{
		if ( !Visible )
		{
			return;
		}

		var active = RoomLayoutTool.LiveTool is not null;
		activateButton.Visible = !active;
	}

	private static void ActivateTool()
	{
		EditorToolManager.SetTool( nameof( RoomLayoutTool ) );
	}
}