Using Docking Bars

Most GUI applications include docking bars. Their behavior is slightly different from that of standard docking panes.

This section introduces you to docking bars. It covers the following topics:

Using the IlvAbstractBarPane Class

The class IlvAbstractBarPane defines a pane specifically designed for handling toolbars and menu bars. This class is a subclass of the IlvGraphicPane class which encapsulates an IlvAbstractBar object. It is responsible for managing the bar orientation.

When a docking bar is docked, its direction must change according to its new location.

The following illustrations show the same toolbar oriented horizontally and vertically.

Horizontal Toolbar

Vertical Toolbar

Note

This class manages its own subclass of IlvDockable and, therefore, must not be modified.

Customizing Docking Bars

The IlvAbstractBarPane class has virtual member functions that you can redefine to meet your specific needs:

  • orientationChangedIs called each time the orientation of the toolbar encapsulated by the pane changes.

The following example shows a subclass of the IlvAbstractBarPane class that changes the orientation of the labels according to the bar orientation:

class MyMainMenuBarPane

: public IlvAbstractBarPane

{

public:

MyMainMenuBarPane(const char* name, IlvAbstractBar* bar)

: IlvAbstractBarPane(name, bar) {}

virtual void setContainer(IlvPanedContainer* container)

{

IlvAbstractBarPane::setContainer(container);

if (container)

checkLabelOrientation();

}

virtual void orientationChanged()

{

checkLabelOrientation();

IlvAbstractBarPane::orientationChanged();

}

void checkLabelOrientation()

{

IlvDockable* dockable = IlvDockable::GetDockable(this);

getBar()->setLabelOrientation(dockable && dockable->isDocked()

? getBar()->getOrientation()

: IlvHorizontal,

IlFalse,

IlFalse);

}

};

The checkLabelOrientation member function is called each time the bar orientation changes. It sets the orientation of the bar labels to the bar orientation if the pane is docked, or to IlvHorizontal if the bar is undocked.