blob: 39a554f4df4afda598243184a1326c421a55807e [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SFX_TITLEDOCKWIN_HXX
#define SFX_TITLEDOCKWIN_HXX
#include "sfx2/dllapi.h"
#include "sfx2/dockwin.hxx"
#include <vcl/toolbox.hxx>
#include <tools/svborder.hxx>
//......................................................................................................................
namespace sfx2
{
//......................................................................................................................
//==================================================================================================================
//= TitledDockingWindow
//==================================================================================================================
class SFX2_DLLPUBLIC TitledDockingWindow : public SfxDockingWindow
{
public:
TitledDockingWindow(
SfxBindings* i_pBindings, SfxChildWindow* i_pChildWindow,
Window* i_pParent, WinBits i_nStyle = 0
);
TitledDockingWindow( SfxBindings* i_pBindings, SfxChildWindow* i_pChildWindow,
Window* i_pParent, const ResId& i_rResId
);
virtual ~TitledDockingWindow();
/** sets a title to be displayed in the docking window
*/
void SetTitle( const String& i_rTitle );
/** returns the current title displayed in the docking window
Note that if you never called SetTitle before, then this method will not return an empty string,
but the window text (Window::GetText), since this is what is displayed as title then.
*/
String GetTitle() const;
/** adds a drop down item to the toolbox. Usually, this is used to add some kind of menu to the toolbox.
@param i_rItemText
the text to display for the item
@param i_nHelpId
the help ID for the new toolbox item
@param i_rCallback
the callback to invoke when the drop item has been clicked
@return
the ID of the newly created toolbox item
*/
sal_uInt16 AddDropDownToolBoxItem( const String& i_rItemText, const rtl::OString& i_nHelpId, const Link& i_rCallback )
{
return impl_addDropDownToolBoxItem( i_rItemText, i_nHelpId, i_rCallback );
}
void SetEndDockingHdl( const Link& i_rEndDockingHdl ) { m_aEndDockingHdl = i_rEndDockingHdl; }
const Link& GetEndDockingHdl() const { return m_aEndDockingHdl; }
/** resets the toolbox. Upon return, the only item in the toolbox is the closer.
*/
void ResetToolBox()
{
impl_resetToolBox();
}
/** returns the content window, which is to be used as parent window for any content to be displayed
in the docking window.
*/
::Window& GetContentWindow() { return m_aContentWindow; }
const ::Window& GetContentWindow() const { return m_aContentWindow; }
ToolBox& GetToolBox() { return m_aToolbox; }
const ToolBox& GetToolBox() const { return m_aToolbox; }
/** Return the border that is painted around the inner window as
decoration.
*/
SvBorder GetDecorationBorder (void) const { return m_aBorder; }
protected:
// Window overridables
virtual void Paint( const Rectangle& i_rArea );
virtual void Resize();
virtual void StateChanged( StateChangedType i_nType );
virtual void DataChanged( const DataChangedEvent& i_rDataChangedEvent );
virtual void SetText( const String& i_rText );
// DockingWindow overridables
void EndDocking( const Rectangle& rRect, sal_Bool bFloatMode );
// own overridables
virtual void onLayoutDone();
protected:
/** internal version of ResetToolBox
*/
void impl_resetToolBox();
/** internal version of AddDropDownToolBoxItem
*/
sal_uInt16 impl_addDropDownToolBoxItem( const String& i_rItemText, const rtl::OString& i_nHelpId, const Link& i_rCallback );
/** returns the current title.
If no title has been set via SetTitle, then the window text (Window::GetText) is returned.
*/
String impl_getTitle() const;
private:
DECL_LINK( OnToolboxItemSelected, ToolBox* );
void impl_construct();
void impl_layout();
void impl_scheduleLayout();
private:
String m_sTitle;
ToolBox m_aToolbox;
Window m_aContentWindow;
Link m_aEndDockingHdl;
/** The border that is painted arround the inner window. The bevel
shadow lines are part of the border, so where the border is 0 no
such line is painted.
*/
SvBorder m_aBorder;
/** Remember that a layout is pending, i.e. Resize() has been called
since the last Paint().
*/
bool m_bLayoutPending;
/** Height of the title bar. Calculated in impl_layout().
*/
int m_nTitleBarHeight;
};
//......................................................................................................................
} // namespace sfx2
//......................................................................................................................
#endif // SFX_TITLEDOCKWIN_HXX