24#include <helper/property.hxx>
26#include <com/sun/star/awt/XControlModel.hpp>
27#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
28#include <com/sun/star/uno/XComponentContext.hpp>
42using ::com::sun::star::awt::tab::XTabPageModel;
49 ,maContainerListeners( *this )
64 return "com.sun.star.awt.tab.UnoControlTabPageContainerModel";
72 return uno::Any( OUString(
"com.sun.star.awt.tab.UnoControlTabPageContainer") );
87 static Reference< css::beans::XPropertySetInfo > xInfo( createPropertySetInfo(
getInfoHelper() ) );
93 Reference< XTabPageModel > lcl_createTabPageModel( Reference<XComponentContext>
const & i_context,
94 Sequence< Any >
const & i_initArguments, Reference< XPropertySet >
const & i_parentModel )
98 Reference< XPropertySetInfo >
const xPSI( i_parentModel->getPropertySetInfo() );
99 bool const isGeometryControlModel = xPSI.is() && xPSI->hasPropertyByName(
"PositionX");
101 Reference< XInterface > xInstance;
102 if ( isGeometryControlModel )
107 Reference< XTabPageModel >
const xTabPageModel( xInstance, UNO_QUERY_THROW );
108 Reference< XInitialization >
const xInit( xTabPageModel, UNO_QUERY_THROW );
109 xInit->initialize( i_initArguments );
111 return xTabPageModel;
117 catch(
const Exception& )
127 Sequence< Any > aInitArgs{
Any(i_tabPageID) };
128 return lcl_createTabPageModel(
m_xContext, aInitArgs,
this );
133 Sequence< Any > aInitArgs{
Any(i_tabPageID),
Any(i_resourceURL) };
134 return lcl_createTabPageModel(
m_xContext, aInitArgs,
this );
140 uno::Reference < XTabPageModel > xTabPageModel;
141 if(!(aElement >>= xTabPageModel))
148 std::vector< uno::Reference< XTabPageModel > >::iterator aIter =
m_aTabPageVector.begin();
153 throw IndexOutOfBoundsException( OUString(),
static_cast<OWeakObject *
>(
this) );
156 aEvent.Element = aElement;
173 std::unique_lock aGuard(
m_aMutex );
179 std::unique_lock aGuard(
m_aMutex );
181 throw lang::IndexOutOfBoundsException();
193 std::unique_lock aGuard(
m_aMutex );
211 ,m_aTabPageListeners( *this )
217 return "TabPageContainer";
222 lang::EventObject aEvt;
232 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
243 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
244 return xTPContainer->getActiveTabPageID();
249 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
250 xTPContainer->setActiveTabPageID(_activetabpageid);
255 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
256 return xTPContainer->getTabPageCount();
261 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
262 return xTPContainer->isTabPageActive(tabPageIndex);
267 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
268 return xTPContainer->getTabPage(tabPageIndex);
273 Reference< XTabPageContainer > xTPContainer( getPeer(), UNO_QUERY_THROW );
274 return xTPContainer->getTabPageByID(tabPageID);
281 uno::Reference < awt::tab::XTabPageContainer > xTabPageContainer( getPeer(), uno::UNO_QUERY );
289 uno::Reference < awt::tab::XTabPageContainer > xTabPageContainer( getPeer(), uno::UNO_QUERY );
297 UnoControlTabPageContainer_Base::propertiesChange(
aEvent);
300 Reference< XPropertiesChangeListener > xPropertiesChangeListener( getPeer(), UNO_QUERY_THROW );
301 return xPropertiesChangeListener->propertiesChange(
aEvent);
306 UnoControlTabPageContainer_Base::updateFromModel();
309 Reference< XContainerListener > xContainerListener( getPeer(), UNO_QUERY );
310 ENSURE_OR_RETURN_VOID( xContainerListener.is(),
"UnoListBoxControl::updateFromModel: a peer which is no ItemListListener?!" );
313 aEvent.Source = getModel();
314 const Sequence< Reference< XControl > > aControls = getControls();
316 for (
const Reference< XControl >& rCtrl : aControls )
319 xContainerListener->elementInserted(
aEvent );
328 Reference< XContainerListener > xContainerListener( getPeer(), UNO_QUERY );
330 aEvent.Source = getModel();
332 xContainerListener->elementInserted(
aEvent );
335extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
337 css::uno::XComponentContext *context,
338 css::uno::Sequence<css::uno::Any>
const &)
343extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
345 css::uno::XComponentContext *context,
346 css::uno::Sequence<css::uno::Any>
const &)
Reference< XComponentContext > m_xContext
virtual css::uno::Any ImplGetDefaultValue(sal_uInt16 nPropId) const
virtual void SAL_CALL insertByIndex(sal_Int32 Index, const css::uno::Any &Element) override
void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
virtual sal_Int32 SAL_CALL getCount() override
virtual css::uno::Reference< css::awt::tab::XTabPageModel > SAL_CALL createTabPage(::sal_Int16 TabPageID) override
virtual css::uno::Type SAL_CALL getElementType() override
UnoControlTabPageContainerModel(const css::uno::Reference< css::uno::XComponentContext > &i_factory)
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 Index) override
::cppu::IPropertyArrayHelper & getInfoHelper() override
virtual void SAL_CALL removeByIndex(sal_Int32 Index) override
virtual void SAL_CALL replaceByIndex(sal_Int32 Index, const css::uno::Any &Element) override
css::uno::Any ImplGetDefaultValue(sal_uInt16 nPropId) const override
std::vector< css::uno::Reference< css::awt::tab::XTabPageModel > > m_aTabPageVector
virtual css::uno::Reference< css::awt::tab::XTabPageModel > SAL_CALL loadTabPage(::sal_Int16 TabPageID, const OUString &ResourceURL) override
ContainerListenerMultiplexer maContainerListeners
virtual sal_Bool SAL_CALL hasElements() override
void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
OUString SAL_CALL getServiceName() override
css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override
void SAL_CALL dispose() override
virtual void SAL_CALL propertiesChange(const ::css::uno::Sequence< ::css::beans::PropertyChangeEvent > &aEvent) override
OUString GetComponentServiceName() const override
virtual void SAL_CALL addTabPageContainerListener(const css::uno::Reference< css::awt::tab::XTabPageContainerListener > &listener) override
virtual void updateFromModel() override
UnoControlTabPageContainer(const css::uno::Reference< css::uno::XComponentContext > &rxContext)
TabPageListenerMultiplexer m_aTabPageListeners
virtual ::sal_Int16 SAL_CALL getActiveTabPageID() override
virtual void SAL_CALL addControl(const OUString &Name, const css::uno::Reference< css::awt::XControl > &Control) override
virtual ::sal_Int16 SAL_CALL getTabPageCount() override
virtual sal_Bool SAL_CALL isTabPageActive(::sal_Int16 tabPageIndex) override
virtual css::uno::Reference< css::awt::tab::XTabPage > SAL_CALL getTabPage(::sal_Int16 tabPageIndex) override
virtual void SAL_CALL removeTabPageContainerListener(const css::uno::Reference< css::awt::tab::XTabPageContainerListener > &listener) override
virtual css::uno::Reference< css::awt::tab::XTabPage > SAL_CALL getTabPageByID(::sal_Int16 tabPageID) override
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
virtual void SAL_CALL setActiveTabPageID(::sal_Int16 _activetabpageid) override
void SAL_CALL dispose() override
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
css::uno::Type const & get()
#define DBG_UNHANDLED_EXCEPTION(...)
#define ENSURE_OR_RETURN_VOID(c, m)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
#define BASEPROPERTY_BORDER
#define BASEPROPERTY_TEXT
#define BASEPROPERTY_HELPURL
#define BASEPROPERTY_BACKGROUNDCOLOR
#define BASEPROPERTY_ENABLED
#define BASEPROPERTY_DEFAULTCONTROL
#define BASEPROPERTY_BORDERCOLOR
#define BASEPROPERTY_HELPTEXT
#define BASEPROPERTY_PRINTABLE
constexpr OUStringLiteral WRONG_TYPE_EXCEPTION
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * stardiv_Toolkit_UnoControlTabPageContainer_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * stardiv_Toolkit_UnoControlTabPageContainerModel_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)