LibreOffice Module toolkit (master) 1
unocontrolcontainer.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22
23#include <com/sun/star/awt/XControlContainer.hpp>
24#include <com/sun/star/awt/XUnoControlContainer.hpp>
25#include <com/sun/star/container/XContainer.hpp>
26#include <com/sun/star/container/XIdentifierContainer.hpp>
27
29
31#include <memory>
32
34
35
36
38 , css::awt::XUnoControlContainer
39 , css::awt::XControlContainer
40 , css::container::XContainer
41 , css::container::XIdentifierContainer
43
45{
46private:
47 std::unique_ptr<UnoControlHolderList> mpControls;
48 css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > maTabControllers;
49 ContainerListenerMultiplexer maCListeners;
50
51protected:
53
54public:
56 UnoControlContainer( const css::uno::Reference< css::awt::XVclWindowPeer >& xPeer );
57 virtual ~UnoControlContainer() override;
58
59
60 // css::lang::XComponent
61 void SAL_CALL dispose() override;
62
63 // css::lang::XEventListener
64 void SAL_CALL disposing( const css::lang::EventObject& Source ) override;
65
66 // css::container::XContainer
67 void SAL_CALL addContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
68 void SAL_CALL removeContainerListener( const css::uno::Reference< css::container::XContainerListener >& xListener ) override;
69
70 // css::container::XIdentifierContainer
71 virtual ::sal_Int32 SAL_CALL insert( const css::uno::Any& aElement ) override;
72
73 // css::container::XIdentifierReplace
74 virtual void SAL_CALL removeByIdentifier( ::sal_Int32 Identifier ) override;
75 virtual void SAL_CALL replaceByIdentifer( ::sal_Int32 Identifier, const css::uno::Any& aElement ) override;
76
77 // css::container::XIdentifierAccess
78 virtual css::uno::Any SAL_CALL getByIdentifier( ::sal_Int32 Identifierr ) override;
79 virtual css::uno::Sequence< ::sal_Int32 > SAL_CALL getIdentifiers( ) override;
80
81 // css::container::XElementAccess
82 virtual css::uno::Type SAL_CALL getElementType( ) override;
83 virtual sal_Bool SAL_CALL hasElements( ) override;
84
85 // css::awt::XControlContainer
86 void SAL_CALL setStatusText( const OUString& StatusText ) override;
87 css::uno::Sequence< css::uno::Reference< css::awt::XControl > > SAL_CALL getControls( ) override;
88 css::uno::Reference< css::awt::XControl > SAL_CALL getControl( const OUString& aName ) override;
89 void SAL_CALL addControl( const OUString& Name, const css::uno::Reference< css::awt::XControl >& Control ) override;
90 void SAL_CALL removeControl( const css::uno::Reference< css::awt::XControl >& Control ) override;
91
92 // css::awt::XUnoControlContainer
93 void SAL_CALL setTabControllers( const css::uno::Sequence< css::uno::Reference< css::awt::XTabController > >& TabControllers ) override;
94 css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > SAL_CALL getTabControllers( ) override;
95 void SAL_CALL addTabController( const css::uno::Reference< css::awt::XTabController >& TabController ) override;
96 void SAL_CALL removeTabController( const css::uno::Reference< css::awt::XTabController >& TabController ) override;
97
98 // css::awt::XControl
99 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override;
100
101 // css::awt::XWindow
102 void SAL_CALL setVisible( sal_Bool Visible ) override;
103
104 OUString SAL_CALL getImplementationName() override;
105
106 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
107
108protected:
109 virtual void PrepareWindowDescriptor( css::awt::WindowDescriptor& rDesc ) override;
110 virtual void removingControl( const css::uno::Reference< css::awt::XControl >& _rxControl );
111 virtual void addingControl( const css::uno::Reference< css::awt::XControl >& _rxControl );
112
120 const css::uno::Reference< css::awt::XControl >& _rxControl
121 );
122private:
131 sal_Int32 impl_addControl(
132 const css::uno::Reference< css::awt::XControl >& _rxControl,
133 const OUString* _pName = nullptr
134 );
135
144 sal_Int32 _nId,
145 const css::uno::Reference< css::awt::XControl >& _rxControl
146 );
147
148};
149
150
151/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual sal_Bool SAL_CALL hasElements() override
void SAL_CALL removeTabController(const css::uno::Reference< css::awt::XTabController > &TabController) override
virtual ~UnoControlContainer() override
virtual void PrepareWindowDescriptor(css::awt::WindowDescriptor &rDesc) override
void SAL_CALL addTabController(const css::uno::Reference< css::awt::XTabController > &TabController) override
void impl_removeControl(sal_Int32 _nId, const css::uno::Reference< css::awt::XControl > &_rxControl)
removes the given control from the container, including necessary notifications and the like
void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &Toolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
OUString SAL_CALL getImplementationName() override
void SAL_CALL setTabControllers(const css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > &TabControllers) override
css::uno::Sequence< css::uno::Reference< css::awt::XControl > > SAL_CALL getControls() override
virtual ::sal_Int32 SAL_CALL insert(const css::uno::Any &aElement) override
virtual void SAL_CALL removeByIdentifier(::sal_Int32 Identifier) override
void SAL_CALL setVisible(sal_Bool Visible) override
void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > SAL_CALL getTabControllers() override
virtual void addingControl(const css::uno::Reference< css::awt::XControl > &_rxControl)
virtual void impl_createControlPeerIfNecessary(const css::uno::Reference< css::awt::XControl > &_rxControl)
ensures that the given control has a peer, if necessary and possible
void SAL_CALL setStatusText(const OUString &StatusText) override
virtual void SAL_CALL replaceByIdentifer(::sal_Int32 Identifier, const css::uno::Any &aElement) override
UnoControlContainer(const css::uno::Reference< css::awt::XVclWindowPeer > &xPeer)
css::uno::Sequence< css::uno::Reference< css::awt::XTabController > > maTabControllers
void SAL_CALL addControl(const OUString &Name, const css::uno::Reference< css::awt::XControl > &Control) override
std::unique_ptr< UnoControlHolderList > mpControls
virtual css::uno::Sequence< ::sal_Int32 > SAL_CALL getIdentifiers() override
css::uno::Reference< css::awt::XControl > SAL_CALL getControl(const OUString &aName) override
virtual css::uno::Type SAL_CALL getElementType() override
void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual css::uno::Any SAL_CALL getByIdentifier(::sal_Int32 Identifierr) override
css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &xListener) override
void SAL_CALL removeControl(const css::uno::Reference< css::awt::XControl > &Control) override
ContainerListenerMultiplexer maCListeners
sal_Int32 impl_addControl(const css::uno::Reference< css::awt::XControl > &_rxControl, const OUString *_pName=nullptr)
adds the control to the container, does necessary notifications, and the like
virtual void removingControl(const css::uno::Reference< css::awt::XControl > &_rxControl)
void SAL_CALL dispose() override
unsigned char sal_Bool
::cppu::AggImplInheritanceHelper4< UnoControlBase, css::awt::XUnoControlContainer, css::awt::XControlContainer, css::container::XContainer, css::container::XIdentifierContainer > UnoControlContainer_Base