// Dispose the panes in the cache. if (mpResourceCache != nullptr)
{ for (constauto& rxPane : *mpResourceCache)
{
Reference<lang::XComponent> xPaneComponent (rxPane.second, UNO_QUERY); if (xPaneComponent.is())
xPaneComponent->dispose();
}
mpResourceCache.reset();
}
}
const OUString sPaneURL (rxPaneId->getResourceURL()); if (sPaneURL.isEmpty()) return nullptr;
if (mpResourceCache != nullptr)
{ // Has the requested resource already been created?
ResourceContainer::const_iterator iResource (mpResourceCache->find(sPaneURL)); if (iResource != mpResourceCache->end())
{ // Yes. Mark it as active.
rtl::Reference<PresenterPaneContainer> pPaneContainer(
mpPresenterController->GetPaneContainer());
PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
pPaneContainer->FindPaneURL(sPaneURL)); if (pDescriptor)
{
pDescriptor->SetActivationState(true); if (pDescriptor->mxBorderWindow.is())
pDescriptor->mxBorderWindow->setVisible(true);
pPaneContainer->StorePane(pDescriptor->mxPane);
}
return iResource->second;
}
}
// No. Create a new one.
Reference<XResource> xResource = CreatePane(rxPaneId); return xResource;
}
if ( ! rxResource.is()) throw lang::IllegalArgumentException();
// Mark the pane as inactive.
rtl::Reference<PresenterPaneContainer> pPaneContainer(
mpPresenterController->GetPaneContainer()); const OUString sPaneURL (rxResource->getResourceId()->getResourceURL());
PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
pPaneContainer->FindPaneURL(sPaneURL)); if (!pDescriptor) return;
pDescriptor->SetActivationState(false); if (pDescriptor->mxBorderWindow.is())
pDescriptor->mxBorderWindow->setVisible(false);
if (mpResourceCache != nullptr)
{ // Store the pane in the cache.
(*mpResourceCache)[sPaneURL] = rxResource;
} else
{ // Dispose the pane.
Reference<lang::XComponent> xPaneComponent (rxResource, UNO_QUERY); if (xPaneComponent.is())
xPaneComponent->dispose();
}
}
// Store pane and canvases and windows in container.
::rtl::Reference<PresenterPaneContainer> pContainer (
mpPresenterController->GetPaneContainer());
PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
pContainer->StoreBorderWindow(rxPaneId, xPane->GetBorderWindow()));
pContainer->StorePane(xPane); if (pDescriptor)
{
pDescriptor->mbIsSprite = bIsSpritePane;
// Get the window of the frame and make that visible.
Reference<awt::XWindow> xWindow (pDescriptor->mxBorderWindow, UNO_SET_THROW);
xWindow->setVisible(true);
}
return xPane;
}
void PresenterPaneFactory::ThrowIfDisposed() const
{ if (rBHelper.bDisposed || rBHelper.bInDispose)
{ throw lang::DisposedException (
u"PresenterPaneFactory object has already been disposed"_ustr, const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.