# Adding Panels to the Workspace

You may want to write an extension that adds a panel which displays information to the user. Builder provides API for this via the “Editor Surface”.

At a high level, the design of the editor is broken into four parts.

> - The code editors in the center of the surface

> - The left panel, which contains the “sources” of actions

> - The bottom panel, which contains utilities

> - The right panel, which is transient and contextual to the operation at hand

The easiest way to add a panel is to register an `Ide.EditorAddin` which adds the panels in the `do_load()` function. You’ll be provided access to the editor surface with the `editor` variable.

    # my_plugin.py

    import gi

    from gi.repository import GObject, Gtk, Dazzle, Ide

    class MyEditorAddin(GObject.Object, Ide.EditorAddin):

        def do_load(self, editor: Ide.EditorSurface):

            # Add a widget to the left panel (aka Sidebar)
            self.panel = Gtk.Label(visible=True, label='My Left Panel')
            left_panel = editor.get_sidebar()
            left_panel.add_section('my-section',
                                   'My Section Title',
                                   'my-section-icon-name',
                                   None, # Menu id if necessary
                                   None, # Menu icon name if necessary
                                   self.panel,
                                   100)  # Sort priority

            # To add a utility section
            self.bottom = Dazzle.DockWidget(title='My Bottom Panel', icon_name='gtk-missing', visible=True)
            self.bottom.add(Gtk.Label(label='Hello, Bottom Panel', visible=True))
            editor.get_utilities().add(self.bottom)

        def do_unload(self, editor: Ide.EditorSurface):

            # Remove our widgets
            self.panel.destroy()
            self.bottom.destroy()

            self.bottom = None
            self.panel = None