Class TabBar

All Implemented Interfaces:
Accessible, Buildable, ConstraintTarget, Proxy

@Generated("org.javagi.JavaGI") public final class TabBar extends Widget implements Accessible, Buildable, ConstraintTarget

A tab bar for TabView.

tab-bar

The AdwTabBar widget is a tab bar that can be used with conjunction with AdwTabView. It is typically used as a top bar within ToolbarView.

AdwTabBar can autohide and can optionally contain action widgets on both sides of the tabs.

When there's not enough space to show all the tabs, AdwTabBar will scroll them. Pinned tabs always stay visible and aren't a part of the scrollable area.

Drag-and-Drop

AdwTabBar tabs can have an additional drop target for arbitrary content.

Use setupExtraDropTarget(Set, Type[]) to set it up, specifying the supported content types and drag actions, then connect to TabBar::extra-drag-drop to handle a drop.

In some cases, it may be necessary to determine the used action based on the content. In that case, set TabBar:extra-drag-preload to TRUE and connect to TabBar::extra-drag-value signal, then return the action from its handler. To access this action from the TabBar::extra-drag-drop handler, use the TabBar:extra-drag-preferred-action property.

TabBar::extra-drag-value is also always emitted when starting to hover an item, with a NULL value. This happens even when TabBar:extra-drag-preload is FALSE.

CSS nodes

AdwTabBar has a single CSS node with name tabbar.

Style classes

By default AdwTabBar look like a part of an AdwHeaderBar and is intended to be used directly attached to one or used as a ToolbarView toolbar. The .inline style class removes its background, so that it can be used in different contexts instead.

tab-bar-inline
  • Constructor Details

    • TabBar

      public TabBar(MemorySegment address)
      Create a TabBar instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • TabBar

      public TabBar()
      Create a new TabBar.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the TabBar class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected TabBar asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class Widget
      Returns:
      the instance as if it were its parent type
    • getAutohide

      public boolean getAutohide()
      Gets whether the tabs automatically hide.
      Returns:
      whether the tabs automatically hide
    • getEndActionWidget

      public @Nullable Widget getEndActionWidget()
      Gets the widget shown after the tabs.
      Returns:
      the widget shown after the tabs
    • getExpandTabs

      public boolean getExpandTabs()
      Gets whether tabs expand to full width.
      Returns:
      whether tabs expand to full width.
    • getExtraDragPreferredAction

      public Set<DragAction> getExtraDragPreferredAction()

      Gets the current drag action during a drop.

      This method should only be used from inside a TabBar::extra-drag-drop handler.

      The action will be a subset of what was originally passed to setupExtraDropTarget(Set, Type[]).

      Returns:
      the drag action of the current drop
      Since:
      1.4
    • getExtraDragPreload

      public boolean getExtraDragPreload()
      Gets whether drop data should be preloaded on hover.
      Returns:
      whether drop data should be preloaded on hover
      Since:
      1.3
    • getInverted

      public boolean getInverted()
      Gets whether tabs use inverted layout.
      Returns:
      whether tabs use inverted layout
    • getIsOverflowing

      public boolean getIsOverflowing()

      Gets whether this TabBar is overflowing.

      If TRUE, all tabs cannot be displayed at once and require scrolling.

      Returns:
      whether this TabBar is overflowing
    • getStartActionWidget

      public @Nullable Widget getStartActionWidget()
      Gets the widget shown before the tabs.
      Returns:
      the widget shown before the tabs
    • getTabsRevealed

      public boolean getTabsRevealed()

      Gets whether the tabs are currently revealed.

      See TabBar:autohide.

      Returns:
      whether the tabs are currently revealed
    • getView

      public @Nullable TabView getView()
      Gets the tab view this TabBar controls.
      Returns:
      the view this TabBar controls
    • setAutohide

      public void setAutohide(boolean autohide)

      Sets whether the tabs automatically hide.

      If set to TRUE, the tab bar disappears when TabBar:view has 0 or 1 tab, no pinned tabs, and no tab is being transferred.

      See TabBar:tabs-revealed.

      Parameters:
      autohide - whether the tabs automatically hide
    • setEndActionWidget

      public void setEndActionWidget(@Nullable Widget widget)
      Sets the widget to show after the tabs.
      Parameters:
      widget - the widget to show after the tabs
    • setExpandTabs

      public void setExpandTabs(boolean expandTabs)

      Sets whether tabs expand to full width.

      If set to TRUE, the tabs will always vary width filling the whole width when possible, otherwise tabs will always have the minimum possible size.

      Parameters:
      expandTabs - whether to expand tabs
    • setExtraDragPreload

      public void setExtraDragPreload(boolean preload)

      Sets whether drop data should be preloaded on hover.

      See Gtk.DropTarget:preload.

      Parameters:
      preload - whether to preload drop data
      Since:
      1.3
    • setInverted

      public void setInverted(boolean inverted)

      Sets whether tabs tabs use inverted layout.

      If set to TRUE, non-pinned tabs will have the close button at the beginning and the indicator at the end rather than the opposite.

      Parameters:
      inverted - whether tabs use inverted layout
    • setStartActionWidget

      public void setStartActionWidget(@Nullable Widget widget)
      Sets the widget to show before the tabs.
      Parameters:
      widget - the widget to show before the tabs
    • setView

      public void setView(@Nullable TabView view)
      Sets the tab view this TabBar controls.
      Parameters:
      view - a tab view
    • setupExtraDropTarget

      public void setupExtraDropTarget(Set<DragAction> actions, @Nullable Type @Nullable [] types)

      Sets up an extra drop target on tabs.

      This allows to drag arbitrary content onto tabs, for example URLs in a web browser.

      If a tab is hovered for a certain period of time while dragging the content, it will be automatically selected.

      The TabBar::extra-drag-drop signal can be used to handle the drop.

      Parameters:
      actions - the supported actions
      types - all supported GTypes that can be dropped
    • setupExtraDropTarget

      public void setupExtraDropTarget(DragAction actions, @Nullable Type @Nullable [] types)

      Sets up an extra drop target on tabs.

      This allows to drag arbitrary content onto tabs, for example URLs in a web browser.

      If a tab is hovered for a certain period of time while dragging the content, it will be automatically selected.

      The TabBar::extra-drag-drop signal can be used to handle the drop.

      Parameters:
      actions - the supported actions
      types - all supported GTypes that can be dropped
    • onExtraDragDrop

      Emitted when content is dropped onto a tab.

      The content must be of one of the types set up via setupExtraDropTarget(Set, Type[]).

      See Gtk.DropTarget::drop.

      Parameters:
      handler - the signal handler
      Returns:
      a signal handler ID to keep track of the signal connection
      See Also:
    • emitExtraDragDrop

      public boolean emitExtraDragDrop(@Nullable TabPage page, @Nullable Value value)
      Emits the "extra-drag-drop" signal. See onExtraDragDrop(TabBar.ExtraDragDropCallback).
    • onExtraDragValue

      Emitted when the dropped content is preloaded.

      In order for data to be preloaded, TabBar:extra-drag-preload must be set to TRUE.

      The content must be of one of the types set up via setupExtraDropTarget(Set, Type[]).

      See Gtk.DropTarget:value.

      Parameters:
      handler - the signal handler
      Returns:
      a signal handler ID to keep track of the signal connection
      Since:
      1.3
      See Also:
    • emitExtraDragValue

      public Set<DragAction> emitExtraDragValue(@Nullable TabPage page, @Nullable Value value)
      Emits the "extra-drag-value" signal. See onExtraDragValue(TabBar.ExtraDragValueCallback).
    • builder

      public static TabBar.Builder<? extends TabBar.Builder> builder()
      A TabBar.Builder object constructs a TabBar with the specified properties. Use the various set...() methods to set properties, and finish construction with TabBar.Builder.build().
      Returns:
      the builder object