Author: af
Date: Tue Apr  2 12:55:46 2013
New Revision: 1463515

URL: http://svn.apache.org/r1463515
Log:
i121961: Added navigator to sidebar for Writer.

Modified:
    openoffice/branches/sidebar/main/sw/source/ui/sidebar/SwPanelFactory.cxx
    openoffice/branches/sidebar/main/sw/source/ui/utlui/navipi.cxx

Modified: 
openoffice/branches/sidebar/main/sw/source/ui/sidebar/SwPanelFactory.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sw/source/ui/sidebar/SwPanelFactory.cxx?rev=1463515&r1=1463514&r2=1463515&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sw/source/ui/sidebar/SwPanelFactory.cxx 
(original)
+++ openoffice/branches/sidebar/main/sw/source/ui/sidebar/SwPanelFactory.cxx 
Tue Apr  2 12:55:46 2013
@@ -25,6 +25,7 @@
 
 #include <PagePropertyPanel.hxx>
 #include <WrapPropertyPanel.hxx>
+#include <navipi.hxx>
 
 #include <sfx2/sidebar/SidebarPanelBase.hxx>
 #include <sfx2/sfxbasecontroller.hxx>
@@ -132,6 +133,15 @@ Reference<ui::XUIElement> SAL_CALL SwPan
             pPanel,
             ui::LayoutSize(-1,-1,-1));
     }
+    else if (DoesResourceEndWith("/NavigatorPanel"))
+    {
+        Window* pPanel = new SwNavigationPI(pBindings, NULL, pParentWindow);
+        xElement = sfx2::sidebar::SidebarPanelBase::Create(
+            rsResourceURL,
+            xFrame,
+            pPanel,
+            ui::LayoutSize(0,-1,-1));
+    }
 #undef DoesResourceEndWith
 
     return xElement;

Modified: openoffice/branches/sidebar/main/sw/source/ui/utlui/navipi.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sw/source/ui/utlui/navipi.cxx?rev=1463515&r1=1463514&r2=1463515&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sw/source/ui/utlui/navipi.cxx (original)
+++ openoffice/branches/sidebar/main/sw/source/ui/utlui/navipi.cxx Tue Apr  2 
12:55:46 2013
@@ -283,18 +283,18 @@ IMPL_LINK( SwNavigationPI, ToolBoxSelect
                break;
                case FN_SHOW_CONTENT_BOX:
                case FN_SELECT_CONTENT:
-               if(pContextWin->GetFloatingWindow())
-               {
-                       if(_IsZoomedIn() )
-                       {
-                               _ZoomOut();
-                       }
-                       else
-                       {
-                               _ZoomIn();
-                       }
-               }
-               return sal_True;
+            if(pContextWin!=NULL && pContextWin->GetFloatingWindow()!=NULL)
+            {
+                if(_IsZoomedIn() )
+                {
+                    _ZoomOut();
+                }
+                else
+                {
+                    _ZoomIn();
+                }
+            }
+            return sal_True;
                //break;
                // Funktionen, die eine direkte Aktion ausloesen
 
@@ -624,7 +624,7 @@ void SwNavigationPI::MakeMark()
 
 void SwNavigationPI::GotoPage()
 {
-       if ( pContextWin->GetFloatingWindow() && 
pContextWin->GetFloatingWindow()->IsRollUp())
+       if (pContextWin && pContextWin->GetFloatingWindow() && 
pContextWin->GetFloatingWindow()->IsRollUp())
                _ZoomIn();
        if(IsGlobalMode())
                ToggleTree();
@@ -640,14 +640,15 @@ void SwNavigationPI::_ZoomOut()
 {
        if (_IsZoomedIn())
        {
-               FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+               FloatingWindow* pFloat = pContextWin!=NULL ? 
pContextWin->GetFloatingWindow() : NULL;
                bIsZoomedIn = sal_False;
                Size aSz(GetOutputSizePixel());
                aSz.Height() = nZoomOut;
                Size aMinOutSizePixel = 
((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
                ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
                                                        
aMinOutSizePixel.Width(),nZoomOutInit));
-               pFloat->SetOutputSizePixel(aSz);
+        if (pFloat != NULL)
+            pFloat->SetOutputSizePixel(aSz);
                FillBox();
                if(IsGlobalMode())
                {
@@ -672,29 +673,32 @@ void SwNavigationPI::_ZoomOut()
 
 void SwNavigationPI::_ZoomIn()
 {
-       FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
-       if (pFloat &&
-               (!_IsZoomedIn() || ( 
pContextWin->GetFloatingWindow()->IsRollUp())))
-       {
-               aContentTree.HideTree();
-               aDocListBox.Hide();
-               aGlobalTree.HideTree();
-               bIsZoomedIn = sal_True;
-               Size aSz(GetOutputSizePixel());
-               if( aSz.Height() > nZoomIn )
-                       nZoomOut = ( short ) aSz.Height();
-
-               aSz.Height() = nZoomIn;
-               Size aMinOutSizePixel = 
((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
-               ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
-                                                       
aMinOutSizePixel.Width(), aSz.Height()));
-               pFloat->SetOutputSizePixel(aSz);
-               SvLBoxEntry* pFirst = aContentTree.FirstSelected();
-               if(pFirst)
-                       aContentTree.Select(pFirst, sal_True); // toolbox 
enablen
-               pConfig->SetSmall( sal_True );
-               aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_False);
-       }
+    if (pContextWin != NULL)
+    {
+        FloatingWindow* pFloat = pContextWin->GetFloatingWindow();
+        if (pFloat &&
+            (!_IsZoomedIn() || ( 
pContextWin->GetFloatingWindow()->IsRollUp())))
+        {
+            aContentTree.HideTree();
+            aDocListBox.Hide();
+            aGlobalTree.HideTree();
+            bIsZoomedIn = sal_True;
+            Size aSz(GetOutputSizePixel());
+            if( aSz.Height() > nZoomIn )
+                nZoomOut = ( short ) aSz.Height();
+
+            aSz.Height() = nZoomIn;
+            Size aMinOutSizePixel = 
((SfxDockingWindow*)GetParent())->GetMinOutputSizePixel();
+            ((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(Size(
+                    aMinOutSizePixel.Width(), aSz.Height()));
+            pFloat->SetOutputSizePixel(aSz);
+            SvLBoxEntry* pFirst = aContentTree.FirstSelected();
+            if(pFirst)
+                aContentTree.Select(pFirst, sal_True); // toolbox enablen
+            pConfig->SetSmall( sal_True );
+            aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_False);
+        }
+    }
 }
 /*------------------------------------------------------------------------
  Beschreibung:
@@ -703,48 +707,51 @@ void SwNavigationPI::_ZoomIn()
 void SwNavigationPI::Resize()
 {
        Window* pParent = GetParent();
-       FloatingWindow* pFloat =  
((DockingWindow*)pParent)->GetFloatingWindow();
-       Size aNewSize;
-       if( !_IsZoomedIn() )
-       {
-        //change the minimum width depending on the dock status
-        Size aMinOutSizePixel = 
((SfxDockingWindow*)pParent)->GetMinOutputSizePixel();
-        if( pFloat)
-               {
-                       aNewSize = pFloat->GetOutputSizePixel();
-            aMinOutSizePixel.Width() = nWishWidth;
-            aMinOutSizePixel.Height() = _IsZoomedIn() ? nZoomIn : nZoomOutInit;
-        }
-               else
-               {
-                       aNewSize = pParent->GetOutputSizePixel();
-            aMinOutSizePixel.Width() = 0;
-            aMinOutSizePixel.Height() = 0;
-        }
-        
((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel(aMinOutSizePixel);
+    if( !_IsZoomedIn() )
+    {
+        Size aNewSize (pParent->GetOutputSizePixel());
 
+        SfxDockingWindow* pDockingParent = 
dynamic_cast<SfxDockingWindow*>(pParent);
+        if (pDockingParent != NULL)
+        {
+            FloatingWindow* pFloat =  pDockingParent->GetFloatingWindow();
+            //change the minimum width depending on the dock status
+            Size aMinOutSizePixel = pDockingParent->GetMinOutputSizePixel();
+            if( pFloat)
+            {
+                aNewSize = pFloat->GetOutputSizePixel();
+                aMinOutSizePixel.Width() = nWishWidth;
+                aMinOutSizePixel.Height() = _IsZoomedIn() ? nZoomIn : 
nZoomOutInit;
+            }
+            else
+            {
+                aMinOutSizePixel.Width() = 0;
+                aMinOutSizePixel.Height() = 0;
+            }
+            pDockingParent->SetMinOutputSizePixel(aMinOutSizePixel);
+        }
+        
         const Point aPos = aContentTree.GetPosPixel();
-               Point aLBPos = aDocListBox.GetPosPixel();
-               long nDist = aPos.X();
-               aNewSize.Height() -= (aPos.Y() + aPos.X() + nDocLBIniHeight + 
nDist);
-               aNewSize.Width() -= 2 * nDist;
-               aLBPos.Y() = aPos.Y() + aNewSize.Height() + nDist;
-               aDocListBox.Show(!aGlobalTree.IsVisible() && aLBPos.Y() > 
aPos.Y() );
-
-               Size aDocLBSz = aDocListBox.GetSizePixel();
-               aDocLBSz.Width() = aNewSize.Width();
-               if(aNewSize.Height() < 0)
-                       aDocLBSz.Height() = 0;
-               else
-                       aDocLBSz.Height() = nDocLBIniHeight;
-               aContentTree.SetSizePixel(aNewSize);
-               // GlobalTree faengt weiter oben an und reicht bis ganz unten
-               aNewSize.Height() += (nDist + nDocLBIniHeight + aPos.Y() - 
aGlobalTree.GetPosPixel().Y());
-               aGlobalTree.SetSizePixel(aNewSize);
-               aDocListBox.SetPosSizePixel( aLBPos.X(), aLBPos.Y(),
-                                                                        
aDocLBSz.Width(), aDocLBSz.Height(),
-                                                                         
WINDOW_POSSIZE_X|WINDOW_POSSIZE_Y|WINDOW_POSSIZE_WIDTH);
-
+        Point aLBPos = aDocListBox.GetPosPixel();
+        long nDist = aPos.X();
+        aNewSize.Height() -= (aPos.Y() + aPos.X() + nDocLBIniHeight + nDist);
+        aNewSize.Width() -= 2 * nDist;
+        aLBPos.Y() = aPos.Y() + aNewSize.Height() + nDist;
+        aDocListBox.Show(!aGlobalTree.IsVisible() && aLBPos.Y() > aPos.Y() );
+
+        Size aDocLBSz = aDocListBox.GetSizePixel();
+        aDocLBSz.Width() = aNewSize.Width();
+        if(aNewSize.Height() < 0)
+            aDocLBSz.Height() = 0;
+        else
+            aDocLBSz.Height() = nDocLBIniHeight;
+        aContentTree.SetSizePixel(aNewSize);
+        // GlobalTree faengt weiter oben an und reicht bis ganz unten
+        aNewSize.Height() += (nDist + nDocLBIniHeight + aPos.Y() - 
aGlobalTree.GetPosPixel().Y());
+        aGlobalTree.SetSizePixel(aNewSize);
+        aDocListBox.SetPosSizePixel( aLBPos.X(), aLBPos.Y(),
+            aDocLBSz.Width(), aDocLBSz.Height(),
+            WINDOW_POSSIZE_X|WINDOW_POSSIZE_Y|WINDOW_POSSIZE_WIDTH);
        }
 }
 
@@ -851,21 +858,29 @@ SwNavigationPI::SwNavigationPI( SfxBindi
        nWishWidth = aContentToolboxSize.Width();
        nWishWidth += 2 * aContentToolBox.GetPosPixel().X();
 
-    FloatingWindow* pFloat =  ((DockingWindow*)pParent)->GetFloatingWindow();
-    Size aMinSize(pFloat ? nWishWidth : 0, pFloat ? nZoomOutInit : 0);
-       ((SfxDockingWindow*)pParent)->SetMinOutputSizePixel(aMinSize);
-       SetOutputSizePixel( Size( nWishWidth, nZoomOutInit));
-       Size aTmpParentSize(((SfxDockingWindow*)pParent)->GetSizePixel());
-       if(
-        (
-           aTmpParentSize.Width() < aMinSize.Width() ||
-           aTmpParentSize.Height() < aMinSize.Height() 
-        )
-        &&
-        ((SfxDockingWindow*)pParent)->GetFloatingWindow() &&
-        !((SfxDockingWindow*)pParent)->GetFloatingWindow()->IsRollUp()
-      )
-           ((SfxDockingWindow*)pParent)->SetOutputSizePixel(aMinSize);
+    DockingWindow* pDockingParent = dynamic_cast<DockingWindow*>(pParent);
+    if (pDockingParent != NULL)
+    {
+        FloatingWindow* pFloat =  pDockingParent->GetFloatingWindow();
+        Size aMinSize(pFloat ? nWishWidth : 0, pFloat ? nZoomOutInit : 0);
+        pDockingParent->SetMinOutputSizePixel(aMinSize);
+        SetOutputSizePixel( Size( nWishWidth, nZoomOutInit));
+
+        SfxDockingWindow* pSfxDockingParent = 
dynamic_cast<SfxDockingWindow*>(pParent);
+        if (pSfxDockingParent != NULL)
+        {
+            Size aTmpParentSize(pSfxDockingParent->GetSizePixel());
+            if (aTmpParentSize.Width() < aMinSize.Width()
+                || aTmpParentSize.Height() < aMinSize.Height())
+            {
+                if (pSfxDockingParent->GetFloatingWindow()
+                    && ! pSfxDockingParent->GetFloatingWindow()->IsRollUp())
+                {
+                    pSfxDockingParent->SetOutputSizePixel(aMinSize);
+                }
+            }
+        }
+    }
 
     aContentTree.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
        aContentTree.SetStyle( 
aContentTree.GetStyle()|WB_HASBUTTONS|WB_HASBUTTONSATROOT|
@@ -877,7 +892,7 @@ SwNavigationPI::SwNavigationPI( SfxBindi
                                                                        
SV_DRAGDROP_ENABLE_TOP );
        aContentTree.EnableAsyncDrag(sal_True);
        aContentTree.ShowTree();
-       aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_True);
+    aContentToolBox.CheckItem(FN_SHOW_CONTENT_BOX, sal_True);
 
 //     TreeListBox fuer Globaldokument
     aGlobalTree.SetPosSizePixel( 0, nListboxYPos, 0, 0, WINDOW_POSSIZE_Y );
@@ -937,6 +952,15 @@ SwNavigationPI::SwNavigationPI( SfxBindi
        aContentTree.SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_CONTENT));
        aGlobalTree.SetAccessibleName(SW_RESSTR(STR_ACCESS_TL_GLOBAL));
        aDocListBox.SetAccessibleName(aStatusArr[3]);
+
+    if (pContextWin == NULL)
+    {
+        // When the context window is missing then the navigator is
+        // displayed in the sidebar.  While the navigator could change
+        // its size, the sidebar can not, and the navigator would just
+        // waste space.  Therefore hide this button.
+        
aContentToolBox.RemoveItem(aContentToolBox.GetItemPos(FN_SHOW_CONTENT_BOX));
+    }
 }
 
 /*------------------------------------------------------------------------


Reply via email to