27#include <com/sun/star/lang/XComponent.hpp>
40 const Reference<uno::XComponentContext>& rxContext,
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 xCC.set(rxController->getConfigurationController());
71 xCC->addResourceFactory(
72 "private:resource/pane/Presenter/*",
79 xCC->removeResourceFactoryForReference(
this);
94 xCC->removeResourceFactoryForReference(
this);
102 Reference<lang::XComponent> xPaneComponent (rxPane.second, UNO_QUERY);
103 if (xPaneComponent.is())
104 xPaneComponent->dispose();
113 const Reference<XResourceId>& rxPaneId)
117 if ( ! rxPaneId.is())
120 const OUString sPaneURL (rxPaneId->getResourceURL());
121 if (sPaneURL.isEmpty())
127 ResourceContainer::const_iterator iResource (
mpResourceCache->find(sPaneURL));
134 pPaneContainer->FindPaneURL(sPaneURL));
137 pDescriptor->SetActivationState(
true);
138 if (pDescriptor->mxBorderWindow.is())
139 pDescriptor->mxBorderWindow->setVisible(
true);
140 pPaneContainer->StorePane(pDescriptor->mxPane);
143 return iResource->second;
148 Reference<XResource> xResource =
CreatePane(rxPaneId);
156 if ( ! rxResource.is())
157 throw lang::IllegalArgumentException();
162 const OUString sPaneURL (rxResource->getResourceId()->getResourceURL());
164 pPaneContainer->FindPaneURL(sPaneURL));
168 pDescriptor->SetActivationState(
false);
169 if (pDescriptor->mxBorderWindow.is())
170 pDescriptor->mxBorderWindow->setVisible(
false);
175 (*mpResourceCache)[sPaneURL] = rxResource;
180 Reference<lang::XComponent> xPaneComponent (rxResource, UNO_QUERY);
181 if (xPaneComponent.is())
182 xPaneComponent->dispose();
188 const Reference<XResourceId>& rxPaneId)
190 if ( ! rxPaneId.is())
198 if ( ! xContext.is())
201 Reference<XPane> xParentPane (xCC->getResource(rxPaneId->getAnchor()), UNO_QUERY);
202 if ( ! xParentPane.is())
210 rxPaneId->getFullResourceURL().Arguments ==
"Sprite=1");
221 const Reference<XResourceId>& rxPaneId,
222 const Reference<drawing::framework::XPane>& rxParentPane,
223 const bool bIsSpritePane)
226 Reference<lang::XMultiComponentFactory>
xFactory (
227 xContext->getServiceManager(), UNO_SET_THROW);
245 Any(rxParentPane->getWindow()),
246 Any(rxParentPane->getCanvas()),
248 Any(Reference<drawing::framework::XPaneBorderPainter>(
250 Any(!bIsSpritePane) };
251 xPane->initialize(aArguments);
257 pContainer->StoreBorderWindow(rxPaneId, xPane->GetBorderWindow()));
258 pContainer->StorePane(xPane);
261 pDescriptor->mbIsSprite = bIsSpritePane;
264 Reference<awt::XWindow> xWindow (pDescriptor->mxBorderWindow, UNO_SET_THROW);
265 xWindow->setVisible(
true);
268 return Reference<XResource>(
static_cast<XWeak*
>(xPane.get()), UNO_QUERY_THROW);
273 if (rBHelper.bDisposed || rBHelper.bInDispose)
275 throw lang::DisposedException (
276 "PresenterPaneFactory object has already been disposed",
277 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
void Register(const rtl::Reference<::sd::DrawController > &rxController)
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 rtl::Reference<::sd::DrawController > &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...
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