Author: af
Date: Wed Jun 5 15:40:56 2013
New Revision: 1489925
URL: http://svn.apache.org/r1489925
Log:
122470: Fixed programmatic triggered switching of sidebar decks.
Added:
openoffice/trunk/main/sfx2/inc/sfx2/sidebar/Sidebar.hxx
Removed:
openoffice/trunk/main/sfx2/source/sidebar/Sidebar.hxx
Modified:
openoffice/trunk/main/sd/inc/app.hrc
openoffice/trunk/main/sd/sdi/ViewShellBase.sdi
openoffice/trunk/main/sd/sdi/sdraw.sdi
openoffice/trunk/main/sd/source/ui/app/sdmod1.cxx
openoffice/trunk/main/sd/source/ui/framework/tools/FrameworkHelper.cxx
openoffice/trunk/main/sd/source/ui/inc/framework/FrameworkHelper.hxx
openoffice/trunk/main/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
openoffice/trunk/main/sd/source/ui/table/tablefunction.cxx
openoffice/trunk/main/sd/source/ui/view/GraphicViewShellBase.cxx
openoffice/trunk/main/sd/source/ui/view/ViewShellBase.cxx
openoffice/trunk/main/sd/source/ui/view/ViewShellImplementation.cxx
openoffice/trunk/main/sd/source/ui/view/drviews6.cxx
openoffice/trunk/main/sfx2/Library_sfx.mk
openoffice/trunk/main/sfx2/Package_inc.mk
openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.cxx
openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.hxx
openoffice/trunk/main/sfx2/source/sidebar/Sidebar.cxx
openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx
openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx
openoffice/trunk/main/sfx2/source/sidebar/SidebarDockingWindow.hxx
openoffice/trunk/main/sfx2/source/sidebar/TabBar.cxx
Modified: openoffice/trunk/main/sd/inc/app.hrc
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/inc/app.hrc?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/inc/app.hrc (original)
+++ openoffice/trunk/main/sd/inc/app.hrc Wed Jun 5 15:40:56 2013
@@ -487,7 +487,7 @@
#define SID_TP_USE_FOR_NEW_PRESENTATIONS (SID_SD_START+427)
#define SID_TP_SHOW_LARGE_PREVIEW (SID_SD_START+428)
#define SID_TP_SHOW_SMALL_PREVIEW (SID_SD_START+429)
-#define SID_SHOW_TOOL_PANEL (SID_SD_START+430)
+// SID_SD_START+430 is unused
#define SID_INSERT_MASTER_PAGE (SID_SD_START+431)
#define SID_DELETE_MASTER_PAGE (SID_SD_START+432)
#define SID_RENAME_MASTER_PAGE (SID_SD_START+433)
Modified: openoffice/trunk/main/sd/sdi/ViewShellBase.sdi
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/sdi/ViewShellBase.sdi?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/sdi/ViewShellBase.sdi (original)
+++ openoffice/trunk/main/sd/sdi/ViewShellBase.sdi Wed Jun 5 15:40:56 2013
@@ -82,11 +82,6 @@ interface ViewShellBaseView
ExecMethod = Execute;
StateMethod = GetState;
]
- SID_SHOW_TOOL_PANEL
- [
- ExecMethod = Execute;
- StateMethod = GetState;
- ]
SID_WIN_FULLSCREEN
[
ExecMethod = Execute;
Modified: openoffice/trunk/main/sd/sdi/sdraw.sdi
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/sdi/sdraw.sdi?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/sdi/sdraw.sdi (original)
+++ openoffice/trunk/main/sd/sdi/sdraw.sdi Wed Jun 5 15:40:56 2013
@@ -7366,30 +7366,3 @@ SfxBoolItem SlideSorterMultiPaneGUI SID_
ToolBoxConfig = TRUE,
GroupId = GID_MODIFY;
]
-
-SfxVoidItem TaskPaneShowPanel SID_SHOW_TOOL_PANEL (
- SfxBoolItem IsPanelVisible ID_VAL_ISVISIBLE,
- SfxUInt32Item PanelId ID_VAL_PANEL_INDEX)
-[
- /* flags: */
- AutoUpdate = TRUE,
- Cachable = Cachable,
- FastCall = FALSE,
- HasCoreId = FALSE,
- HasDialog = FALSE,
- ReadOnlyDoc = FALSE,
- Toggle = FALSE,
- Container = TRUE,
- RecordAbsolute = FALSE,
- RecordPerSet;
- Synchron;
-
- /* config: */
- AccelConfig = FALSE,
- MenuConfig = FALSE,
- StatusBarConfig = FALSE,
- ToolBoxConfig = FALSE,
- GroupId = GID_VIEW;
-]
-
-
Modified: openoffice/trunk/main/sd/source/ui/app/sdmod1.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/app/sdmod1.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/app/sdmod1.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/app/sdmod1.cxx Wed Jun 5 15:40:56 2013
@@ -746,17 +746,6 @@ SfxFrame* SdModule::ExecuteNewDocument(
}
}
}
-
- if (bMakeLayoutVisible && pViewFrame!=NULL)
- {
- // Make the layout menu visible in the tool pane.
- ::sd::ViewShellBase* pBase =
::sd::ViewShellBase::GetViewShellBase(pViewFrame);
- if (pBase != NULL)
- {
- FrameworkHelper::Instance(*pBase)->RequestSidebarPanel(
- FrameworkHelper::msLayoutTaskPanelURL);
- }
- }
}
return pFrame;
Modified: openoffice/trunk/main/sd/source/ui/framework/tools/FrameworkHelper.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/framework/tools/FrameworkHelper.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/framework/tools/FrameworkHelper.cxx
(original)
+++ openoffice/trunk/main/sd/source/ui/framework/tools/FrameworkHelper.cxx Wed
Jun 5 15:40:56 2013
@@ -637,57 +637,6 @@ Reference<XResourceId> FrameworkHelper::
-Reference<XResourceId> FrameworkHelper::RequestSidebarPanel (
- const OUString& rsTaskPanelURL,
- const bool bEnsureTaskPaneIsVisible)
-{
- try
- {
- if (mxConfigurationController.is())
- {
- // Check the existence of the task pane.
- if ( ! bEnsureTaskPaneIsVisible)
- {
- Reference<XConfiguration> xConfiguration (
- mxConfigurationController->getCurrentConfiguration());
- if (xConfiguration.is())
- if ( ! xConfiguration->hasResource(
- CreateResourceId(msSidebarViewURL,
msSidebarPaneURL)))
- {
- // Task pane is not active. Do not force it.
- return NULL;
- }
- }
-
- // Create the resource id from URLs for the sidebar pane
- // and view and the requested panel.
- mxConfigurationController->requestResourceActivation(
- CreateResourceId(msSidebarPaneURL),
- ResourceActivationMode_ADD);
- mxConfigurationController->requestResourceActivation(
- CreateResourceId(msSidebarViewURL, msSidebarPaneURL),
- ResourceActivationMode_REPLACE);
- Reference<XResourceId> xPanelId (CreateResourceId(rsTaskPanelURL,
msSidebarViewURL, msSidebarPaneURL));
- mxConfigurationController->requestResourceActivation(
- xPanelId,
- ResourceActivationMode_REPLACE);
-
- return xPanelId;
- }
- }
- catch (lang::DisposedException&)
- {
- Dispose();
- }
- catch (RuntimeException&)
- {}
-
- return NULL;
-}
-
-
-
-
void FrameworkHelper::RequestResourceDeactivation (const
cssu::Reference<cssdf::XResourceId>& rxResourceId)
{
try
Modified: openoffice/trunk/main/sd/source/ui/inc/framework/FrameworkHelper.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/inc/framework/FrameworkHelper.hxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/inc/framework/FrameworkHelper.hxx
(original)
+++ openoffice/trunk/main/sd/source/ui/inc/framework/FrameworkHelper.hxx Wed
Jun 5 15:40:56 2013
@@ -229,25 +229,6 @@ public:
const ::rtl::OUString& rsResourceURL,
const ::rtl::OUString& rsAnchorURL);
- /** Request the activation of the specified panel in the
- sidebar.
- @param rsSidebarPanelURL
- The panel that is to be activated.
- @param bEnsurePaneIsVisible
- When this is <TRUE/> then the sidebar pane is activated when not
- yet active.
- When this flag is <FALSE/> then the requested panel
- is activated only when the task pane is already active. When it
- is not active then this call is silently ignored.
- @return
- The resource id of the requested sidebar panel is returned. With
that
- the caller can, for example, call RunOnResourceActivation() to
- do some initialization after the requested view becomes active.
- */
- cssu::Reference<cssdf::XResourceId> RequestSidebarPanel (
- const ::rtl::OUString& rsSidebarPanelURL,
- const bool bEnsureTaskPaneIsVisible = true);
-
/** Request the deactivation of the specified resource.
*/
void RequestResourceDeactivation (
Modified:
openoffice/trunk/main/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
---
openoffice/trunk/main/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
(original)
+++
openoffice/trunk/main/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
Wed Jun 5 15:40:56 2013
@@ -76,6 +76,7 @@
#include <sfx2/viewfrm.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/dispatch.hxx>
+#include <sfx2/sidebar/Sidebar.hxx>
#include <svx/svxids.hrc>
#include <svx/zoomitem.hxx>
#include <svx/svxdlg.hxx>
@@ -187,12 +188,10 @@ void SlotManager::FuTemporary (SfxReques
case SID_SLIDE_TRANSITIONS_PANEL:
{
- // Make the slide transition panel visible (expand it)
- // in the tool pane.
- if (mrSlideSorter.GetViewShellBase() != NULL)
-
framework::FrameworkHelper::Instance(*mrSlideSorter.GetViewShellBase())
- ->RequestSidebarPanel(
-
sd::framework::FrameworkHelper::msSlideTransitionTaskPanelURL);
+ // Make the slide transition panel visible in the sidebar.
+ ::sfx2::sidebar::Sidebar::ShowPanel(
+
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SlideTransitionPanel")),
+ pShell->GetViewFrame()->GetFrame().GetFrameInterface());
rRequest.Ignore ();
break;
}
Modified: openoffice/trunk/main/sd/source/ui/table/tablefunction.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/table/tablefunction.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/table/tablefunction.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/table/tablefunction.cxx Wed Jun 5
15:40:56 2013
@@ -55,6 +55,7 @@
#include <sfx2/dispatch.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/request.hxx>
+#include <sfx2/sidebar/Sidebar.hxx>
#include <svl/style.hxx>
#include "framework/FrameworkHelper.hxx"
@@ -204,10 +205,11 @@ SfxViewShell* pViewShell = GetViewShell(
}
else
{
- // Make the slide transition panel visible (expand it)
in the
- // tool pane.
-
framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
- framework::FrameworkHelper::msTableDesignPanelURL);
+ // Make the table design panel visible (expand it) in
the
+ // sidebar.
+ ::sfx2::sidebar::Sidebar::ShowPanel(
+
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImpressTableDesignPanel")),
+ GetViewFrame()->GetFrame().GetFrameInterface());
}
Cancel();
Modified: openoffice/trunk/main/sd/source/ui/view/GraphicViewShellBase.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/GraphicViewShellBase.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/view/GraphicViewShellBase.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/view/GraphicViewShellBase.cxx Wed Jun 5
15:40:56 2013
@@ -96,7 +96,6 @@ void GraphicViewShellBase::Execute (SfxR
case SID_OUTLINEMODE:
case SID_NOTESMODE:
case SID_HANDOUTMODE:
- case SID_SHOW_TOOL_PANEL:
// Prevent some Impress-only slots from being executed.
rRequest.Cancel();
break;
Modified: openoffice/trunk/main/sd/source/ui/view/ViewShellBase.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/ViewShellBase.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/view/ViewShellBase.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/view/ViewShellBase.cxx Wed Jun 5
15:40:56 2013
@@ -198,7 +198,6 @@ public:
void GetSlotState (SfxItemSet& rSet);
void ProcessRestoreEditingViewSlot (void);
- void ProcessTaskPaneSlot (SfxRequest& rRequest);
private:
ViewShellBase& mrBase;
@@ -743,10 +742,6 @@ void ViewShellBase::Execute (SfxRequest&
// The full screen mode is not supported. Ignore the request.
break;
- case SID_SHOW_TOOL_PANEL:
- mpImpl->ProcessTaskPaneSlot(rRequest);
- break;
-
case SID_RESTORE_EDITING_VIEW:
mpImpl->ProcessRestoreEditingViewSlot();
break;
@@ -1535,51 +1530,6 @@ void ViewShellBase::Implementation::GetS
-
-void ViewShellBase::Implementation::ProcessTaskPaneSlot (SfxRequest& rRequest)
-{
- // Set the visibility state of the toolpanel and one of its top
- // level panels.
- sal_Bool bShowToolPanel = sal_True;
- sidebar::PanelId nPanelId (sidebar::PID_UNKNOWN);
- bool bPanelIdGiven = false;
-
- // Extract the given arguments.
- const SfxItemSet* pArgs = rRequest.GetArgs();
- if (pArgs)
- {
- if ((pArgs->Count() == 1) || (pArgs->Count() == 2))
- {
- SFX_REQUEST_ARG (rRequest, pIsPanelVisible,
- SfxBoolItem, ID_VAL_ISVISIBLE, sal_False);
- if (pIsPanelVisible != NULL)
- bShowToolPanel = pIsPanelVisible->GetValue();
- }
- if (pArgs->Count() == 2)
- {
- SFX_REQUEST_ARG (rRequest, pPanelId, SfxUInt32Item,
- ID_VAL_PANEL_INDEX, sal_False);
- if (pPanelId != NULL)
- {
- nPanelId = static_cast<sidebar::PanelId>(pPanelId->GetValue());
- bPanelIdGiven = true;
- }
- }
- }
-
- // Ignore the request for some combinations of panels and view
- // shell types.
- if (bPanelIdGiven
- && ! (nPanelId==sidebar::PID_LAYOUT
- && mrBase.GetMainViewShell()!=NULL
- &&
mrBase.GetMainViewShell()->GetShellType()==ViewShell::ST_OUTLINE))
- {
- framework::FrameworkHelper::Instance(mrBase)->RequestSidebarPanel(
- framework::FrameworkHelper::msLayoutTaskPanelURL);
- }
-}
-
-
} // end of namespace sd
Modified: openoffice/trunk/main/sd/source/ui/view/ViewShellImplementation.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/ViewShellImplementation.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/view/ViewShellImplementation.cxx
(original)
+++ openoffice/trunk/main/sd/source/ui/view/ViewShellImplementation.cxx Wed Jun
5 15:40:56 2013
@@ -53,6 +53,7 @@
#include <sfx2/bindings.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/request.hxx>
+#include <sfx2/sidebar/Sidebar.hxx>
#include <svl/aeitem.hxx>
#include <svx/imapdlg.hxx>
#include <vcl/msgbox.hxx>
@@ -147,27 +148,9 @@ void ViewShell::Implementation::ProcessM
}
// Make the layout menu visible in the tool pane.
- SfxBoolItem aMakeToolPaneVisible (ID_VAL_ISVISIBLE, sal_True);
- SfxUInt32Item aPanelId (ID_VAL_PANEL_INDEX, sidebar::PID_LAYOUT);
- SfxViewFrame* pFrame = mrViewShell.GetViewFrame();
- if (pFrame!=NULL && pFrame->GetDispatcher()!=NULL)
- {
- pFrame->GetDispatcher()->Execute (
- SID_SHOW_TOOL_PANEL,
- SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD,
- &aMakeToolPaneVisible,
- &aPanelId,
- NULL);
- }
- else
- {
- DBG_ASSERT(pFrame!=NULL && pFrame->GetDispatcher()!=NULL,
- "ViewShell::Implementation::ProcessModifyPageSlot(): can
not get dispatcher");
- }
-
- // We have activated a non-modal control in the task pane.
- // Because it does not return anything we can not do anything
- // more right now and have to exit here.
+ sfx2::sidebar::Sidebar::ShowPanel(
+
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImpressLayoutsPanel")),
+ mrViewShell.GetViewFrame()->GetFrame().GetFrameInterface());
break;
}
else if (pArgs->Count() == 4)
Modified: openoffice/trunk/main/sd/source/ui/view/drviews6.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews6.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/view/drviews6.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/view/drviews6.cxx Wed Jun 5 15:40:56
2013
@@ -78,6 +78,12 @@
#include "DrawDocShell.hxx"
#include "framework/FrameworkHelper.hxx"
#include <svx/svdoashp.hxx>
+#include <sfx2/sidebar/Sidebar.hxx>
+
+namespace {
+ static const ::rtl::OUString CustomAnimationPanelId
(RTL_CONSTASCII_USTRINGPARAM("CustomAnimationPanel"));
+ static const ::rtl::OUString SlideTransitionPanelId
(RTL_CONSTASCII_USTRINGPARAM("SlideTransitionPanel"));
+}
namespace sd {
@@ -574,10 +580,10 @@ void DrawViewShell::FuTemp04(SfxRequest&
case SID_CUSTOM_ANIMATION_PANEL:
{
- // Make the slide transition panel visible (expand it) in the
- // tool pane.
-
framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
- framework::FrameworkHelper::msCustomAnimationTaskPanelURL);
+ // Make the slide transition panel visible in the sidebar.
+ ::sfx2::sidebar::Sidebar::ShowPanel(
+ CustomAnimationPanelId,
+ GetViewFrame()->GetFrame().GetFrameInterface());
Cancel();
rReq.Done ();
@@ -586,10 +592,10 @@ void DrawViewShell::FuTemp04(SfxRequest&
case SID_SLIDE_TRANSITIONS_PANEL:
{
- // Make the slide transition panel visible (expand it) in the
- // tool pane.
-
framework::FrameworkHelper::Instance(GetViewShellBase())->RequestSidebarPanel(
- framework::FrameworkHelper::msSlideTransitionTaskPanelURL);
+ // Make the slide transition panel visible in the sidebar.
+ ::sfx2::sidebar::Sidebar::ShowPanel(
+ SlideTransitionPanelId,
+ GetViewFrame()->GetFrame().GetFrameInterface());
Cancel();
rReq.Done ();
Modified: openoffice/trunk/main/sfx2/Library_sfx.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/Library_sfx.mk?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/Library_sfx.mk (original)
+++ openoffice/trunk/main/sfx2/Library_sfx.mk Wed Jun 5 15:40:56 2013
@@ -213,6 +213,7 @@ $(eval $(call gb_Library_add_exception_o
sfx2/source/menu/virtmenu \
sfx2/source/notify/eventsupplier \
sfx2/source/notify/hintpost \
+ sfx2/source/sidebar/Sidebar \
sfx2/source/sidebar/SidebarChildWindow \
sfx2/source/sidebar/SidebarDockingWindow \
sfx2/source/sidebar/SidebarController \
Modified: openoffice/trunk/main/sfx2/Package_inc.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/Package_inc.mk?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/Package_inc.mk (original)
+++ openoffice/trunk/main/sfx2/Package_inc.mk Wed Jun 5 15:40:56 2013
@@ -139,6 +139,7 @@ $(eval $(call gb_Package_add_file,sfx2_i
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/IContextChangeReceiver.hxx,sfx2/sidebar/IContextChangeReceiver.hxx))
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/ILayoutableWindow.hxx,sfx2/sidebar/ILayoutableWindow.hxx))
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/ResourceDefinitions.hrc,sfx2/sidebar/ResourceDefinitions.hrc))
+$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/Sidebar.hxx,sfx2/sidebar/Sidebar.hxx))
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/SidebarChildWindow.hxx,sfx2/sidebar/SidebarChildWindow.hxx))
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/SidebarPanelBase.hxx,sfx2/sidebar/SidebarPanelBase.hxx))
$(eval $(call
gb_Package_add_file,sfx2_inc,inc/sfx2/sidebar/SidebarToolBox.hxx,sfx2/sidebar/SidebarToolBox.hxx))
Added: openoffice/trunk/main/sfx2/inc/sfx2/sidebar/Sidebar.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/inc/sfx2/sidebar/Sidebar.hxx?rev=1489925&view=auto
==============================================================================
--- openoffice/trunk/main/sfx2/inc/sfx2/sidebar/Sidebar.hxx (added)
+++ openoffice/trunk/main/sfx2/inc/sfx2/sidebar/Sidebar.hxx Wed Jun 5 15:40:56
2013
@@ -0,0 +1,60 @@
+/**************************************************************
+ *
+ * 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 SFX_SIDEBAR_SIDEBAR_HXX
+#define SFX_SIDEBAR_SIDEBAR_HXX
+
+#include "sfx2/dllapi.h"
+#include <com/sun/star/frame/XFrame.hpp>
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+
+
+namespace sfx2 { namespace sidebar {
+
+/** Accept requests for switching to certain panels or decks.
+*/
+class SFX2_DLLPUBLIC Sidebar
+{
+public:
+ /** Switch to the deck that contains the specified panel and make
+ sure that the panel is visible (expanded and scrolled into the
+ visible area.)
+ Note that most of the work is done asynchronously and that
+ this function probably returns before the requested panel is visible.
+ */
+ static void ShowPanel (
+ const ::rtl::OUString& rsPanelId,
+ const cssu::Reference<css::frame::XFrame>& rxFrame);
+
+ /** Switch to the specified deck.
+ Note that most of the work is done asynchronously and that
+ this function probably returns before the requested deck is visible.
+ */
+ static void ShowDeck (
+ const ::rtl::OUString& rsDeckId,
+ const cssu::Reference<css::frame::XFrame>& rxFrame);
+};
+
+} } // end of namespace sfx2::sidebar
+
+#endif
Modified: openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.cxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.cxx Wed Jun 5
15:40:56 2013
@@ -28,6 +28,15 @@
namespace sfx2 { namespace sidebar {
+AsynchronousCall::AsynchronousCall (void)
+ : maAction(),
+ mnCallId(0)
+{
+}
+
+
+
+
AsynchronousCall::AsynchronousCall (const Action& rAction)
: maAction(rAction),
mnCallId(0)
Modified: openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.hxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.hxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/AsynchronousCall.hxx Wed Jun 5
15:40:56 2013
@@ -35,6 +35,7 @@ class AsynchronousCall
public:
typedef ::boost::function<void(void)> Action;
+ AsynchronousCall (void);
AsynchronousCall (const Action& rAction);
~AsynchronousCall (void);
Modified: openoffice/trunk/main/sfx2/source/sidebar/Sidebar.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/Sidebar.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/Sidebar.cxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/Sidebar.cxx Wed Jun 5 15:40:56
2013
@@ -21,7 +21,8 @@
#include "precompiled_sfx2.hxx"
-#include "Sidebar.hxx"
+#include "sfx2/sidebar/Sidebar.hxx"
+#include "SidebarController.hxx"
#include "ResourceManager.hxx"
using namespace css;
@@ -29,53 +30,37 @@ using namespace cssu;
namespace sfx2 { namespace sidebar {
-Sidebar::Sidebar(
- Window& rParentWindow,
- const Reference<frame::XFrame>& rxDocumentFrame)
- : Window(&rParentWindow, WB_DIALOGCONTROL)
-{
- ContentPanelManager::Instance();
-}
-
-
-
-
-Sidebar::~Sidebar (void)
-{
-}
-
-
-
-void Sidebar::Resize (void)
+void Sidebar::ShowPanel (
+ const ::rtl::OUString& rsPanelId,
+ const Reference<frame::XFrame>& rxFrame)
{
- Window::Resize();
- // m_pImpl->OnResize();
-}
-
-
-
-
-void Sidebar::GetFocus (void)
-{
- Window::GetFocus();
- // m_pImpl->OnGetFocus();
+ SidebarController* pController =
SidebarController::GetSidebarControllerForFrame(rxFrame);
+ const PanelDescriptor* pPanelDescriptor =
ResourceManager::Instance().GetPanelDescriptor(rsPanelId);
+ if (pController!=NULL && pPanelDescriptor != NULL)
+ {
+ // This should be a lot more sophisticated:
+ // - Make the deck switching asynchronous
+ // - Make sure that the panel is visible and expanded after
+ // the switch.
+ // - Make sure to use a context that really shows the panel
+ //
+ // All that is not necessary for the current use cases so lets
+ // keep it simple for the time being.
+ pController->RequestSwitchToDeck(pPanelDescriptor->msDeckId);
+ }
}
-void Sidebar::DataChanged (const DataChangedEvent& rDataChangedEvent)
+void Sidebar::ShowDeck (
+ const ::rtl::OUString& rsDeckId,
+ const Reference<frame::XFrame>& rxFrame)
{
- if (rDataChangedEvent.GetType() == DATACHANGED_SETTINGS
- && (rDataChangedEvent.GetFlags() & SETTINGS_STYLE)!= 0)
- {
- Invalidate();
- }
- else
- Window::DataChanged(rDataChangedEvent);
+ SidebarController* pController =
SidebarController::GetSidebarControllerForFrame(rxFrame);
+ if (pController != NULL)
+ pController->RequestSwitchToDeck(rsDeckId);
}
-
-
} } // end of namespace sfx2::sidebar
Modified: openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx Wed Jun 5
15:40:56 2013
@@ -83,6 +83,8 @@ namespace
namespace sfx2 { namespace sidebar {
+SidebarController::SidebarControllerContainer
SidebarController::maSidebarControllerContainer;
+
namespace {
enum MenuId
{
@@ -119,6 +121,7 @@ SidebarController::SidebarController (
msCurrentDeckTitle(),
maPropertyChangeForwarder(::boost::bind(&SidebarController::BroadcastPropertyChange,
this)),
maContextChangeUpdate(::boost::bind(&SidebarController::UpdateConfigurations,
this)),
+ maAsynchronousDeckSwitch(),
mbIsDeckRequestedOpen(),
mbIsDeckOpen(),
mbCanDeckBeOpened(true),
@@ -161,6 +164,12 @@ SidebarController::SidebarController (
mxReadOnlyModeDispatch->addStatusListener(this, aURL);
SwitchToDeck(A2S("default"));
+
+ WeakReference<SidebarController> xWeakController (this);
+ maSidebarControllerContainer.insert(
+ SidebarControllerContainer::value_type(
+ rxFrame,
+ xWeakController));
}
@@ -173,8 +182,29 @@ SidebarController::~SidebarController (v
+SidebarController* SidebarController::GetSidebarControllerForFrame (
+ const cssu::Reference<css::frame::XFrame>& rxFrame)
+{
+ SidebarControllerContainer::iterator iEntry
(maSidebarControllerContainer.find(rxFrame));
+ if (iEntry == maSidebarControllerContainer.end())
+ return NULL;
+
+ cssu::Reference<XInterface> xController (iEntry->second.get());
+ if ( ! xController.is())
+ return NULL;
+
+ return dynamic_cast<SidebarController*>(xController.get());
+}
+
+
+
+
void SAL_CALL SidebarController::disposing (void)
{
+ SidebarControllerContainer::iterator iEntry
(maSidebarControllerContainer.find(mxFrame));
+ if (iEntry != maSidebarControllerContainer.end())
+ maSidebarControllerContainer.erase(iEntry);
+
maFocusManager.Clear();
cssu::Reference<css::ui::XContextChangeEventMultiplexer> xMultiplexer (
@@ -212,6 +242,7 @@ void SAL_CALL SidebarController::disposi
static_cast<css::beans::XPropertyChangeListener*>(this));
maContextChangeUpdate.CancelRequest();
+ maAsynchronousDeckSwitch.CancelRequest();
}
@@ -227,7 +258,10 @@ void SAL_CALL SidebarController::notifyC
rEvent.ApplicationName,
rEvent.ContextName);
if (maRequestedContext != maCurrentContext)
+ {
+ maAsynchronousDeckSwitch.CancelRequest();
maContextChangeUpdate.RequestCall();
+ }
}
@@ -270,6 +304,7 @@ void SAL_CALL SidebarController::statusC
if ( ! mbIsDocumentReadOnly)
msCurrentDeckId = gsDefaultDeckId;
mnRequestedForceFlags |= SwitchFlag_ForceSwitch;
+ maAsynchronousDeckSwitch.CancelRequest();
maContextChangeUpdate.RequestCall();
}
}
@@ -442,16 +477,6 @@ void SidebarController::UpdateConfigurat
SwitchToDeck(
*ResourceManager::Instance().GetDeckDescriptor(sNewDeckId),
maCurrentContext);
-
-#ifdef DEBUG
- // Show the context name in the deck title bar.
- if (mpCurrentDeck)
- {
- DeckTitleBar* pTitleBar = mpCurrentDeck->GetTitleBar();
- if (pTitleBar != NULL)
- pTitleBar->SetTitle(msCurrentDeckTitle+A2S("
(")+maCurrentContext.msContext+A2S(")"));
- }
-#endif
}
}
@@ -463,6 +488,18 @@ void SidebarController::OpenThenSwitchTo
{
RequestOpenDeck();
SwitchToDeck(rsDeckId);
+ mpTabBar->Invalidate();
+}
+
+
+
+
+void SidebarController::RequestSwitchToDeck (
+ const ::rtl::OUString& rsDeckId)
+{
+ maContextChangeUpdate.CancelRequest();
+ maAsynchronousDeckSwitch.RequestCall(
+ ::boost::bind(&SidebarController::OpenThenSwitchToDeck, this,
rsDeckId));
}
@@ -546,10 +583,18 @@ void SidebarController::SwitchToDeck (
mpParentWindow,
::boost::bind(&SidebarController::RequestCloseDeck, this)));
msCurrentDeckTitle = rDeckDescriptor.msTitle;
+
}
if ( ! mpCurrentDeck)
return;
-
+
+#ifdef DEBUG
+ // Show the context name in the deck title bar.
+ DeckTitleBar* pTitleBar = mpCurrentDeck->GetTitleBar();
+ if (pTitleBar != NULL)
+ pTitleBar->SetTitle(rDeckDescriptor.msTitle+A2S("
(")+maCurrentContext.msContext+A2S(")"));
+#endif
+
// Update the panel list.
const sal_Int32 nNewPanelCount (aPanelContextDescriptors.size());
SharedPanelContainer aNewPanels;
@@ -758,6 +803,7 @@ IMPL_LINK(SidebarController, WindowEvent
UpdateTitleBarIcons();
mpParentWindow->Invalidate();
mnRequestedForceFlags |= SwitchFlag_ForceNewDeck |
SwitchFlag_ForceNewPanels;
+ maAsynchronousDeckSwitch.CancelRequest();
maContextChangeUpdate.RequestCall();
break;
Modified: openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx Wed Jun 5
15:40:56 2013
@@ -42,6 +42,9 @@
#include <boost/optional.hpp>
#include <cppuhelper/compbase4.hxx>
#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <comphelper/stl_types.hxx>
+
namespace css = ::com::sun::star;
namespace cssu = ::com::sun::star::uno;
@@ -80,6 +83,15 @@ public:
const cssu::Reference<css::frame::XFrame>& rxFrame);
virtual ~SidebarController (void);
+ /** Return the SidebarController object that is associated with
+ the given XFrame.
+ @return
+ When there is no SidebarController object for the given
+ XFrame then <NULL/> is returned.
+ */
+ static SidebarController* GetSidebarControllerForFrame (
+ const cssu::Reference<css::frame::XFrame>& rxFrame);
+
// ui::XContextChangeEventListener
virtual void SAL_CALL notifyContextChangeEvent (const
css::ui::ContextChangeEventObject& rEvent)
throw(cssu::RuntimeException);
@@ -113,7 +125,7 @@ public:
const static sal_Int32 SwitchFlag_ForceNewDeck = 0x02;
const static sal_Int32 SwitchFlag_ForceNewPanels = 0x02;
- void SwitchToDeck (
+ void RequestSwitchToDeck (
const ::rtl::OUString& rsDeckId);
void OpenThenSwitchToDeck (
const ::rtl::OUString& rsDeckId);
@@ -129,6 +141,12 @@ public:
FocusManager& GetFocusManager (void);
private:
+ typedef ::std::map<
+ const cssu::Reference<css::frame::XFrame>,
+ cssu::WeakReference<SidebarController>
+ > SidebarControllerContainer;
+ static SidebarControllerContainer maSidebarControllerContainer;
+
::boost::scoped_ptr<Deck> mpCurrentDeck;
SidebarDockingWindow* mpParentWindow;
::boost::scoped_ptr<TabBar> mpTabBar;
@@ -141,6 +159,7 @@ private:
::rtl::OUString msCurrentDeckTitle;
AsynchronousCall maPropertyChangeForwarder;
AsynchronousCall maContextChangeUpdate;
+ AsynchronousCall maAsynchronousDeckSwitch;
/** Two flags control whether the deck is displayed or if only the
tab bar remains visible.
@@ -188,6 +207,8 @@ private:
const bool bIsInitiallyExpanded,
const Context& rContext);
void SwitchToDeck (
+ const ::rtl::OUString& rsDeckId);
+ void SwitchToDeck (
const DeckDescriptor& rDeckDescriptor,
const Context& rContext);
void ShowPopupMenu (
Modified: openoffice/trunk/main/sfx2/source/sidebar/SidebarDockingWindow.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/SidebarDockingWindow.hxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/SidebarDockingWindow.hxx
(original)
+++ openoffice/trunk/main/sfx2/source/sidebar/SidebarDockingWindow.hxx Wed Jun
5 15:40:56 2013
@@ -24,7 +24,6 @@
#include "sfx2/dockwin.hxx"
#include "sfx2/dockwin.hxx"
-#include "Sidebar.hxx"
#include <rtl/ref.hxx>
Modified: openoffice/trunk/main/sfx2/source/sidebar/TabBar.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/TabBar.cxx?rev=1489925&r1=1489924&r2=1489925&view=diff
==============================================================================
--- openoffice/trunk/main/sfx2/source/sidebar/TabBar.cxx (original)
+++ openoffice/trunk/main/sfx2/source/sidebar/TabBar.cxx Wed Jun 5 15:40:56
2013
@@ -236,9 +236,15 @@ void TabBar::Layout (void)
void TabBar::HighlightDeck (const ::rtl::OUString& rsDeckId)
{
- Item* pItem = GetItemForId(rsDeckId);
- if (pItem != NULL)
- pItem->mpButton->Check();
+ for (ItemContainer::iterator iItem(maItems.begin()),iEnd(maItems.end());
+ iItem!=iEnd;
+ ++iItem)
+ {
+ if (iItem->msDeckId.equals(rsDeckId))
+ iItem->mpButton->Check(sal_True);
+ else
+ iItem->mpButton->Check(sal_False);
+ }
}