Class HeaderBar

All Implemented Interfaces:
Accessible, Buildable, ConstraintTarget, Proxy

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

A title bar widget.

header-bar

AdwHeaderBar is similar to HeaderBar, but provides additional features compared to it. Refer to GtkHeaderBar for details. It is typically used as a top bar within ToolbarView.

Dialog Integration

When placed inside an Dialog, AdwHeaderBar will display the dialog title instead of window title. It will also adjust the decoration layout to ensure it always has a close button and nothing else. Set HeaderBar:show-start-title-buttons and HeaderBar:show-end-title-buttons to FALSE to remove it if it's unwanted.

When placed inside an NavigationPage, AdwHeaderBar will display the page title instead of window title.

When used together with NavigationView or NavigationSplitView, it will also display a back button that can be used to go back to the previous page. The button also has a context menu, allowing to pop multiple pages at once, potentially across multiple navigation views.

Set HeaderBar:show-back-button to FALSE to disable this behavior in rare scenarios where it's unwanted.

Split View Integration

When placed inside NavigationSplitView or OverlaySplitView, AdwHeaderBar will automatically hide the title buttons other than at the edges of the window.

Bottom Sheet Integration

When played inside BottomSheet, AdwHeaderBar will not show the title unless BottomSheet:show-drag-handle is set to FALSE, regardless of HeaderBar:show-title. This only applies to the default title, titles set with HeaderBar:title-widget will still be shown.

Centering Policy

HeaderBar:centering-policy allows to enforce strict centering of the title widget. This can be useful for entries inside Clamp.

Title Buttons

Unlike GtkHeaderBar, AdwHeaderBar allows to toggle title button visibility for each side individually, using the HeaderBar:show-start-title-buttons and HeaderBar:show-end-title-buttons properties.

CSS nodes

headerbar
╰── windowhandle
    ╰── box
        ├── widget
        │   ╰── box.start
        │       ├── windowcontrols.start
        │       ├── widget
        │       │   ╰── [button.back]
        │       ╰── [other children]
        ├── widget
        │   ╰── [Title Widget]
        ╰── widget
            ╰── box.end
                ├── [other children]
                ╰── windowcontrols.end

AdwHeaderBar's CSS node is called headerbar. It contains a windowhandle subnode, which contains a box subnode, which contains three widget subnodes at the start, center and end of the header bar. The start and end subnodes contain a box subnode with the .start and .end style classes respectively, and the center node contains a node that represents the title.

Each of the boxes contains a windowcontrols subnode, see WindowControls for details, as well as other children.

When HeaderBar:show-back-button is TRUE, the start box also contains a node with the name widget that contains a node with the name button and .back style class.

Accessibility

AdwHeaderBar uses the Gtk.AccessibleRole.group role.

  • Constructor Details

    • HeaderBar

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

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

    • getType

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

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

      protected HeaderBar 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
    • getCenteringPolicy

      public CenteringPolicy getCenteringPolicy()
      Gets the policy for aligning the center widget.
      Returns:
      the centering policy
    • getDecorationLayout

      public @Nullable String getDecorationLayout()
      Gets the decoration layout for self.
      Returns:
      the decoration layout
    • getShowBackButton

      public boolean getShowBackButton()
      Gets whether this HeaderBar can show the back button.
      Returns:
      whether to show the back button
      Since:
      1.4
    • getShowEndTitleButtons

      public boolean getShowEndTitleButtons()
      Gets whether to show title buttons at the end of self.
      Returns:
      TRUE if title buttons at the end are shown
    • getShowStartTitleButtons

      public boolean getShowStartTitleButtons()
      Gets whether to show title buttons at the start of self.
      Returns:
      TRUE if title buttons at the start are shown
    • getShowTitle

      public boolean getShowTitle()
      Gets whether the title widget should be shown.
      Returns:
      whether the title widget should be shown.
      Since:
      1.4
    • getTitleWidget

      public @Nullable Widget getTitleWidget()
      Gets the title widget widget of self.
      Returns:
      the title widget
    • packEnd

      public void packEnd(Widget child)
      Adds child to self, packed with reference to the end of self.
      Parameters:
      child - the widget to be added to this HeaderBar
    • packStart

      public void packStart(Widget child)
      Adds child to self, packed with reference to the start of the self.
      Parameters:
      child - the widget to be added to this HeaderBar
    • remove

      public void remove(Widget child)

      Removes a child from self.

      The child must have been added with packStart(Widget), packEnd(Widget) or HeaderBar:title-widget.

      Parameters:
      child - the child to remove
    • setCenteringPolicy

      public void setCenteringPolicy(CenteringPolicy centeringPolicy)
      Sets the policy for aligning the center widget.
      Parameters:
      centeringPolicy - the centering policy
    • setDecorationLayout

      public void setDecorationLayout(@Nullable String layout)

      Sets the decoration layout for self.

      If this property is not set, the Gtk.Settings:gtk-decoration-layout setting is used.

      The format of the string is button names, separated by commas. A colon separates the buttons that should appear at the start from those at the end. Recognized button names are minimize, maximize, close and icon (the window icon).

      For example, “icon:minimize,maximize,close” specifies an icon at the start, and minimize, maximize and close buttons at the end.

      Parameters:
      layout - a decoration layout
    • setShowBackButton

      public void setShowBackButton(boolean showBackButton)

      Sets whether this HeaderBar can show the back button.

      The back button will never be shown unless the header bar is placed inside an NavigationView. Usually, there is no reason to set it to FALSE.

      Parameters:
      showBackButton - whether to show the back button
      Since:
      1.4
    • setShowEndTitleButtons

      public void setShowEndTitleButtons(boolean setting)

      Sets whether to show title buttons at the end of self.

      See HeaderBar:show-start-title-buttons for the other side.

      Which buttons are actually shown and where is determined by the HeaderBar:decoration-layout property, and by the state of the window (e.g. a close button will not be shown if the window can't be closed).

      Parameters:
      setting - TRUE to show standard title buttons
    • setShowStartTitleButtons

      public void setShowStartTitleButtons(boolean setting)

      Sets whether to show title buttons at the start of self.

      See HeaderBar:show-end-title-buttons for the other side.

      Which buttons are actually shown and where is determined by the HeaderBar:decoration-layout property, and by the state of the window (e.g. a close button will not be shown if the window can't be closed).

      Parameters:
      setting - TRUE to show standard title buttons
    • setShowTitle

      public void setShowTitle(boolean showTitle)
      Sets whether the title widget should be shown.
      Parameters:
      showTitle - whether the title widget is visible
      Since:
      1.4
    • setTitleWidget

      public void setTitleWidget(@Nullable Widget titleWidget)

      Sets the title widget for self.

      When set to NULL, the header bar will display the title of the window it is contained in.

      To use a different title, use WindowTitle:

      <object class="AdwHeaderBar">
        <property name="title-widget">
          <object class="AdwWindowTitle">
            <property name="title" translatable="yes">Title</property>
          </object>
        </property>
      </object>
      
      Parameters:
      titleWidget - a widget to use for a title
    • builder

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