1*5b190011SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*5b190011SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*5b190011SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*5b190011SAndrew Rist * distributed with this work for additional information
6*5b190011SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*5b190011SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*5b190011SAndrew Rist * "License"); you may not use this file except in compliance
9*5b190011SAndrew Rist * with the License. You may obtain a copy of the License at
10*5b190011SAndrew Rist *
11*5b190011SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*5b190011SAndrew Rist *
13*5b190011SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*5b190011SAndrew Rist * software distributed under the License is distributed on an
15*5b190011SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*5b190011SAndrew Rist * KIND, either express or implied. See the License for the
17*5b190011SAndrew Rist * specific language governing permissions and limitations
18*5b190011SAndrew Rist * under the License.
19*5b190011SAndrew Rist *
20*5b190011SAndrew Rist *************************************************************/
21*5b190011SAndrew Rist
22*5b190011SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #include "precompiled_sd.hxx"
25cdf0e10cSrcweir
26cdf0e10cSrcweir #include "ViewTabBarModule.hxx"
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include "framework/FrameworkHelper.hxx"
29cdf0e10cSrcweir #include "framework/ConfigurationController.hxx"
30cdf0e10cSrcweir #include <com/sun/star/drawing/framework/XControllerManager.hpp>
31cdf0e10cSrcweir #include <com/sun/star/drawing/framework/XTabBar.hpp>
32cdf0e10cSrcweir
33cdf0e10cSrcweir #include "strings.hrc"
34cdf0e10cSrcweir #include "sdresid.hxx"
35cdf0e10cSrcweir
36cdf0e10cSrcweir
37cdf0e10cSrcweir using namespace ::com::sun::star;
38cdf0e10cSrcweir using namespace ::com::sun::star::uno;
39cdf0e10cSrcweir using namespace ::com::sun::star::drawing::framework;
40cdf0e10cSrcweir
41cdf0e10cSrcweir using ::rtl::OUString;
42cdf0e10cSrcweir using ::sd::framework::FrameworkHelper;
43cdf0e10cSrcweir
44cdf0e10cSrcweir namespace {
45cdf0e10cSrcweir
46cdf0e10cSrcweir static const sal_Int32 ResourceActivationRequestEvent = 0;
47cdf0e10cSrcweir static const sal_Int32 ResourceDeactivationRequestEvent = 1;
48cdf0e10cSrcweir static const sal_Int32 ResourceActivationEvent = 2;
49cdf0e10cSrcweir
50cdf0e10cSrcweir }
51cdf0e10cSrcweir
52cdf0e10cSrcweir namespace sd { namespace framework {
53cdf0e10cSrcweir
54cdf0e10cSrcweir //===== ViewTabBarModule ==================================================
55cdf0e10cSrcweir
ViewTabBarModule(const Reference<frame::XController> & rxController,const Reference<XResourceId> & rxViewTabBarId)56cdf0e10cSrcweir ViewTabBarModule::ViewTabBarModule (
57cdf0e10cSrcweir const Reference<frame::XController>& rxController,
58cdf0e10cSrcweir const Reference<XResourceId>& rxViewTabBarId)
59cdf0e10cSrcweir : ViewTabBarModuleInterfaceBase(MutexOwner::maMutex),
60cdf0e10cSrcweir mxConfigurationController(),
61cdf0e10cSrcweir mxViewTabBarId(rxViewTabBarId)
62cdf0e10cSrcweir {
63cdf0e10cSrcweir Reference<XControllerManager> xControllerManager (rxController, UNO_QUERY);
64cdf0e10cSrcweir
65cdf0e10cSrcweir if (xControllerManager.is())
66cdf0e10cSrcweir {
67cdf0e10cSrcweir mxConfigurationController = xControllerManager->getConfigurationController();
68cdf0e10cSrcweir if (mxConfigurationController.is())
69cdf0e10cSrcweir {
70cdf0e10cSrcweir mxConfigurationController->addConfigurationChangeListener(
71cdf0e10cSrcweir this,
72cdf0e10cSrcweir FrameworkHelper::msResourceActivationRequestEvent,
73cdf0e10cSrcweir makeAny(ResourceActivationRequestEvent));
74cdf0e10cSrcweir mxConfigurationController->addConfigurationChangeListener(
75cdf0e10cSrcweir this,
76cdf0e10cSrcweir FrameworkHelper::msResourceDeactivationRequestEvent,
77cdf0e10cSrcweir makeAny(ResourceDeactivationRequestEvent));
78cdf0e10cSrcweir
79cdf0e10cSrcweir UpdateViewTabBar(NULL);
80cdf0e10cSrcweir mxConfigurationController->addConfigurationChangeListener(
81cdf0e10cSrcweir this,
82cdf0e10cSrcweir FrameworkHelper::msResourceActivationEvent,
83cdf0e10cSrcweir makeAny(ResourceActivationEvent));
84cdf0e10cSrcweir }
85cdf0e10cSrcweir }
86cdf0e10cSrcweir }
87cdf0e10cSrcweir
88cdf0e10cSrcweir
89cdf0e10cSrcweir
90cdf0e10cSrcweir
~ViewTabBarModule(void)91cdf0e10cSrcweir ViewTabBarModule::~ViewTabBarModule (void)
92cdf0e10cSrcweir {
93cdf0e10cSrcweir }
94cdf0e10cSrcweir
95cdf0e10cSrcweir
96cdf0e10cSrcweir
97cdf0e10cSrcweir
disposing(void)98cdf0e10cSrcweir void SAL_CALL ViewTabBarModule::disposing (void)
99cdf0e10cSrcweir {
100cdf0e10cSrcweir if (mxConfigurationController.is())
101cdf0e10cSrcweir mxConfigurationController->removeConfigurationChangeListener(this);
102cdf0e10cSrcweir
103cdf0e10cSrcweir mxConfigurationController = NULL;
104cdf0e10cSrcweir }
105cdf0e10cSrcweir
106cdf0e10cSrcweir
107cdf0e10cSrcweir
108cdf0e10cSrcweir
notifyConfigurationChange(const ConfigurationChangeEvent & rEvent)109cdf0e10cSrcweir void SAL_CALL ViewTabBarModule::notifyConfigurationChange (
110cdf0e10cSrcweir const ConfigurationChangeEvent& rEvent)
111cdf0e10cSrcweir throw (RuntimeException)
112cdf0e10cSrcweir {
113cdf0e10cSrcweir if (mxConfigurationController.is())
114cdf0e10cSrcweir {
115cdf0e10cSrcweir sal_Int32 nEventType = 0;
116cdf0e10cSrcweir rEvent.UserData >>= nEventType;
117cdf0e10cSrcweir switch (nEventType)
118cdf0e10cSrcweir {
119cdf0e10cSrcweir case ResourceActivationRequestEvent:
120cdf0e10cSrcweir if (mxViewTabBarId->isBoundTo(rEvent.ResourceId, AnchorBindingMode_DIRECT))
121cdf0e10cSrcweir {
122cdf0e10cSrcweir mxConfigurationController->requestResourceActivation(
123cdf0e10cSrcweir mxViewTabBarId,
124cdf0e10cSrcweir ResourceActivationMode_ADD);
125cdf0e10cSrcweir }
126cdf0e10cSrcweir break;
127cdf0e10cSrcweir
128cdf0e10cSrcweir case ResourceDeactivationRequestEvent:
129cdf0e10cSrcweir if (mxViewTabBarId->isBoundTo(rEvent.ResourceId, AnchorBindingMode_DIRECT))
130cdf0e10cSrcweir {
131cdf0e10cSrcweir mxConfigurationController->requestResourceDeactivation(mxViewTabBarId);
132cdf0e10cSrcweir }
133cdf0e10cSrcweir break;
134cdf0e10cSrcweir
135cdf0e10cSrcweir case ResourceActivationEvent:
136cdf0e10cSrcweir if (rEvent.ResourceId->compareTo(mxViewTabBarId) == 0)
137cdf0e10cSrcweir {
138cdf0e10cSrcweir UpdateViewTabBar(Reference<XTabBar>(rEvent.ResourceObject,UNO_QUERY));
139cdf0e10cSrcweir }
140cdf0e10cSrcweir }
141cdf0e10cSrcweir }
142cdf0e10cSrcweir }
143cdf0e10cSrcweir
144cdf0e10cSrcweir
145cdf0e10cSrcweir
146cdf0e10cSrcweir
disposing(const lang::EventObject & rEvent)147cdf0e10cSrcweir void SAL_CALL ViewTabBarModule::disposing (
148cdf0e10cSrcweir const lang::EventObject& rEvent)
149cdf0e10cSrcweir throw (RuntimeException)
150cdf0e10cSrcweir {
151cdf0e10cSrcweir if (mxConfigurationController.is()
152cdf0e10cSrcweir && rEvent.Source == mxConfigurationController)
153cdf0e10cSrcweir {
154cdf0e10cSrcweir // Without the configuration controller this class can do nothing.
155cdf0e10cSrcweir mxConfigurationController = NULL;
156cdf0e10cSrcweir disposing();
157cdf0e10cSrcweir }
158cdf0e10cSrcweir }
159cdf0e10cSrcweir
160cdf0e10cSrcweir
161cdf0e10cSrcweir
162cdf0e10cSrcweir
UpdateViewTabBar(const Reference<XTabBar> & rxTabBar)163cdf0e10cSrcweir void ViewTabBarModule::UpdateViewTabBar (const Reference<XTabBar>& rxTabBar)
164cdf0e10cSrcweir {
165cdf0e10cSrcweir if (mxConfigurationController.is())
166cdf0e10cSrcweir {
167cdf0e10cSrcweir Reference<XTabBar> xBar (rxTabBar);
168cdf0e10cSrcweir if ( ! xBar.is())
169cdf0e10cSrcweir xBar = Reference<XTabBar>(
170cdf0e10cSrcweir mxConfigurationController->getResource(mxViewTabBarId), UNO_QUERY);
171cdf0e10cSrcweir
172cdf0e10cSrcweir if (xBar.is())
173cdf0e10cSrcweir {
174cdf0e10cSrcweir TabBarButton aEmptyButton;
175cdf0e10cSrcweir
176cdf0e10cSrcweir Reference<XResourceId> xAnchor (mxViewTabBarId->getAnchor());
177cdf0e10cSrcweir
178cdf0e10cSrcweir TabBarButton aImpressViewButton;
179cdf0e10cSrcweir aImpressViewButton.ResourceId = FrameworkHelper::CreateResourceId(
180cdf0e10cSrcweir FrameworkHelper::msImpressViewURL,
181cdf0e10cSrcweir xAnchor);
182cdf0e10cSrcweir aImpressViewButton.ButtonLabel = String(SdResId(STR_DRAW_MODE));
183cdf0e10cSrcweir if ( ! xBar->hasTabBarButton(aImpressViewButton))
184cdf0e10cSrcweir xBar->addTabBarButtonAfter(aImpressViewButton, aEmptyButton);
185cdf0e10cSrcweir
186cdf0e10cSrcweir TabBarButton aOutlineViewButton;
187cdf0e10cSrcweir aOutlineViewButton.ResourceId = FrameworkHelper::CreateResourceId(
188cdf0e10cSrcweir FrameworkHelper::msOutlineViewURL,
189cdf0e10cSrcweir xAnchor);
190cdf0e10cSrcweir aOutlineViewButton.ButtonLabel = String(SdResId(STR_OUTLINE_MODE));
191cdf0e10cSrcweir if ( ! xBar->hasTabBarButton(aOutlineViewButton))
192cdf0e10cSrcweir xBar->addTabBarButtonAfter(aOutlineViewButton, aImpressViewButton);
193cdf0e10cSrcweir
194cdf0e10cSrcweir TabBarButton aNotesViewButton;
195cdf0e10cSrcweir aNotesViewButton.ResourceId = FrameworkHelper::CreateResourceId(
196cdf0e10cSrcweir FrameworkHelper::msNotesViewURL,
197cdf0e10cSrcweir xAnchor);
198cdf0e10cSrcweir aNotesViewButton.ButtonLabel = String(SdResId(STR_NOTES_MODE));
199cdf0e10cSrcweir if ( ! xBar->hasTabBarButton(aNotesViewButton))
200cdf0e10cSrcweir xBar->addTabBarButtonAfter(aNotesViewButton, aOutlineViewButton);
201cdf0e10cSrcweir
202cdf0e10cSrcweir TabBarButton aHandoutViewButton;
203cdf0e10cSrcweir aHandoutViewButton.ResourceId = FrameworkHelper::CreateResourceId(
204cdf0e10cSrcweir FrameworkHelper::msHandoutViewURL,
205cdf0e10cSrcweir xAnchor);
206cdf0e10cSrcweir aHandoutViewButton.ButtonLabel = String(SdResId(STR_HANDOUT_MODE));
207cdf0e10cSrcweir if ( ! xBar->hasTabBarButton(aHandoutViewButton))
208cdf0e10cSrcweir xBar->addTabBarButtonAfter(aHandoutViewButton, aNotesViewButton);
209cdf0e10cSrcweir }
210cdf0e10cSrcweir }
211cdf0e10cSrcweir }
212cdf0e10cSrcweir
213cdf0e10cSrcweir
214cdf0e10cSrcweir
215cdf0e10cSrcweir
216cdf0e10cSrcweir } } // end of namespace sd::framework
217