summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/PaneDockingWindow.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/PaneDockingWindow.hxx')
-rw-r--r--sd/source/ui/inc/PaneDockingWindow.hxx150
1 files changed, 150 insertions, 0 deletions
diff --git a/sd/source/ui/inc/PaneDockingWindow.hxx b/sd/source/ui/inc/PaneDockingWindow.hxx
new file mode 100644
index 000000000000..138e5c4132c5
--- /dev/null
+++ b/sd/source/ui/inc/PaneDockingWindow.hxx
@@ -0,0 +1,150 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: PaneDockingWindow.hxx,v $
+ * $Revision: 1.12 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SD_PANE_DOCKING_WINDOW_HXX
+#define SD_PANE_DOCKING_WINDOW_HXX
+
+#include <sfx2/dockwin.hxx>
+#include <sfx2/viewfrm.hxx>
+
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+
+class ToolBox;
+
+namespace sd {
+
+class PaneDockingWindow
+ : public SfxDockingWindow
+{
+public:
+ /** Create a new docking window that will be displayed in the specified
+ pane.
+ The constructor will determine the ViewShellBase via the given
+ bindings and tell its PaneManager about the new window. It will ask
+ the PaneManager for a window title.
+ @param pBindings
+ Used, among others, to determine the ViewShellBase and
+ PaneManager that manage the new docking window.
+ @param pChildWindow
+ This child window is the logical container for the new docking
+ window.
+ @param pParent
+ The parent window of the new docking window.
+ @param rResId
+ The resource is used to determine initial size and attributes.
+ @param ePane
+ The pane in which to show the docking window.
+ */
+ PaneDockingWindow (
+ SfxBindings *pBindings,
+ SfxChildWindow *pChildWindow,
+ ::Window* pParent,
+ const ResId& rResId,
+ const ::rtl::OUString& rsPaneURL,
+ const ::rtl::OUString& rsTitle);
+
+ virtual ~PaneDockingWindow (void);
+
+ virtual void Paint (const Rectangle& rRectangle);
+ virtual void Resize (void);
+
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+ /** Initializing the title tool box either creates a new title tool box
+ or clears all items from an existing one. A closer is added as only
+ item.
+ */
+ void InitializeTitleToolBox (void);
+
+ /** Add a top down menu to the title bar or rather the top-level menu
+ entry. The given callback is called when the menu is clicked and it
+ is the task of the callback to show the menu.
+ @return
+ The id of the new menu is returned. It can be compared by the
+ callback to the value of GetCurItemId() when called at the given
+ tool box.
+ */
+ USHORT AddMenu (const String& rsMenuName, ULONG nHelpId, const Link& rCallback);
+
+ /** Set the title of the docking window to the given string. Use this
+ method when the title is not yet known at the time of construction
+ or can not be passed to the constructor.
+ */
+ void SetTitle (const String& rsTitle);
+
+ ::Window* GetContentWindow (void);
+
+ ::boost::shared_ptr<ToolBox> GetTitleToolBox (void) const;
+
+private:
+ /** The pane which is represented by the docking window.
+ */
+ ::rtl::OUString msPaneURL;
+
+ /** Title that is shown at the top of the docking window.
+ */
+ ::rtl::OUString msTitle;
+
+ /** The tool box that is displayed in the window title area contains
+ menus and the closer button.
+ */
+ ::boost::shared_ptr<ToolBox> mpTitleToolBox;
+
+ /** 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 maBorder;
+
+ sal_uInt16 mnChildWindowId;
+
+ ::boost::scoped_ptr< ::Window> mpContentWindow;
+
+ /** Remember that a layout is pending, i.e. Resize() has been called
+ since the last Paint().
+ */
+ bool mbIsLayoutPending;
+
+ DECL_LINK(ToolboxSelectHandler, ToolBox*);
+
+ /** This does the actual placing and sizing of the title bar and the
+ content window after the size of the docking window has changed.
+ This method is called from withing the Paint() method when since its
+ last invocation the size of the docking window has changed.
+ */
+ void Layout (void);
+};
+
+} // end of namespace ::sd
+
+#endif