summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/taskpane/TitleBar.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/taskpane/TitleBar.hxx')
-rwxr-xr-xsd/source/ui/inc/taskpane/TitleBar.hxx169
1 files changed, 169 insertions, 0 deletions
diff --git a/sd/source/ui/inc/taskpane/TitleBar.hxx b/sd/source/ui/inc/taskpane/TitleBar.hxx
new file mode 100755
index 000000000000..995117516529
--- /dev/null
+++ b/sd/source/ui/inc/taskpane/TitleBar.hxx
@@ -0,0 +1,169 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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_TASKPANE_TITLE_BAR_HXX
+#define SD_TASKPANE_TITLE_BAR_HXX
+
+#include "taskpane/TaskPaneTreeNode.hxx"
+#include <vcl/image.hxx>
+#include <tools/string.hxx>
+#include <vcl/window.hxx>
+#include <memory>
+
+class Rectangle;
+class String;
+class VirtualDevice;
+
+namespace sd { namespace toolpanel {
+
+
+/** The title bar above a control in a sub tool panel.
+
+ <p>The title bar shows two kinds of indicators: 1) Expansion is
+ displayed by two sets of two bitmaps, a triangle pointing to the right
+ resp. a minus in a square indicates that the control is collapsed, a
+ triangle pointing down resp. a plus in a square stands for an expanded
+ control. 2) Keyboard focus is indicated by a dotted rectangle.
+*/
+class TitleBar
+ : public ::Window,
+ public TreeNode
+{
+public:
+ enum TitleBarType {
+ TBT_SUB_CONTROL_HEADLINE
+ };
+
+ /** Create a new title bar whose content, the given title string,
+ will be formatted according to the given type.
+ */
+ TitleBar (
+ ::Window* pParent,
+ const String& rsTitle,
+ TitleBarType eType,
+ bool bIsExpandable);
+ virtual ~TitleBar (void);
+
+ virtual Size GetPreferredSize (void);
+ virtual sal_Int32 GetPreferredWidth (sal_Int32 nHeight);
+ virtual sal_Int32 GetPreferredHeight (sal_Int32 nWidth);
+ virtual bool IsResizable (void);
+ virtual ::Window* GetWindow (void);
+ virtual sal_Int32 GetMinimumWidth (void);
+
+ virtual void Paint (const Rectangle& rBoundingBox);
+ virtual bool Expand (bool bFlag = true);
+ virtual bool IsExpanded (void) const;
+ virtual void SetEnabledState(bool bFlag);
+ virtual void GetFocus (void);
+ virtual void LoseFocus (void);
+
+ virtual void MouseMove(const MouseEvent& rEvent);
+ /** Empty implementation prevents forwarding to docking window.
+ */
+ virtual void MouseButtonDown (const MouseEvent& rEvent);
+ /** Empty implementation prevents forwarding to docking window.
+ */
+ virtual void MouseButtonUp (const MouseEvent& rEvent);
+
+ virtual void DataChanged (const DataChangedEvent& rEvent);
+
+ String GetTitle (void) const;
+
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > CreateAccessibleObject (
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible>& rxParent);
+
+private:
+ TitleBarType meType;
+ String msTitle;
+ bool mbExpanded;
+ bool mbFocused;
+ // Size of the bounding box that encloses the title string.
+ ::std::auto_ptr<VirtualDevice> mpDevice;
+ bool mbIsExpandable;
+
+ /** Return whether this TitleBar object has an expansion indicator
+ bitmap. It is safe to call GetExpansionIndicator() when this method
+ returns <FALSE/> but unnecessary.
+ */
+ bool HasExpansionIndicator (void) const;
+
+ /** Return the image of the expansion indicator.
+ @return
+ When there is no expansion indictor for this TitleBar object,
+ then an empty Image is returned. You better call
+ HasExpansionIndicator() to prevent this.
+ */
+ Image GetExpansionIndicator (void) const;
+
+ /** Calculate the bounding box of the title text. This takes into
+ account indentation due to an expansion indicator and the given
+ available width. When the text can not be displayed on one line, it
+ is broken into multiple lines.
+ @param nAvailableWidth
+ When 0 is given then the natural text width is used, i.e. the
+ text is not broken into multiple lines.
+ */
+ Rectangle CalculateTextBoundingBox (
+ int nAvailableWidth,
+ bool bEmphasizeExpanded);
+
+ /** Add some space to the given text box and return the bounding box of
+ the title bar.
+ */
+ Rectangle CalculateTitleBarBox (
+ const Rectangle& rTextBox,
+ int nTitleBarWidth);
+
+ void PaintSubPanelHeadLineBar (void);
+
+ void PaintBackground (const Rectangle& rTextBox);
+
+ /// Paint a focus indicator that encloses the given rectangle.
+ void PaintFocusIndicator (const Rectangle& rIndicatorBox);
+
+ Rectangle PaintExpansionIndicator (const Rectangle& rTextBox);
+
+ void PaintText (const Rectangle& rTextBox);
+
+ USHORT GetTextStyle (void);
+
+ const static int snIndentationWidth;
+
+ // Default constructor, copy constructor, and assignment are not supported.
+ TitleBar (void);
+ TitleBar (const TitleBar&);
+ TitleBar& operator= (const TitleBar&);
+
+ using Window::GetWindow;
+};
+
+} } // end of namespace ::sd::toolpanel
+
+#endif