You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by af...@apache.org on 2013/03/26 14:00:41 UTC

svn commit: r1461104 - in /openoffice/branches/sidebar/main: officecfg/registry/data/org/openoffice/Office/ officecfg/registry/data/org/openoffice/Office/UI/ sd/source/ui/dlg/ sd/source/ui/framework/factories/ sd/source/ui/inc/ sd/source/ui/sidebar/ sd...

Author: af
Date: Tue Mar 26 13:00:41 2013
New Revision: 1461104

URL: http://svn.apache.org/r1461104
Log:
i121961: Added navigator panel for Draw/Impress to sidebar.

Added:
    openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.cxx
    openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.hxx
    openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.cxx
    openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.hxx
Modified:
    openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/Impress.xcu
    openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Factories.xcu
    openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
    openoffice/branches/sidebar/main/sd/source/ui/dlg/NavigatorChildWindow.cxx
    openoffice/branches/sidebar/main/sd/source/ui/dlg/navigatr.cxx
    openoffice/branches/sidebar/main/sd/source/ui/framework/factories/BasicPaneFactory.cxx
    openoffice/branches/sidebar/main/sd/source/ui/inc/navigatr.hxx
    openoffice/branches/sidebar/main/sd/source/ui/sidebar/makefile.mk
    openoffice/branches/sidebar/main/sd/source/ui/unoidl/facreg.cxx

Modified: openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/Impress.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/Impress.xcu?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/Impress.xcu (original)
+++ openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/Impress.xcu Tue Mar 26 13:00:41 2013
@@ -85,11 +85,6 @@
             </node>
             <node oor:name="R6" oor:op="replace">
               <prop oor:name="URL">
-                <value>private:resource/view/SidebarView</value>
-              </prop>
-            </node>
-            <node oor:name="R7" oor:op="replace">
-              <prop oor:name="URL">
                 <value>private:resource/view/PresentationView</value>
               </prop>
             </node>
@@ -149,18 +144,6 @@
             </node>
           </node>
         </node>
-        <node  oor:name="F4" oor:op="replace">
-          <prop oor:name="ServiceName">
-            <value>org.openoffice.comp.Draw.framework.SidebarFactory</value>
-          </prop>
-          <node oor:name="ResourceList">
-            <node oor:name="P0" oor:op="replace">
-              <prop oor:name="URL">
-                <value>private:resource/pane/SidebarPane</value>
-              </prop>
-            </node>
-          </node>
-        </node>
       </node>
       <node oor:name="StartupServices">
 	<node oor:name="S0" oor:op="replace">

Modified: openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Factories.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Factories.xcu?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Factories.xcu (original)
+++ openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Factories.xcu Tue Mar 26 13:00:41 2013
@@ -106,7 +106,7 @@
           <value></value>
         </prop>
         <prop oor:name="FactoryImplementation">
-          <value>org.openoffice.comp.Draw.framework.SidebarFactory</value>
+          <value>org.openoffice.comp.Draw.framework.PanelFactory</value>
         </prop>
       </node>
       <node oor:name="SwPanelFactory" oor:op="replace">

Modified: openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu (original)
+++ openoffice/branches/sidebar/main/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu Tue Mar 26 13:00:41 2013
@@ -45,23 +45,23 @@
       </node>
 
       <node oor:name="GalleryDeck" oor:op="replace">
-	<prop oor:name="Title" oor:type="xs:string">
+        <prop oor:name="Title" oor:type="xs:string">
           <value xml:lang="en-US">Gallery</value>
-	</prop>
-	<prop oor:name="Id" oor:type="xs:string">
+        </prop>
+        <prop oor:name="Id" oor:type="xs:string">
           <value>GalleryDeck</value>
-	</prop>
-	<prop oor:name="IconURL" oor:type="xs:string">
+        </prop>
+        <prop oor:name="IconURL" oor:type="xs:string">
           <value>private:graphicrepository/sfx2/res/symphony/sidebar-gallery-large.png</value>
-	</prop>
+        </prop>
         <prop oor:name="ContextList">
           <value oor:separator=";">
             any, any, visible ;
           </value>
         </prop>
-	<prop oor:name="OrderIndex" oor:type="xs:int">
+        <prop oor:name="OrderIndex" oor:type="xs:int">
           <value>150</value>
-	</prop>
+        </prop>
       </node>
 
       <node oor:name="ImpressMasterPagesDeck" oor:op="replace">
@@ -124,6 +124,26 @@
         </prop>
       </node>
 
+      <node oor:name="NavigatorDeck" oor:op="replace">
+        <prop oor:name="Title" oor:type="xs:string">
+          <value xml:lang="en-US">Navigator</value>
+        </prop>
+        <prop oor:name="Id" oor:type="xs:string">
+          <value>NavigatorDeck</value>
+        </prop>
+        <prop oor:name="IconURL" oor:type="xs:string">
+          <value>private:graphicrepository/sfx2/res/symphony/sidebar-navigator-large.png</value>
+        </prop>
+        <prop oor:name="ContextList">
+          <value oor:separator=";">
+            any, any, visible ;
+          </value>
+        </prop>
+        <prop oor:name="OrderIndex" oor:type="xs:int">
+          <value>150</value>
+        </prop>
+      </node>
+
     </node>
     <node oor:name="PanelList">
 
@@ -307,26 +327,29 @@
       </node>
 
       <node oor:name="GalleryPanel" oor:op="replace">
-	<prop oor:name="Title" oor:type="xs:string">
+        <prop oor:name="Title" oor:type="xs:string">
           <value xml:lang="en-US">Gallery</value>
-	</prop>
-	<prop oor:name="Id" oor:type="xs:string">
+        </prop>
+        <prop oor:name="TitleBarIsOptional" oor:type="xs:boolean">
+          <value>true</value>
+        </prop>
+        <prop oor:name="Id" oor:type="xs:string">
           <value>GalleryPanel</value>
-	</prop>
-	<prop oor:name="DeckId" oor:type="xs:string">
+        </prop>
+        <prop oor:name="DeckId" oor:type="xs:string">
           <value>GalleryDeck</value>
-	</prop>
+        </prop>
         <prop oor:name="ContextList">
           <value oor:separator=";">
             any, any, visible ;
           </value>
         </prop>
-	<prop oor:name="ImplementationURL" oor:type="xs:string">
+        <prop oor:name="ImplementationURL" oor:type="xs:string">
           <value>private:resource/toolpanel/SvxPanelFactory/GalleryPanel</value>
-	</prop>
-	<prop oor:name="OrderIndex" oor:type="xs:int">
+        </prop>
+        <prop oor:name="OrderIndex" oor:type="xs:int">
           <value>100</value>
-	</prop>
+        </prop>
       </node>
 
       <node oor:name="PosSizePropertyPanel" oor:op="replace">
@@ -763,6 +786,32 @@
         </prop>
       </node>
 
+      <node oor:name="SdNavigatorPanel" oor:op="replace">
+        <prop oor:name="Title" oor:type="xs:string">
+          <value xml:lang="en-US">Navigator</value>
+        </prop>
+        <prop oor:name="TitleBarIsOptional" oor:type="xs:boolean">
+          <value>true</value>
+        </prop>
+        <prop oor:name="Id" oor:type="xs:string">
+          <value>SdNavigatorPanel</value>
+        </prop>
+        <prop oor:name="DeckId" oor:type="xs:string">
+          <value>NavigatorDeck</value>
+        </prop>
+        <prop oor:name="ContextList">
+          <value oor:separator=";">
+            DrawImpress, any, visible ;
+          </value>
+        </prop>
+        <prop oor:name="ImplementationURL" oor:type="xs:string">
+          <value>private:resource/toolpanel/SdPanelFactory/Navigator</value>
+        </prop>
+        <prop oor:name="OrderIndex" oor:type="xs:int">
+          <value>100</value>
+        </prop>
+      </node>
+
     </node>
   </node>
 </oor:component-data>

Modified: openoffice/branches/sidebar/main/sd/source/ui/dlg/NavigatorChildWindow.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/dlg/NavigatorChildWindow.cxx?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/dlg/NavigatorChildWindow.cxx (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/dlg/NavigatorChildWindow.cxx Tue Mar 26 13:00:41 2013
@@ -29,11 +29,31 @@
 #include "app.hrc"
 #include "navigatr.hrc"
 #include <sfx2/app.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svl/eitem.hxx>
+#include <boost/bind.hpp>
+
 
 namespace sd {
 
 SFX_IMPL_CHILDWINDOWCONTEXT(NavigatorChildWindow, SID_NAVIGATOR)
 
+void RequestNavigatorUpdate (SfxBindings* pBindings)
+{
+    if (pBindings != NULL
+        && pBindings->GetDispatcher() != NULL)
+    {
+        SfxBoolItem aItem (SID_NAVIGATOR_INIT, sal_True);
+        pBindings->GetDispatcher()->Execute(
+            SID_NAVIGATOR_INIT,
+            SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
+            &aItem,
+            0L);
+    }
+}
+
+
 NavigatorChildWindow::NavigatorChildWindow (
     ::Window* pParent,
     sal_uInt16 nId,
@@ -41,8 +61,12 @@ NavigatorChildWindow::NavigatorChildWind
     SfxChildWinInfo* ) 
     : SfxChildWindowContext( nId )
 {
-	SdNavigatorWin* pNavWin = new SdNavigatorWin( pParent, this,
-										SdResId( FLT_NAVIGATOR ), pBindings );
+	SdNavigatorWin* pNavWin = new SdNavigatorWin(
+        pParent,
+        this,
+        SdResId( FLT_NAVIGATOR ),
+        pBindings,
+        ::boost::bind(RequestNavigatorUpdate, pBindings));
 
 	SetWindow( pNavWin );
 }

Modified: openoffice/branches/sidebar/main/sd/source/ui/dlg/navigatr.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/dlg/navigatr.cxx?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/dlg/navigatr.cxx (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/dlg/navigatr.cxx Tue Mar 26 13:00:41 2013
@@ -72,18 +72,19 @@ SdNavigatorWin::SdNavigatorWin(
     ::Window* pParent,
     ::sd::NavigatorChildWindow* pChWinCtxt,
     const SdResId& rSdResId,
-    SfxBindings* pInBindings )
-:	::Window( pParent, rSdResId )
-,	maToolbox        ( this, SdResId( 1 ) )
-,	maTlbObjects( this, SdResId( TLB_OBJECTS ) )
-,	maLbDocs         ( this, SdResId( LB_DOCS ) )
-,	mpChildWinContext( pChWinCtxt )
-,	mbDocImported	( sal_False )
-    // Bei Aenderung des DragTypes: SelectionMode der TLB anpassen!
-,	meDragType		( NAVIGATOR_DRAGTYPE_EMBEDDED )
-,	mpBindings		( pInBindings )
-,	maImageList		( SdResId( IL_NAVIGATR ) )
-,	maImageListH	( SdResId( ILH_NAVIGATR ) )
+    SfxBindings* pInBindings,
+    const UpdateRequestFunctor& rUpdateRequest)
+    : ::Window( pParent, rSdResId ),
+      maToolbox        ( this, SdResId( 1 ) ),
+      maTlbObjects( this, SdResId( TLB_OBJECTS ) ),
+      maLbDocs         ( this, SdResId( LB_DOCS ) ),
+      mpChildWinContext( pChWinCtxt ),
+      mbDocImported	( sal_False ),
+      // Bei Aenderung des DragTypes: SelectionMode der TLB anpassen!
+      meDragType		( NAVIGATOR_DRAGTYPE_EMBEDDED ),
+      mpBindings		( pInBindings ),
+      maImageList		( SdResId( IL_NAVIGATR ) ),
+      maImageListH	( SdResId( ILH_NAVIGATR ) )
 {
 	maTlbObjects.SetViewFrame( mpBindings->GetDispatcher()->GetFrame() );
 
@@ -91,8 +92,8 @@ SdNavigatorWin::SdNavigatorWin(
 
     maTlbObjects.SetAccessibleName(String(SdResId(STR_OBJECTS_TREE)));
 
-	mpNavigatorCtrlItem = new SdNavigatorControllerItem( SID_NAVIGATOR_STATE, this, mpBindings );
-	mpPageNameCtrlItem = new SdPageNameControllerItem( SID_NAVIGATOR_PAGENAME, this, mpBindings );
+	mpNavigatorCtrlItem = new SdNavigatorControllerItem( SID_NAVIGATOR_STATE, this, mpBindings, rUpdateRequest);
+	mpPageNameCtrlItem = new SdPageNameControllerItem( SID_NAVIGATOR_PAGENAME, this, mpBindings, rUpdateRequest);
 	mpDocList = new List();
 
 	ApplyImageList(); // load images *before* calculating sizes to get something useful !!!
@@ -137,13 +138,13 @@ SdNavigatorWin::SdNavigatorWin(
     if( nMinWidth > maMinSize.Width() )
         maMinSize.Width() = nMinWidth;
 	maMinSize.Height() -= 40;
-	((SfxDockingWindow*)GetParent())->SetMinOutputSizePixel( maMinSize );
+    SfxDockingWindow* pDockingParent = dynamic_cast<SfxDockingWindow*>(GetParent());
+	if (pDockingParent != NULL)
+        pDockingParent->SetMinOutputSizePixel( maMinSize );
 
 	// InitTlb; Wird ueber Slot initiiert
-	SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
-	mpBindings->GetDispatcher()->Execute(
-		SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
-
+    if (rUpdateRequest)
+        rUpdateRequest();
 }
 
 // -----------------------------------------------------------------------
@@ -882,11 +883,14 @@ void SdNavigatorWin::ApplyImageList()
 |*
 \************************************************************************/
 
-SdNavigatorControllerItem::SdNavigatorControllerItem( sal_uInt16 _nId,
-								SdNavigatorWin* pNavWin,
-								SfxBindings*	_pBindings) :
-	SfxControllerItem( _nId, *_pBindings ),
-	pNavigatorWin( pNavWin )
+SdNavigatorControllerItem::SdNavigatorControllerItem(
+    sal_uInt16 _nId,
+    SdNavigatorWin* pNavWin,
+    SfxBindings*	_pBindings,
+    const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest)
+    : SfxControllerItem( _nId, *_pBindings ),
+      pNavigatorWin( pNavWin ),
+      maUpdateRequest(rUpdateRequest)
 {
 }
 
@@ -954,9 +958,8 @@ void SdNavigatorControllerItem::StateCha
 			if( nState & NAVTLB_UPDATE )
 			{
 				// InitTlb; Wird ueber Slot initiiert
-				SfxBoolItem aItem( SID_NAVIGATOR_INIT, sal_True );
-				GetBindings().GetDispatcher()->Execute(
-					SID_NAVIGATOR_INIT, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
+                if (maUpdateRequest)
+                    maUpdateRequest();
 			}
 		}
 	}
@@ -968,11 +971,14 @@ void SdNavigatorControllerItem::StateCha
 |*
 \************************************************************************/
 
-SdPageNameControllerItem::SdPageNameControllerItem( sal_uInt16 _nId,
-								SdNavigatorWin* pNavWin,
-								SfxBindings*	_pBindings) :
-	SfxControllerItem( _nId, *_pBindings ),
-	pNavigatorWin( pNavWin )
+SdPageNameControllerItem::SdPageNameControllerItem(
+    sal_uInt16 _nId,
+    SdNavigatorWin* pNavWin,
+    SfxBindings*	_pBindings,
+    const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest)
+	: SfxControllerItem( _nId, *_pBindings ),
+      pNavigatorWin( pNavWin ),
+      maUpdateRequest(rUpdateRequest)
 {
 }
 

Modified: openoffice/branches/sidebar/main/sd/source/ui/framework/factories/BasicPaneFactory.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/framework/factories/BasicPaneFactory.cxx?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/framework/factories/BasicPaneFactory.cxx (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/framework/factories/BasicPaneFactory.cxx Tue Mar 26 13:00:41 2013
@@ -51,8 +51,7 @@ namespace {
         CenterPaneId,
         FullScreenPaneId,
         LeftImpressPaneId,
-        LeftDrawPaneId,
-        SidebarPaneId
+        LeftDrawPaneId
     };
 
     static const sal_Int32 gnConfigurationUpdateStartEvent(0);

Modified: openoffice/branches/sidebar/main/sd/source/ui/inc/navigatr.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/inc/navigatr.hxx?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/inc/navigatr.hxx (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/inc/navigatr.hxx Tue Mar 26 13:00:41 2013
@@ -88,11 +88,21 @@ class SdNavigatorWin
     : public Window
 {
 public:
+    typedef ::boost::function<void(void)> UpdateRequestFunctor;
+    
+    /** Create a new instance of the navigator.
+        @param bUseActiveUpdate
+            When <TRUE/>, the default, then the SdNavigatorWin object
+            will make a SID_NAVIGATOR_INIT call whenever it thinks an
+            update is necessary.  When <FALSE/> the navigator will
+            rely on others to trigger updates.
+    */
     SdNavigatorWin(
         ::Window* pParent,
         ::sd::NavigatorChildWindow* pChildWinContext,
         const SdResId& rSdResId,
-        SfxBindings* pBindings );
+        SfxBindings* pBindings,
+        const UpdateRequestFunctor& rUpdateRequest);
     virtual ~SdNavigatorWin();
 
 	virtual void				KeyInput( const KeyEvent& rKEvt );
@@ -137,7 +147,7 @@ private:
     /** This flag controls whether all shapes or only the named shapes are
         shown.
     */
-    bool                        mbShowAllShapes;
+    //    bool                        mbShowAllShapes;
 
 	sal_uInt16						GetDragTypeSdResId( NavigatorDragType eDT, sal_Bool bImage = sal_False );
 	NavDocInfo*					GetDocInfo();
@@ -169,7 +179,8 @@ private:
 class SdNavigatorControllerItem : public SfxControllerItem
 {
 public:
-	SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* );
+	SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*,
+        const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest);
 
 protected:
 	virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState,
@@ -177,6 +188,7 @@ protected:
 
 private:
 	SdNavigatorWin* pNavigatorWin;
+    const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest;
 };
 
 
@@ -190,7 +202,8 @@ private:
 class SdPageNameControllerItem : public SfxControllerItem
 {
 public:
-	SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* );
+	SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*,
+        const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest);
 
 protected:
 	virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState,
@@ -198,6 +211,7 @@ protected:
 
 private:
 	SdNavigatorWin* pNavigatorWin;
+    const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest;
 };
 
 #endif

Added: openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.cxx?rev=1461104&view=auto
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.cxx (added)
+++ openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.cxx Tue Mar 26 13:00:41 2013
@@ -0,0 +1,86 @@
+/**************************************************************
+ * 
+ * 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.
+ * 
+ *************************************************************/
+
+#include "precompiled_sd.hxx"
+
+#include "NavigatorWrapper.hxx"
+#include "navigatr.hrc"
+#include "ViewShellBase.hxx"
+
+#include <boost/bind.hpp>
+
+
+namespace sd { namespace sidebar {
+
+NavigatorWrapper::NavigatorWrapper (
+    ::Window* pParent,
+    sd::ViewShellBase& rViewShellBase,
+    SfxBindings* pBindings)
+    : Control(pParent, 0),
+      mrViewShellBase(rViewShellBase),
+      maNavigator(
+        this,
+        NULL,
+        SdResId(FLT_NAVIGATOR),
+        pBindings,
+        ::boost::bind(&NavigatorWrapper::UpdateNavigator, this))
+{
+    maNavigator.SetPosSizePixel(
+        Point(0,0),
+        GetSizePixel());
+    maNavigator.Show();
+}
+
+
+
+
+NavigatorWrapper::~NavigatorWrapper (void)
+{
+}
+
+
+
+
+void NavigatorWrapper::Resize (void)
+{
+    maNavigator.SetSizePixel(GetSizePixel());
+}
+
+
+
+
+css::ui::LayoutSize NavigatorWrapper::GetHeightForWidth (const sal_Int32 nWidth)
+{
+    (void)nWidth;
+    
+    return css::ui::LayoutSize(-1,-1,-1);
+}
+
+
+
+
+void NavigatorWrapper::UpdateNavigator (void)
+{
+    maNavigator.InitTreeLB(mrViewShellBase.GetDocument());
+}
+
+
+} } // end of namespace sd::sidebar

Added: openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.hxx?rev=1461104&view=auto
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.hxx (added)
+++ openoffice/branches/sidebar/main/sd/source/ui/sidebar/NavigatorWrapper.hxx Tue Mar 26 13:00:41 2013
@@ -0,0 +1,72 @@
+/**************************************************************
+ * 
+ * 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 SD_SIDEBAR_NAVIGATOR_WRAPPER_HXX
+#define SD_SIDEBAR_NAVIGATOR_WRAPPER_HXX
+
+#include <sfx2/sidebar/ILayoutableWindow.hxx>
+#include <vcl/ctrl.hxx>
+#include "navigatr.hxx"
+
+
+class SfxBindings;
+namespace sd { class ViewShellBase; }
+
+namespace css = ::com::sun::star;
+
+namespace sd { namespace sidebar {
+
+/** Present the navigator as control that can be displayed inside the
+    sidebar.
+    This wrapper has two main responsibilities:
+    - Watch for document changes and update the navigator when one
+    happens.
+    - Forward size changes from sidebar to navigator.
+*/
+class NavigatorWrapper
+    : public Control,
+      public sfx2::sidebar::ILayoutableWindow
+{
+public:
+    NavigatorWrapper (
+        ::Window* pParent,
+        sd::ViewShellBase& rViewShellBase,
+        SfxBindings* pBindings);
+
+    virtual ~NavigatorWrapper (void);
+
+    // Control
+    virtual void Resize (void);
+
+    // From ILayoutableWindow
+    virtual css::ui::LayoutSize GetHeightForWidth (const sal_Int32 nWidth);
+
+private:
+    ViewShellBase& mrViewShellBase;
+    SdNavigatorWin maNavigator;
+
+    void UpdateNavigator (void);
+};
+
+
+} } // end of namespace sd::sidebar
+
+#endif

Added: openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.cxx?rev=1461104&view=auto
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.cxx (added)
+++ openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.cxx Tue Mar 26 13:00:41 2013
@@ -0,0 +1,208 @@
+/**************************************************************
+ * 
+ * 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.
+ * 
+ *************************************************************/
+
+#include "precompiled_sd.hxx"
+
+#include "PanelFactory.hxx"
+#include "framework/Pane.hxx"
+#include "ViewShellBase.hxx"
+#include "DrawController.hxx"
+#include "LayoutMenu.hxx"
+#include "CurrentMasterPagesSelector.hxx"
+#include "RecentMasterPagesSelector.hxx"
+#include "AllMasterPagesSelector.hxx"
+#include "CustomAnimationPanel.hxx"
+#include "TableDesignPanel.hxx"
+#include "SlideTransitionPanel.hxx"
+#include "NavigatorWrapper.hxx"
+
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/sidebar/SidebarPanelBase.hxx>
+#include <comphelper/namedvaluecollection.hxx>
+#include <vcl/window.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+
+using namespace css;
+using namespace cssu;
+using namespace ::sd::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sd { namespace sidebar {
+
+namespace {
+    /** Note that these names have to be identical to (the tail of)
+        the entries in officecfg/registry/data/org/openoffice/Office/Impress.xcu
+        for the TaskPanelFactory.
+    */
+    const static char* gsResourceNameCustomAnimations = "/CustomAnimations";
+    const static char* gsResourceNameLayouts = "/Layouts";
+    const static char* gsResourceNameAllMasterPages = "/AllMasterPages";
+    const static char* gsResourceNameRecentMasterPages = "/RecentMasterPages";
+    const static char* gsResourceNameUsedMasterPages = "/UsedMasterPages";
+    const static char* gsResourceNameSlideTransitions = "/SlideTransitions";
+    const static char* gsResourceNameTableDesign = "/TableDesign";
+    const static char* gsResourceNameNavigator = "/Navigator";
+}
+
+Reference<lang::XEventListener> mxControllerDisposeListener;
+
+
+
+// ----- Service functions ----------------------------------------------------
+
+Reference<XInterface> SAL_CALL PanelFactory_createInstance (
+    const Reference<XComponentContext>& rxContext)
+{
+    return Reference<XInterface>(static_cast<XWeak*>(new PanelFactory(rxContext)));
+}
+
+
+
+
+::rtl::OUString PanelFactory_getImplementationName (void) throw(RuntimeException)
+{
+    return ::rtl::OUString(
+        RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.Draw.framework.PanelFactory"));
+}
+
+
+
+
+Sequence<rtl::OUString> SAL_CALL PanelFactory_getSupportedServiceNames (void)
+    throw (RuntimeException)
+{
+	static const ::rtl::OUString sServiceName(
+        ::rtl::OUString::createFromAscii("com.sun.star.drawing.framework.PanelFactory"));
+	return Sequence<rtl::OUString>(&sServiceName, 1);
+}
+
+
+
+
+//----- PanelFactory --------------------------------------------------------
+
+PanelFactory::PanelFactory(
+        const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+    : PanelFactoryInterfaceBase(m_aMutex)
+{
+}
+
+
+
+
+PanelFactory::~PanelFactory (void)
+{
+}
+
+
+
+
+void SAL_CALL PanelFactory::disposing (void)
+{
+}
+
+
+
+
+// XUIElementFactory
+
+Reference<ui::XUIElement> SAL_CALL PanelFactory::createUIElement (
+    const ::rtl::OUString& rsUIElementResourceURL,
+    const ::cssu::Sequence<css::beans::PropertyValue>& rArguments)
+    throw(
+        css::container::NoSuchElementException,
+        css::lang::IllegalArgumentException,
+        cssu::RuntimeException)
+{
+    // Process arguments.
+    const ::comphelper::NamedValueCollection aArguments (rArguments);
+    Reference<frame::XFrame> xFrame (aArguments.getOrDefault("Frame", Reference<frame::XFrame>()));
+    Reference<awt::XWindow> xParentWindow (aArguments.getOrDefault("ParentWindow", Reference<awt::XWindow>()));
+    Reference<ui::XSidebar> xSidebar (aArguments.getOrDefault("Sidebar", Reference<ui::XSidebar>()));
+
+    // Throw exceptions when the arguments are not as expected.
+    ::Window* pParentWindow = VCLUnoHelper::GetWindow(xParentWindow);
+    if ( ! xParentWindow.is() || pParentWindow==NULL)
+        throw RuntimeException(
+            A2S("PanelFactory::createUIElement called without ParentWindow"),
+            NULL);
+    if ( ! xFrame.is())
+        throw RuntimeException(
+            A2S("PanelFactory::createUIElement called without XFrame"),
+            NULL);
+
+    // Tunnel through the controller to obtain a ViewShellBase.
+    ViewShellBase* pBase = NULL;
+    Reference<lang::XUnoTunnel> xTunnel (xFrame->getController(), UNO_QUERY);
+    if (xTunnel.is())
+    {
+        ::sd::DrawController* pController = reinterpret_cast<sd::DrawController*>(
+            xTunnel->getSomething(sd::DrawController::getUnoTunnelId()));
+        if (pController != NULL)
+            pBase = pController->GetViewShellBase();
+    }
+    if (pBase == NULL)
+        throw RuntimeException(A2S("can not get ViewShellBase for frame"), NULL);
+
+    // Get bindings from given arguments.
+    const sal_uInt64 nBindingsValue (aArguments.getOrDefault("SfxBindings", sal_uInt64(0)));
+    SfxBindings* pBindings = reinterpret_cast<SfxBindings*>(nBindingsValue);
+
+    // Create a framework view.
+    ::Window* pControl = NULL;
+
+#define EndsWith(s,t) s.endsWithAsciiL(t,strlen(t))
+    if (EndsWith(rsUIElementResourceURL, gsResourceNameCustomAnimations))
+        pControl = new CustomAnimationPanel(pParentWindow, *pBase);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameLayouts))
+        pControl = new LayoutMenu(pParentWindow, *pBase, xSidebar);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameAllMasterPages))
+        pControl = AllMasterPagesSelector::Create(pParentWindow, *pBase, xSidebar);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameRecentMasterPages))
+        pControl = RecentMasterPagesSelector::Create(pParentWindow, *pBase, xSidebar);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameUsedMasterPages))
+        pControl = CurrentMasterPagesSelector::Create(pParentWindow, *pBase, xSidebar);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameSlideTransitions))
+        pControl = new SlideTransitionPanel(pParentWindow, *pBase);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameTableDesign))
+        pControl = new TableDesignPanel(pParentWindow, *pBase);
+    else if (EndsWith(rsUIElementResourceURL, gsResourceNameNavigator))
+        pControl = new NavigatorWrapper(pParentWindow, *pBase, pBindings);
+#undef EndsWith
+
+    if (pControl == NULL)
+        throw lang::IllegalArgumentException();
+
+    // Create a wrapper around the control that implements the
+    // necessary UNO interfaces.
+    return sfx2::sidebar::SidebarPanelBase::Create(
+        rsUIElementResourceURL,
+        xFrame,
+        pControl,
+        ui::LayoutSize(-1,-1,-1));
+}
+
+
+
+
+} } // end of namespace sd::sidebar

Added: openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.hxx?rev=1461104&view=auto
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.hxx (added)
+++ openoffice/branches/sidebar/main/sd/source/ui/sidebar/PanelFactory.hxx Tue Mar 26 13:00:41 2013
@@ -0,0 +1,88 @@
+/**************************************************************
+ * 
+ * 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 SD_SIDEBAR_PANEL_FACTORY_HXX
+#define SD_SIDEBAR_PANEL_FACTORY_HXX
+
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <rtl/ref.hxx>
+#include "framework/Pane.hxx"
+
+#include <com/sun/star/ui/XUIElementFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+
+#include <map>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+
+
+namespace sd {
+    class ViewShellBase;
+}
+
+namespace sd { namespace sidebar {
+
+namespace
+{
+    typedef ::cppu::WeakComponentImplHelper1 <
+        css::ui::XUIElementFactory
+        > PanelFactoryInterfaceBase;
+}
+
+
+class PanelFactory
+    : private ::boost::noncopyable,
+      private ::cppu::BaseMutex,
+      public PanelFactoryInterfaceBase
+{
+public:
+    static ::rtl::OUString SAL_CALL getImplementationName (void);
+    static cssu::Reference<cssu::XInterface> SAL_CALL createInstance (
+        const cssu::Reference<css::lang::XMultiServiceFactory>& rxFactory);
+    static cssu::Sequence<rtl::OUString> SAL_CALL getSupportedServiceNames (void);
+
+    PanelFactory (const cssu::Reference<cssu::XComponentContext>& rxContext);
+    virtual ~PanelFactory (void);
+
+    virtual void SAL_CALL disposing (void);
+
+
+    // XUIElementFactory
+
+    cssu::Reference<css::ui::XUIElement> SAL_CALL createUIElement (
+        const ::rtl::OUString& rsResourceURL,
+        const ::cssu::Sequence<css::beans::PropertyValue>& rArguments)
+        throw(
+            css::container::NoSuchElementException,
+            css::lang::IllegalArgumentException,
+            cssu::RuntimeException);
+};
+
+
+} } // end of namespace sd::sidebar
+
+#endif

Modified: openoffice/branches/sidebar/main/sd/source/ui/sidebar/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/sidebar/makefile.mk?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/sidebar/makefile.mk (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/sidebar/makefile.mk Tue Mar 26 13:00:41 2013
@@ -51,11 +51,12 @@ SLOFILES =      							\
 	$(SLO)$/MasterPageDescriptor.obj		\
 	$(SLO)$/MasterPageObserver.obj			\
 	$(SLO)$/MasterPagesSelector.obj			\
+	$(SLO)$/NavigatorWrapper.obj			\
 	$(SLO)$/PanelBase.obj					\
+	$(SLO)$/PanelFactory.obj				\
 	$(SLO)$/PreviewValueSet.obj				\
 	$(SLO)$/RecentlyUsedMasterPages.obj		\
 	$(SLO)$/RecentMasterPagesSelector.obj	\
-	$(SLO)$/SidebarFactory.obj				\
 	$(SLO)$/SlideTransitionPanel.obj		\
 	$(SLO)$/TableDesignPanel.obj
 

Modified: openoffice/branches/sidebar/main/sd/source/ui/unoidl/facreg.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sd/source/ui/unoidl/facreg.cxx?rev=1461104&r1=1461103&r2=1461104&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sd/source/ui/unoidl/facreg.cxx (original)
+++ openoffice/branches/sidebar/main/sd/source/ui/unoidl/facreg.cxx Tue Mar 26 13:00:41 2013
@@ -140,11 +140,11 @@ extern uno::Sequence<OUString> SAL_CALL 
 
 namespace sd { namespace sidebar {
 
-extern uno::Reference<uno::XInterface> SAL_CALL SidebarFactory_createInstance(
+extern uno::Reference<uno::XInterface> SAL_CALL PanelFactory_createInstance(
     const uno::Reference<uno::XComponentContext>& rxContext)
     throw(uno::Exception);
-extern OUString SidebarFactory_getImplementationName(void) throw (uno::RuntimeException);
-extern uno::Sequence<OUString> SAL_CALL SidebarFactory_getSupportedServiceNames (void)
+extern OUString PanelFactory_getImplementationName(void) throw (uno::RuntimeException);
+extern uno::Sequence<OUString> SAL_CALL PanelFactory_getSupportedServiceNames (void)
     throw (uno::RuntimeException);
 
 } }
@@ -229,7 +229,7 @@ enum FactoryId
     BasicPaneFactoryFactoryId,
     BasicToolBarFactoryFactoryId,
     BasicViewFactoryFactoryId,
-    SidebarFactoryFactoryId,
+    PanelFactoryFactoryId,
     ResourceIdFactoryId,
     PresentationFactoryProviderFactoryId,
     SlideRendererFactoryId,
@@ -262,7 +262,7 @@ static ::boost::shared_ptr<FactoryMap> s
         (*spFactoryMap)[BasicPaneFactory_getImplementationName()] = BasicPaneFactoryFactoryId;
         (*spFactoryMap)[BasicToolBarFactory_getImplementationName()] = BasicToolBarFactoryFactoryId;
         (*spFactoryMap)[BasicViewFactory_getImplementationName()] = BasicViewFactoryFactoryId;
-        (*spFactoryMap)[sidebar::SidebarFactory_getImplementationName()] = SidebarFactoryFactoryId;
+        (*spFactoryMap)[sidebar::PanelFactory_getImplementationName()] = PanelFactoryFactoryId;
         (*spFactoryMap)[ResourceId_getImplementationName()] = ResourceIdFactoryId;
         (*spFactoryMap)[PresentationFactoryProvider_getImplementationName()] = PresentationFactoryProviderFactoryId;
         (*spFactoryMap)[SlideRenderer_getImplementationName()] = SlideRendererFactoryId;
@@ -392,11 +392,11 @@ SAL_DLLPUBLIC_EXPORT void * SAL_CALL com
                         sd::framework::BasicViewFactory_getSupportedServiceNames());
                     break;
 
-                case SidebarFactoryFactoryId:
+                case PanelFactoryFactoryId:
                     xComponentFactory = ::cppu::createSingleComponentFactory(
-                        sd::sidebar::SidebarFactory_createInstance,
-                        sd::sidebar::SidebarFactory_getImplementationName(),
-                        sd::sidebar::SidebarFactory_getSupportedServiceNames());
+                        sd::sidebar::PanelFactory_createInstance,
+                        sd::sidebar::PanelFactory_getImplementationName(),
+                        sd::sidebar::PanelFactory_getSupportedServiceNames());
                     break;
 
                 case ResourceIdFactoryId: