22#include <com/sun/star/awt/XControlModel.hpp>
23#include <com/sun/star/beans/XPropertySet.hpp>
24#include <com/sun/star/beans/XPropertyChangeListener.hpp>
25#include <com/sun/star/container/XContainerListener.hpp>
26#include <com/sun/star/container/XContainer.hpp>
52 template <
class ELEMENT,
class LESS_COMPARE>
53 sal_Int32
insert_sorted(::std::vector<ELEMENT>& _rArray,
const ELEMENT& _rNewElement,
const LESS_COMPARE& _rCompareOp)
55 typename ::std::vector<ELEMENT>::iterator aInsertPos = ::std::lower_bound(
61 aInsertPos = _rArray.insert(aInsertPos, _rNewElement);
62 return aInsertPos - _rArray.begin();
65 template <
class ELEMENT,
class LESS_COMPARE>
66 bool seek_entry(const ::std::vector<ELEMENT>& _rArray,
const ELEMENT& _rNewElement, sal_Int32& nPos,
const LESS_COMPARE& _rCompareOp)
68 typename ::std::vector<ELEMENT>::const_iterator aExistentPos = ::std::lower_bound(
74 if ((aExistentPos != _rArray.end()) && (*aExistentPos == _rNewElement))
76 nPos = aExistentPos - _rArray.begin();
94 OGroupComp(
const css::uno::Reference< css::beans::XPropertySet>& rxElement, sal_Int32 nInsertPos );
135 explicit OGroup(OUString sGroupName);
138 css::uno::Sequence< css::uno::Reference< css::awt::XControlModel> >
GetControlModels()
const;
140 void InsertComponent(
const css::uno::Reference< css::beans::XPropertySet>& rxElement );
141 void RemoveComponent(
const css::uno::Reference< css::beans::XPropertySet>& rxElement );
143 const css::uno::Reference< css::beans::XPropertySet>&
GetObject( sal_uInt16 nP )
const
151class OGroupManager :
public ::cppu::WeakImplHelper< css::beans::XPropertyChangeListener, css::container::XContainerListener>
153 std::unique_ptr<OGroup>
158 css::uno::Reference< css::container::XContainer >
162 void InsertElement(
const css::uno::Reference< css::beans::XPropertySet>& rxElement );
163 void RemoveElement(
const css::uno::Reference< css::beans::XPropertySet>& rxElement );
164 void removeFromGroupMap(
const OUString& _sGroupName,
const css::uno::Reference< css::beans::XPropertySet>& _xSet);
167 explicit OGroupManager(
const css::uno::Reference< css::container::XContainer >& _rxContainer);
171 virtual void SAL_CALL
disposing(
const css::lang::EventObject& _rSource)
override;
174 virtual void SAL_CALL
propertyChange(
const css::beans::PropertyChangeEvent& evt)
override;
177 virtual void SAL_CALL
elementInserted(
const css::container::ContainerEvent& _rEvent)
override;
178 virtual void SAL_CALL
elementRemoved(
const css::container::ContainerEvent& _rEvent)
override;
179 virtual void SAL_CALL
elementReplaced(
const css::container::ContainerEvent& _rEvent)
override;
183 void getGroup(sal_Int32 nGroup, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel> >& _rGroup, OUString& Name);
184 void getGroupByName(
const OUString& Name, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel> >& _rGroup);
185 css::uno::Sequence< css::uno::Reference< css::awt::XControlModel> >
getControlModels()
const;
187 static OUString
GetGroupName(
const css::uno::Reference< css::beans::XPropertySet>& xComponent );
const OGroupComp & GetGroupComponent() const
OGroupCompAcc(const css::uno::Reference< css::beans::XPropertySet > &rxElement, OGroupComp _aGroupComp)
bool operator==(const OGroupCompAcc &rCompAcc) const
css::uno::Reference< css::beans::XPropertySet > m_xComponent
const css::uno::Reference< css::beans::XPropertySet > & GetComponent() const
css::uno::Reference< css::awt::XControlModel > m_xControlModel
bool operator==(const OGroupComp &rComp) const
OGroupComp(const css::uno::Reference< css::beans::XPropertySet > &rxElement, sal_Int32 nInsertPos)
css::uno::Reference< css::beans::XPropertySet > m_xComponent
const css::uno::Reference< css::awt::XControlModel > & GetControlModel() const
sal_Int16 GetTabIndex() const
std::unique_ptr< OGroup > m_pCompGroup
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
OGroupManager(const css::uno::Reference< css::container::XContainer > &_rxContainer)
css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > getControlModels() const
css::uno::Reference< css::container::XContainer > m_xContainer
static OUString GetGroupName(const css::uno::Reference< css::beans::XPropertySet > &xComponent)
void getGroupByName(const OUString &Name, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &_rGroup)
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &_rEvent) override
void getGroup(sal_Int32 nGroup, css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > &_rGroup, OUString &Name)
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &_rEvent) override
virtual ~OGroupManager() override
void InsertElement(const css::uno::Reference< css::beans::XPropertySet > &rxElement)
void RemoveElement(const css::uno::Reference< css::beans::XPropertySet > &rxElement)
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &_rEvent) override
virtual void SAL_CALL disposing(const css::lang::EventObject &_rSource) override
void removeFromGroupMap(const OUString &_sGroupName, const css::uno::Reference< css::beans::XPropertySet > &_xSet)
sal_Int32 getGroupCount() const
OActiveGroups m_aActiveGroupMap
const OUString & GetGroupName() const
const css::uno::Reference< css::beans::XPropertySet > & GetObject(sal_uInt16 nP) const
void RemoveComponent(const css::uno::Reference< css::beans::XPropertySet > &rxElement)
void InsertComponent(const css::uno::Reference< css::beans::XPropertySet > &rxElement)
std::vector< OGroupCompAcc > m_aCompAccArray
css::uno::Sequence< css::uno::Reference< css::awt::XControlModel > > GetControlModels() const
std::vector< OGroupComp > m_aCompArray
OGroup(OUString sGroupName)
ListBox is a bit confusing / different from other form components, so here are a few notes:
std::map< OUString, OGroup > OGroupArr
sal_Int32 insert_sorted(::std::vector< ELEMENT > &_rArray, const ELEMENT &_rNewElement, const LESS_COMPARE &_rCompareOp)
bool seek_entry(const ::std::vector< ELEMENT > &_rArray, const ELEMENT &_rNewElement, sal_Int32 &nPos, const LESS_COMPARE &_rCompareOp)
std::vector< OGroupArr::iterator > OActiveGroups