summaryrefslogtreecommitdiff
path: root/sd/source/ui/toolpanel/SubToolPanel.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/toolpanel/SubToolPanel.cxx')
-rw-r--r--sd/source/ui/toolpanel/SubToolPanel.cxx386
1 files changed, 0 insertions, 386 deletions
diff --git a/sd/source/ui/toolpanel/SubToolPanel.cxx b/sd/source/ui/toolpanel/SubToolPanel.cxx
deleted file mode 100644
index 18807152c2a0..000000000000
--- a/sd/source/ui/toolpanel/SubToolPanel.cxx
+++ /dev/null
@@ -1,386 +0,0 @@
-/**************************************************************
- *
- * 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.
- *
- *************************************************************/
-
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "taskpane/SubToolPanel.hxx"
-
-#include "TaskPaneFocusManager.hxx"
-#include "taskpane/TitleBar.hxx"
-#include "taskpane/TitledControl.hxx"
-#include "taskpane/ControlContainer.hxx"
-#include "AccessibleTreeNode.hxx"
-#include <vcl/decoview.hxx>
-#include <vcl/svapp.hxx>
-
-namespace sd { namespace toolpanel {
-
-
-SubToolPanel::SubToolPanel (
- Window& i_rParentWindow)
- : Control (&i_rParentWindow, WB_DIALOGCONTROL),
- TreeNode(NULL),
- maWindowFiller(this),
- mbIsRearrangePending(true),
- mbIsLayoutPending(true),
- mnChildrenWidth(0),
- mnVerticalBorder(0),
- mnVerticalGap(3),
- mnHorizontalBorder(2)
-{
- SetAccessibleName (
- ::rtl::OUString::createFromAscii("Sub Task Panel"));
- mpControlContainer->SetMultiSelection (true);
-
- SetBorderStyle (WINDOW_BORDER_NORMAL);
- SetMapMode (MapMode(MAP_PIXEL));
-
- // To reduce flickering during repaints make the container windows
- // transparent and rely on their children to paint the whole area.
- SetBackground(Wallpaper());
- maWindowFiller.SetBackground(
- Application::GetSettings().GetStyleSettings().GetWindowColor());
-}
-
-
-
-
-SubToolPanel::~SubToolPanel (void)
-{
- sal_uInt32 nCount = mpControlContainer->GetControlCount();
- for (sal_uInt32 nIndex=0; nIndex<nCount; nIndex++)
- {
- TitledControl* pControl = static_cast<TitledControl*>(
- mpControlContainer->GetControl(nIndex));
- pControl->GetControl()->GetWindow()->RemoveEventListener(
- LINK(this,SubToolPanel,WindowEventListener));
- }
- mpControlContainer->DeleteChildren();
-}
-
-
-
-
-void SubToolPanel::Paint (const Rectangle& rRect)
-{
- if (mbIsRearrangePending)
- Rearrange();
- if (mbIsLayoutPending)
- LayoutChildren();
- ::Window::Paint (rRect);
-
- // Paint the outer border and the space between every two children.
- Color aOriginalLineColor (GetLineColor());
- Color aOriginalFillColor (GetFillColor());
-
- SetLineColor ();
- SetFillColor (GetSettings().GetStyleSettings().GetWindowColor());
-
- Size aSize (GetOutputSizePixel());
- // Paint left and right vertical border.
- Rectangle aVerticalArea (
- Point(0,0),
- Size(mnHorizontalBorder,aSize.Height()));
- DrawRect (aVerticalArea);
- aVerticalArea.Right() += mnHorizontalBorder + mnChildrenWidth - 1;
- aVerticalArea.Left() = aVerticalArea.Right() + mnHorizontalBorder;
- DrawRect (aVerticalArea);
-
- // Paint horizontal stripes.
- Rectangle aStripeArea (
- Point (mnHorizontalBorder,0),
- Size(mnChildrenWidth,0));
- StripeList::const_iterator iStripe;
- for (iStripe=maStripeList.begin(); iStripe!=maStripeList.end(); iStripe++)
- {
- aStripeArea.Top() = iStripe->first;
- aStripeArea.Bottom() = iStripe->second;
- if (aStripeArea.Bottom() < 0)
- continue;
- if (aStripeArea.Top() >= aSize.Height())
- break;
- DrawRect (aStripeArea);
- }
-
- SetLineColor (aOriginalLineColor);
- SetFillColor (aOriginalFillColor);
-}
-
-
-
-
-void SubToolPanel::Resize (void)
-{
- ::Window::Resize();
- mbIsRearrangePending = true;
- mbIsLayoutPending = true;
-}
-
-
-
-
-void SubToolPanel::RequestResize (void)
-{
- mbIsRearrangePending = true;
- mbIsLayoutPending = true;
- Invalidate();
-}
-
-
-
-
-Size SubToolPanel::GetPreferredSize (void)
-{
- return GetRequiredSize();
-}
-
-
-
-
-sal_Int32 SubToolPanel::GetPreferredWidth (sal_Int32 )
-{
- return GetPreferredSize().Width();
-}
-
-
-
-
-sal_Int32 SubToolPanel::GetPreferredHeight (sal_Int32 )
-{
- return GetPreferredSize().Height();
-}
-
-
-
-
-bool SubToolPanel::IsResizable (void)
-{
- return true;
-}
-
-
-
-
-::Window* SubToolPanel::GetWindow (void)
-{
- return this;
-}
-
-
-
-
-sal_Int32 SubToolPanel::GetMinimumWidth (void)
-{
- return TreeNode::GetMinimumWidth();
-}
-
-
-
-
-void SubToolPanel::ExpandControl (
- TreeNode* pControl,
- bool bExpansionState)
-{
- // Toggle expand status.
- pControl->Expand (bExpansionState);
-
- Rearrange ();
- Invalidate ();
-}
-
-
-
-
-/** This control shows an expansion bar for every control and in a
- separate area below that expansion area it shows all controls each
- with its title bar. When there is not enough space then show a
- scroll bar in the control area.
-*/
-void SubToolPanel::Rearrange (void)
-{
- Size aRequiredSize (GetRequiredSize());
- if (aRequiredSize.Width()>0 && aRequiredSize.Height()>0)
- {
- Size aAvailableSize (GetOutputSizePixel());
-
- // Make the children at least as wide as the sub tool panel.
- if (aRequiredSize.Width() < aAvailableSize.Width())
- aRequiredSize.Width() = aAvailableSize.Width();
- mnChildrenWidth = -2*mnHorizontalBorder;
- mnChildrenWidth += aAvailableSize.Width();
-
- LayoutChildren();
-
- mbIsRearrangePending = false;
- }
-}
-
-
-
-
-Size SubToolPanel::GetRequiredSize (void)
-{
- // First determine the width of the children. This is the maximum of
- // the current window width and the individual minimum widths of the
- // children.
- int nChildrenWidth (GetSizePixel().Width());
- unsigned int nCount = mpControlContainer->GetControlCount();
- unsigned int nIndex;
- for (nIndex=0; nIndex<nCount; nIndex++)
- {
- TreeNode* pChild = mpControlContainer->GetControl (nIndex);
- int nMinimumWidth (pChild->GetMinimumWidth());
- if (nMinimumWidth > nChildrenWidth)
- nChildrenWidth = nMinimumWidth;
- }
-
- // Determine the accumulated width of all children when scaled to the
- // minimum width.
- nChildrenWidth -= 2*mnHorizontalBorder;
- Size aTotalSize (nChildrenWidth,
- 2*mnVerticalBorder + (nCount-1) * mnVerticalGap);
- for (nIndex=0; nIndex<nCount; nIndex++)
- {
- TreeNode* pChild = mpControlContainer->GetControl (nIndex);
- sal_Int32 nHeight = pChild->GetPreferredHeight(nChildrenWidth);
- aTotalSize.Height() += nHeight;
- }
-
- return aTotalSize;
-}
-
-
-
-
-sal_Int32 SubToolPanel::LayoutChildren (void)
-{
- // Determine vertical space that can be distributed to sizable children.
- unsigned int nCount (mpControlContainer->GetControlCount());
- unsigned int nResizableCount = 0;
- int nAvailableHeight = GetSizePixel().Height() - 2*mnVerticalBorder;
- unsigned int nIndex;
- for (nIndex=0; nIndex<nCount; nIndex++)
- {
- TreeNode* pChild = mpControlContainer->GetControl (nIndex);
- int nControlHeight = pChild->GetPreferredHeight(mnChildrenWidth);
- if (pChild->IsResizable())
- nResizableCount++;
- else
- nAvailableHeight -= nControlHeight;
- }
-
- maStripeList.clear();
-
- Point aPosition (0,0);
- aPosition.X() += mnHorizontalBorder;
- maStripeList.push_back( ::std::pair<int,int>(
- aPosition.Y(),
- aPosition.Y() + mnVerticalBorder - 1));
- aPosition.Y() += mnVerticalBorder;
-
- // Place the controls one over the other.
- for (nIndex=0; nIndex<nCount; nIndex++)
- {
- if (nIndex > 0)
- {
- maStripeList.push_back( ::std::pair<int,int>(
- aPosition.Y(),
- aPosition.Y() + mnVerticalGap - 1));
- aPosition.Y() += mnVerticalGap;
- }
- TreeNode* pChild = mpControlContainer->GetControl (nIndex);
- int nControlHeight = pChild->GetPreferredHeight(mnChildrenWidth);
- if (pChild->IsResizable())
- {
- nControlHeight = nAvailableHeight / nResizableCount;
- nResizableCount--;
- }
- nAvailableHeight -= nControlHeight;
- pChild->GetWindow()->SetPosSizePixel(
- aPosition,
- Size(mnChildrenWidth, nControlHeight));
- aPosition.Y() += nControlHeight;
- }
-
- // If the children do not cover their parent window completely
- // (regarding the height) we put a filler below that is responsible for
- // painting the remaining space.
- int nWindowHeight = GetSizePixel().Height();
- if (aPosition.Y() < nWindowHeight)
- {
- maWindowFiller.SetPosSizePixel (
- aPosition,
- Size(mnChildrenWidth, nWindowHeight-aPosition.Y()));
- maStripeList.push_back( ::std::pair<int,int>(
- aPosition.Y(),
- nWindowHeight-1));
- // maScrollWindowFiller.Show();
- aPosition.Y() = nWindowHeight;
- }
- else
- maWindowFiller.Hide();
-
- aPosition.Y() += mnVerticalBorder;
- mbIsLayoutPending = false;
-
- return aPosition.Y();
-}
-
-
-
-
-IMPL_LINK(SubToolPanel, WindowEventListener, VclSimpleEvent*, pEvent)
-{
- if (pEvent!=NULL && pEvent->ISA(VclWindowEvent))
- {
- VclWindowEvent* pWindowEvent = static_cast<VclWindowEvent*>(pEvent);
- switch (pWindowEvent->GetId())
- {
- case VCLEVENT_WINDOW_SHOW:
- case VCLEVENT_WINDOW_HIDE:
- case VCLEVENT_WINDOW_ACTIVATE:
- case VCLEVENT_WINDOW_RESIZE:
- RequestResize();
- break;
- }
- }
- return 0;
-}
-
-
-
-
-::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessible> SubToolPanel::CreateAccessibleObject (
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::accessibility::XAccessible>& )
-{
- return new ::accessibility::AccessibleTreeNode (
- *this,
- ::rtl::OUString::createFromAscii("Sub Task Panel"),
- ::rtl::OUString::createFromAscii("Sub Task Panel"),
- ::com::sun::star::accessibility::AccessibleRole::PANEL);
-}
-
-} } // end of namespace ::sd::toolpanel