Skip to main content

TabbedWindow2

The TabbedWindow2 is a control meant to replicate the standard Guild Wars 2 windows with tabs. TabbedWindow2s are much like StandardWindows except TabbedWindow2s have tabs.

caution

There exists another window control, TabbedWindow which is deprecated and will be removed in a future version - do not use TabbedWindow. Use this control, TabbedWindow2, instead.

Implements
ContainerThis control is a container meaning it can contain other controls and containers.
IViewContainerThis control can act as a view container allowing you to show it with a view specified.
IWindowThis control acts as a window meaning its ZIndex will update to bring it to the front of other windows when interacted with.

Windows require a background and their size and content regions will be subsets of the background's bounds.

When creating a new TabbedWindow2, you must provide:

ParameterDescription
backgroundThe texture to be used as the background of the window.
windowRegionThe bounds which represent the "rigid" portion of the window - just inside of the softer outer border.
contentRegionThe bounds within the space that should represent the ContentRegion. This is where the view / child controls will be displayed.

In this example, we've used window background asset 155997.

var exampleWindow = new TabbedWindow2(
Content.GetTexture("controls/window/155997"), // The background texture of the window.
new Rectangle(24, 30, 545, 630), // The windowRegion
new Rectangle(82, 30, 467, 600) // The contentRegion
);
Accounting for the sidebar

When using a TabbedWindow2, a black sidebar (which has the tabs on it) will be shown on the left side of the window. This will cut into your windowRegion. Account for this by including at least 46 of space between the left side of your windowRegion and your contentRegion.


Usage Example

var exampleWindow = new TabbedWindow2(Content.GetTexture("controls/window/155985"), new Rectangle(24, 30, 545, 630), new Rectangle(82, 30, 467, 600)) {
Parent = Graphics.SpriteScreen,
Title = "TabbedWindow",
Emblem = Content.GetTexture("controls/window/156022"),
Subtitle = "Example Subtitle",
SavesPosition = true,
Id = $"{nameof(ExampleClass)}_ExampleModule_38d37290-b5f9-447d-97ea-45b0b50e5f56"
};

exampleWindow.Tabs.Add(new Tab(Content.GetTexture("155052"), () => new OverlaySettingsView(), "Settings"));
exampleWindow.Tabs.Add(new Tab(Content.GetTexture("155052"), () => new AboutView(), "About Blish HUD"));

Properties

PropertyTypeDescription
DraggingboolIndicates if the window is actively being dragged.
EmblemTexture2DThe emblem icon shown in the top left of the window.
IdstringA unique id to identify the window. Used with SavesPosition as a unique identifier to remember where the window is positioned.
SavesPositionboolIf true, the window will remember its position between Blish HUD sessions. Requires that Id be set.
SubtitlestringThe text shown to the right of the title in the title bar. This text is smaller and is normally used to show the current tab name and/or hotkey used to open the window.
TitlestringThe text shown at the top of the window.
TopMostboolIf this window will show on top of all other windows, regardless of which one had focus last.
TabsTabCollectionA collection which represents all of the windows tabs. You can add remove tabs by call Add and Remove on this property.
SelectedTabTabThe tab instance that is currently selected. If there are no tabs (and thus none is selected, this value will be null).

Methods

MethodDescription
BringWindowToFront()Brings the window to the front of all other windows.
Show()Shows the window.
ToggleWindow()Shows the window if it is hidden. Hides the window if it is currently showing.