26#include <com/sun/star/drawing/framework/XControllerManager.hpp>
27#include <com/sun/star/lang/XComponent.hpp>
40 const Reference<uno::XComponentContext>& rxContext,
41 const Reference<frame::XController>& rxController,
42 const ::rtl::Reference<PresenterController>& rpPresenterController)
46 pFactory->Register(rxController);
47 return Reference<drawing::framework::XResourceFactory>(pFactory);
51 const Reference<uno::XComponentContext>& rxContext,
54 mxComponentContextWeak(rxContext),
61 Reference<XConfigurationController> xCC;
65 Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
66 xCC.set(xCM->getConfigurationController());
72 xCC->addResourceFactory(
73 "private:resource/pane/Presenter/*",
80 xCC->removeResourceFactoryForReference(
this);
95 xCC->removeResourceFactoryForReference(
this);
103 Reference<lang::XComponent> xPaneComponent (rxPane.second, UNO_QUERY);
104 if (xPaneComponent.is())
105 xPaneComponent->dispose();
114 const Reference<XResourceId>& rxPaneId)
118 if ( ! rxPaneId.is())
121 const OUString sPaneURL (rxPaneId->getResourceURL());
122 if (sPaneURL.isEmpty())
128 ResourceContainer::const_iterator iResource (
mpResourceCache->find(sPaneURL));
135 pPaneContainer->FindPaneURL(sPaneURL));
138 pDescriptor->SetActivationState(
true);
139 if (pDescriptor->mxBorderWindow.is())
140 pDescriptor->mxBorderWindow->setVisible(
true);
141 pPaneContainer->StorePane(pDescriptor->mxPane);
144 return iResource->second;
149 Reference<XResource> xResource =
CreatePane(rxPaneId);
157 if ( ! rxResource.is())
158 throw lang::IllegalArgumentException();
163 const OUString sPaneURL (rxResource->getResourceId()->getResourceURL());
165 pPaneContainer->FindPaneURL(sPaneURL));
169 pDescriptor->SetActivationState(
false);
170 if (pDescriptor->mxBorderWindow.is())
171 pDescriptor->mxBorderWindow->setVisible(
false);
176 (*mpResourceCache)[sPaneURL] = rxResource;
181 Reference<lang::XComponent> xPaneComponent (rxResource, UNO_QUERY);
182 if (xPaneComponent.is())
183 xPaneComponent->dispose();
189 const Reference<XResourceId>& rxPaneId)
191 if ( ! rxPaneId.is())
199 if ( ! xContext.is())
202 Reference<XPane> xParentPane (xCC->getResource(rxPaneId->getAnchor()), UNO_QUERY);
203 if ( ! xParentPane.is())
211 rxPaneId->getFullResourceURL().Arguments ==
"Sprite=1");
222 const Reference<XResourceId>& rxPaneId,
223 const Reference<drawing::framework::XPane>& rxParentPane,
224 const bool bIsSpritePane)
227 Reference<lang::XMultiComponentFactory>
xFactory (
228 xContext->getServiceManager(), UNO_SET_THROW);
246 Any(rxParentPane->getWindow()),
247 Any(rxParentPane->getCanvas()),
249 Any(Reference<drawing::framework::XPaneBorderPainter>(
251 Any(!bIsSpritePane) };
252 xPane->initialize(aArguments);
258 pContainer->StoreBorderWindow(rxPaneId, xPane->GetBorderWindow()));
259 pContainer->StorePane(xPane);
262 pDescriptor->mbIsSprite = bIsSpritePane;
265 Reference<awt::XWindow> xWindow (pDescriptor->mxBorderWindow, UNO_SET_THROW);
266 xWindow->setVisible(
true);
269 return Reference<XResource>(
static_cast<XWeak*
>(xPane.get()), UNO_QUERY_THROW);
274 if (rBHelper.bDisposed || rBHelper.bInDispose)
276 throw lang::DisposedException (
277 "PresenterPaneFactory object has already been disposed",
278 const_cast<uno::XWeak*
>(
static_cast<const uno::XWeak*
>(
this)));
rtl::Reference< PresenterController > mpPresenterController
std::shared_ptr< PaneDescriptor > SharedPaneDescriptor
virtual void SAL_CALL disposing() override
std::unique_ptr< ResourceContainer > mpResourceCache
virtual css::uno::Reference< css::drawing::framework::XResource > SAL_CALL createResource(const css::uno::Reference< css::drawing::framework::XResourceId > &rxPaneId) override
virtual void SAL_CALL releaseResource(const css::uno::Reference< css::drawing::framework::XResource > &rxPane) override
::rtl::Reference< PresenterController > mpPresenterController
css::uno::WeakReference< css::uno::XComponentContext > mxComponentContextWeak
css::uno::Reference< css::drawing::framework::XResource > CreatePane(const css::uno::Reference< css::drawing::framework::XResourceId > &rxPaneId)
void ThrowIfDisposed() const
static css::uno::Reference< css::drawing::framework::XResourceFactory > Create(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const css::uno::Reference< css::frame::XController > &rxController, const ::rtl::Reference< PresenterController > &rpPresenterController)
Create a new instance of this class and register it as resource factory in the drawing framework of t...
void Register(const css::uno::Reference< css::frame::XController > &rxController)
virtual ~PresenterPaneFactory() override
css::uno::WeakReference< css::drawing::framework::XConfigurationController > mxConfigurationControllerWeak
PresenterPaneFactory(const css::uno::Reference< css::uno::XComponentContext > &rxContext, ::rtl::Reference< PresenterController > xPresenterController)
Reference< XSingleServiceFactory > xFactory
Sequence< PropertyValue > aArguments
::cppu::WeakComponentImplHelper< css::drawing::framework::XResourceFactory > PresenterPaneFactoryInterfaceBase