# Dock Pane Example

An example of the `DockPane` widget.

This example demonstrates the use of the `DockPane` widget. A `DockPane` can have at most one child, which must be a ‘Container` widget. The sizing of the `DockPane` is largely determined by the size constraints of the child `Container`. A `DockPane` must be used as the child of a `MainWindow`. There are several attribute on a `DockPane` which allow the developer to control the behavior of the `DockPane`.

Implementation Notes:

> The docking facilities in Wx are very weak. Due to various technical limitations, the sizing of `DockPane` widgets in Wx is not nearly as good as it is on Qt. The cost of using a `DockPane` in Wx is also much higher than in Qt due to Wx’s horribly inefficient docking implementation. If docking is required for a particular application, strongly prefer the Qt backend over Wx (this is generally a good life-rule).

Tip

To see this example in action, download it from `dock_pane` and run:

    $ enaml-run dock_pane.enaml

## Screenshot

## Example Enaml Code

    #------------------------------------------------------------------------------
    # Copyright (c) 2013-2025, Nucleic Development Team.
    #
    # Distributed under the terms of the Modified BSD License.
    #
    # The full license is in the file LICENSE, distributed with this software.
    #------------------------------------------------------------------------------
    """ An example of the `DockPane` widget.

    This example demonstrates the use of the `DockPane` widget. A `DockPane`
    can have at most one child, which must be a 'Container` widget. The
    sizing of the `DockPane` is largely determined by the size constraints
    of the child `Container`. A `DockPane` must be used as the child of
    a `MainWindow`. There are several attribute on a `DockPane` which allow
    the developer to control the behavior of the `DockPane`.

    Implementation Notes:

        The docking facilities in Wx are very weak. Due to various technical
        limitations, the sizing of `DockPane` widgets in Wx is not nearly as
        good as it is on Qt. The cost of using a `DockPane` in Wx is also
        *much* higher than in Qt due to Wx's horribly inefficient docking
        implementation. If docking is required for a particular application,
        strongly prefer the Qt backend over Wx (this is generally a good
        life-rule).

    << autodoc-me >>
    """
    from enaml.widgets.api import (
        MainWindow, DockPane, Container, PushButton, Html,
    )

    enamldef Main(MainWindow):
        DockPane:
            title << 'Dock Area %s | %s' % (dock_area, 'floating' if floating else 'docked')
            Container:
                PushButton:
                    text = 'Foo'
                PushButton:
                    text = 'Bar'
                PushButton:
                    text = 'Baz'
        Container:
            Html:
                source = '<h1><center>Hello World!</center></h1>'