summaryrefslogtreecommitdiff
path: root/sd/source/ui/toolpanel/TaskPaneViewShell.cxx
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2007-04-03 15:21:15 +0000
committerRüdiger Timm <rt@openoffice.org>2007-04-03 15:21:15 +0000
commita021467b2523cfdca41472346f0729845b8db4d0 (patch)
treeba9d6c5a478a6a86287c0f22c3e94ad47aca0108 /sd/source/ui/toolpanel/TaskPaneViewShell.cxx
parent7d75e96c57d58996fd63e5eeb1e056f3b159a00b (diff)
INTEGRATION: CWS components1 (1.14.96); FILE MERGED
2007/01/29 17:30:37 af 1.14.96.6: #i68075# New RelocateToParentWindow() method. 2007/01/25 15:23:26 af 1.14.96.5: RESYNC: (1.15-1.16); FILE MERGED 2007/01/24 17:49:50 af 1.14.96.4: #i68075# The click handler can now be supplied along with a control. 2006/09/25 17:29:20 af 1.14.96.3: RESYNC: (1.14-1.15); FILE MERGED 2006/09/21 09:13:11 af 1.14.96.2: #i68075# Removed unused mpTitleToolBox member. 2006/08/22 11:52:13 af 1.14.96.1: #i68075# Added PaneActivation functor. Adaption to changes in the pane window implementation.
Diffstat (limited to 'sd/source/ui/toolpanel/TaskPaneViewShell.cxx')
-rw-r--r--sd/source/ui/toolpanel/TaskPaneViewShell.cxx178
1 files changed, 157 insertions, 21 deletions
diff --git a/sd/source/ui/toolpanel/TaskPaneViewShell.cxx b/sd/source/ui/toolpanel/TaskPaneViewShell.cxx
index 8344356e7c68..6cda2af0b8f2 100644
--- a/sd/source/ui/toolpanel/TaskPaneViewShell.cxx
+++ b/sd/source/ui/toolpanel/TaskPaneViewShell.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: TaskPaneViewShell.cxx,v $
*
- * $Revision: 1.16 $
+ * $Revision: 1.17 $
*
- * last change: $Author: kz $ $Date: 2006-12-12 18:43:15 $
+ * last change: $Author: rt $ $Date: 2007-04-03 16:21:15 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -68,6 +68,15 @@
#include "helpids.h"
#include "strings.hrc"
#include "sdresid.hxx"
+#include "framework/FrameworkHelper.hxx"
+
+#ifndef _COM_SUN_STAR_DRAWING_FRAMEWORK_XRESOURCEID_HPP_
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#endif
+#ifndef _COM_SUN_STAR_DRAWING_FRAMEWORK_RESOURCEACTIVATIONMODE_HPP_
+#include <com/sun/star/drawing/framework/ResourceActivationMode.hpp>
+#endif
+
#ifndef _SVX_DLG_CTRL_HXX
#include <svx/dlgctrl.hxx>
#endif
@@ -106,12 +115,6 @@
#include <vcl/svapp.hxx>
#endif
-using namespace ::sd::toolpanel;
-#define TaskPaneViewShell
-#include "sdslots.hxx"
-
-
-
//#define SHOW_TEST_PANEL
#ifdef SHOW_TEST_PANEL
#include "TestPanel.hxx"
@@ -122,6 +125,17 @@ using namespace ::sd::toolpanel;
#endif
#include <vector>
+#include <boost/shared_ptr.hpp>
+
+using namespace ::sd::toolpanel;
+
+#define TaskPaneViewShell
+#include "sdslots.hxx"
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::sd::framework::FrameworkHelper;
namespace sd { namespace toolpanel {
@@ -178,6 +192,9 @@ private:
InternalIdToPanelIdMap maIndexMap;
};
+
+
+
namespace {
enum MenuId {
@@ -202,6 +219,21 @@ public:
}
};
+class ResourceActivationClickHandler
+{
+public:
+ ResourceActivationClickHandler (
+ const ::boost::shared_ptr<FrameworkHelper>& rpFrameworkHelper,
+ const Reference<drawing::framework::XResourceId>& rxResourceId,
+ ControlContainer& rControlContainer);
+ void operator () (TitledControl& rTitledControl);
+
+private:
+ ::boost::shared_ptr<FrameworkHelper> mpFrameworkHelper;
+ Reference<drawing::framework::XResourceId> mxResourceId;
+ ControlContainer& mrControlContainer;
+};
+
} // end of anonymouse namespace
@@ -216,18 +248,32 @@ void TaskPaneViewShell::Implementation::Setup (
sal_uInt32 nId;
sal_uInt32 nIdOfControlToExpand;
+ ::boost::shared_ptr<FrameworkHelper> pFrameworkHelper (FrameworkHelper::Instance(rBase));
+ Reference<drawing::framework::XResourceId> xTaskPaneId (pFrameworkHelper->CreateResourceId(
+ FrameworkHelper::msTaskPaneURL, FrameworkHelper::msRightPaneURL));
+
// The master page controls.
nId = pToolPanel->AddControl (
controls::MasterPagesPanel::CreateControlFactory(rBase),
SdResId(STR_TASKPANEL_MASTER_PAGE_TITLE),
- HID_SD_SLIDE_DESIGNS);
+ HID_SD_SLIDE_DESIGNS,
+ ResourceActivationClickHandler(
+ pFrameworkHelper,
+ pFrameworkHelper->CreateResourceId(
+ FrameworkHelper::msMasterPagesTaskPanelURL, xTaskPaneId),
+ pToolPanel->GetControlContainer()));
AddPanel (nId, PID_MASTER_PAGES);
// Layout Menu.
nId = pToolPanel->AddControl (
LayoutMenu::CreateControlFactory(rBase, *pDocument->GetDocSh()),
SdResId(STR_TASKPANEL_LAYOUT_MENU_TITLE),
- HID_SD_SLIDE_LAYOUTS);
+ HID_SD_SLIDE_LAYOUTS,
+ ResourceActivationClickHandler(
+ pFrameworkHelper,
+ pFrameworkHelper->CreateResourceId(
+ FrameworkHelper::msLayoutTaskPanelURL, xTaskPaneId),
+ pToolPanel->GetControlContainer()));
AddPanel (nId, PID_LAYOUT);
nIdOfControlToExpand = nId;
@@ -238,7 +284,12 @@ void TaskPaneViewShell::Implementation::Setup (
nId = pToolPanel->AddControl (
controls::CustomAnimationPanel::CreateControlFactory(rBase),
aControl.GetText(),
- HID_SD_CUSTOM_ANIMATIONS);
+ HID_SD_CUSTOM_ANIMATIONS,
+ ResourceActivationClickHandler(
+ pFrameworkHelper,
+ pFrameworkHelper->CreateResourceId(
+ FrameworkHelper::msCustomAnimationTaskPanelURL, xTaskPaneId),
+ pToolPanel->GetControlContainer()));
AddPanel (nId, PID_CUSTOM_ANIMATION);
}
@@ -249,7 +300,12 @@ void TaskPaneViewShell::Implementation::Setup (
nId = pToolPanel->AddControl (
controls::SlideTransitionPanel::CreateControlFactory(rBase),
aControl.GetText(),
- HID_SD_SLIDE_TRANSITIONS);
+ HID_SD_SLIDE_TRANSITIONS,
+ ResourceActivationClickHandler(
+ pFrameworkHelper,
+ pFrameworkHelper->CreateResourceId(
+ FrameworkHelper::msSlideTransitionTaskPanelURL, xTaskPaneId),
+ pToolPanel->GetControlContainer()));
AddPanel (nId, PID_SLIDE_TRANSITION);
}
@@ -287,6 +343,18 @@ void TaskPaneViewShell::Implementation::Setup (
+void TaskPaneViewShell::Initialize (void)
+{
+ if ( ! mbIsInitialized)
+ {
+ mbIsInitialized = true;
+ mpImpl->Setup (mpTaskPane.get(), GetViewShellBase());
+ }
+}
+
+
+
+
TaskPaneViewShell::TaskPaneViewShell (
SfxViewFrame* pFrame,
ViewShellBase& rViewShellBase,
@@ -295,7 +363,6 @@ TaskPaneViewShell::TaskPaneViewShell (
: ViewShell (pFrame, pParentWindow, rViewShellBase),
mpImpl(NULL),
mpTaskPane(NULL),
- mpTitleToolBox(NULL),
mbIsInitialized(false),
mpSubShellManager(),
mnMenuId(0)
@@ -314,8 +381,7 @@ TaskPaneViewShell::TaskPaneViewShell (
GetParentWindow()->SetHelpId(HID_SD_TASK_PANE);
- PaneDockingWindow* pDockingWindow = static_cast<PaneDockingWindow*>(
- pParentWindow);
+ PaneDockingWindow* pDockingWindow = dynamic_cast<PaneDockingWindow*>(GetDockingWindow());
if (pDockingWindow != NULL)
{
pDockingWindow->InitializeTitleToolBox();
@@ -393,11 +459,7 @@ void TaskPaneViewShell::ArrangeGUIElements (void)
Point aOrigin (maViewPos);
Size aSize (maViewSize);
- if ( ! mbIsInitialized)
- {
- mbIsInitialized = true;
- mpImpl->Setup (mpTaskPane.get(), GetViewShellBase());
- }
+ Initialize();
// Place the task pane.
if (mpTaskPane.get() != NULL)
@@ -606,7 +668,7 @@ DockingWindow* TaskPaneViewShell::GetDockingWindow (void)
DockingWindow* pDockingWindow = NULL;
while (pParentWindow!=NULL && pDockingWindow==NULL)
{
- pDockingWindow = static_cast<DockingWindow*>(pParentWindow);
+ pDockingWindow = dynamic_cast<DockingWindow*>(pParentWindow);
pParentWindow = pParentWindow->GetParent();
}
return pDockingWindow;
@@ -617,6 +679,7 @@ DockingWindow* TaskPaneViewShell::GetDockingWindow (void)
void TaskPaneViewShell::ShowPanel (PanelId nPublicId)
{
+ Initialize();
sal_uInt32 nId (mpImpl->GetInternalId (nPublicId));
if (nId != Implementation::mnInvalidId)
{
@@ -669,6 +732,33 @@ void TaskPaneViewShell::ShowPanel (PanelId nPublicId)
+bool TaskPaneViewShell::RelocateToParentWindow (::Window* pParentWindow)
+{
+ ::Window* pOldParentWindow = GetParentWindow();
+ FocusManager::Instance().RemoveLinks(pOldParentWindow, mpTaskPane.get());
+ FocusManager::Instance().RemoveLinks(mpTaskPane.get(), pOldParentWindow);
+
+ ViewShell::RelocateToParentWindow(pParentWindow);
+
+ PaneDockingWindow* pDockingWindow = dynamic_cast<PaneDockingWindow*>(GetDockingWindow());
+ if (pDockingWindow != NULL)
+ {
+ pDockingWindow->InitializeTitleToolBox();
+ mnMenuId = pDockingWindow->AddMenu (
+ String(SdResId(STR_TASKPANEL_MASTER_PAGE_MENU_TITLE)),
+ HID_SD_TASK_PANE_VIEW_MENU,
+ LINK(this, TaskPaneViewShell, ToolboxClickHandler));
+ }
+ FocusManager::Instance().RegisterDownLink(pParentWindow, mpTaskPane.get());
+
+ Resize();
+
+ return true;
+}
+
+
+
+
//===== TaskPaneViewShell::Implementation =====================================
TaskPaneViewShell::Implementation::Implementation (void)
@@ -729,4 +819,50 @@ sal_uInt32
+//===== PanelActivation =======================================================
+
+PanelActivation::PanelActivation (ViewShellBase& rBase, TaskPaneViewShell::PanelId nPanelId)
+ : mrBase(rBase),
+ mnPanelId(nPanelId)
+{
+}
+
+void PanelActivation::operator() (bool)
+{
+ toolpanel::TaskPaneViewShell* pTaskPane
+ = dynamic_cast<toolpanel::TaskPaneViewShell*>(
+ framework::FrameworkHelper::Instance(mrBase)
+ ->GetViewShell(framework::FrameworkHelper::msRightPaneURL).get());
+ if (pTaskPane != NULL)
+ pTaskPane->ShowPanel(mnPanelId);
+}
+
+
+
+
+//===== ResourceActivationClickHandler ========================================
+
+ResourceActivationClickHandler::ResourceActivationClickHandler (
+ const ::boost::shared_ptr<FrameworkHelper>& rpFrameworkHelper,
+ const Reference<drawing::framework::XResourceId>& rxResourceId,
+ ControlContainer& rControlContainer)
+ : mpFrameworkHelper(rpFrameworkHelper),
+ mxResourceId(rxResourceId),
+ mrControlContainer(rControlContainer)
+{
+}
+
+
+
+
+void ResourceActivationClickHandler::operator () (TitledControl& rTitledControl)
+{
+ mrControlContainer.SetExpansionState (
+ &rTitledControl,
+ ControlContainer::ES_EXPAND);
+ mpFrameworkHelper->GetConfigurationController()->requestResourceActivation(
+ mxResourceId, drawing::framework::ResourceActivationMode_REPLACE);
+}
+
+
} } // end of namespace ::sd::toolpanel