LibreOffice Module forms (master) 1
Button.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#include "clickableimage.hxx"
23#include <togglestate.hxx>
24#include <formnavigation.hxx>
25#include <resettable.hxx>
26
27#include <com/sun/star/awt/MouseEvent.hpp>
28#include <com/sun/star/lang/EventObject.hpp>
29#include <com/sun/star/awt/ActionEvent.hpp>
30#include <com/sun/star/awt/XActionListener.hpp>
31#include <com/sun/star/awt/XButton.hpp>
32#include <com/sun/star/form/XReset.hpp>
33#include <com/sun/star/beans/PropertyChangeEvent.hpp>
34
36
37struct ImplSVEvent;
38
39namespace frm
40{
41
42typedef ::cppu::ImplHelper1 < css::form::XReset
45 ,public OButtonModel_Base
46{
47public:
49 const css::uno::Reference< css::uno::XComponentContext>& _rxFactory
50 );
52 const OButtonModel* _pOriginal,
53 const css::uno::Reference< css::uno::XComponentContext>& _rxFactory
54 );
55 virtual ~OButtonModel() override;
56
57 // UNO
59 virtual css::uno::Any SAL_CALL queryAggregation( const css::uno::Type& _rType ) override;
60
61 css::uno::Sequence< css::uno::Type> _getTypes() override;
62
63// css::lang::XServiceInfo
64 OUString SAL_CALL getImplementationName() override
65 { return "com.sun.star.form.OButtonModel"; }
66
67 virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
68
69// css::io::XPersistObject
70 virtual OUString SAL_CALL getServiceName() override;
71 virtual void SAL_CALL write(const css::uno::Reference< css::io::XObjectOutputStream>& _rxOutStream) override;
72 virtual void SAL_CALL read(const css::uno::Reference< css::io::XObjectInputStream>& _rxInStream) override;
73
74 // XReset
75 virtual void SAL_CALL reset( ) override;
76 virtual void SAL_CALL addResetListener( const css::uno::Reference< css::form::XResetListener >& aListener ) override;
77 virtual void SAL_CALL removeResetListener( const css::uno::Reference< css::form::XResetListener >& aListener ) override;
78
79 // OControlModel's property handling
80 virtual void describeFixedProperties(
81 css::uno::Sequence< css::beans::Property >& /* [out] */ _rProps
82 ) const override;
83
84 // XPropertySet and friends
85 virtual void SAL_CALL getFastPropertyValue(css::uno::Any& rValue, sal_Int32 nHandle) const override;
86 virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const css::uno::Any& rValue ) override;
87 virtual sal_Bool SAL_CALL convertFastPropertyValue(
88 css::uno::Any& _rConvertedValue, css::uno::Any& _rOldValue, sal_Int32 _nHandle, const css::uno::Any& _rValue ) override;
89 virtual css::uno::Any getPropertyDefaultByHandle( sal_Int32 nHandle ) const override;
90
91 // OComponentHelper
92 virtual void SAL_CALL disposing() override;
93
94protected:
95 virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override;
96
97private:
99
100 using ::cppu::OPropertySetHelper::getFastPropertyValue;
101
102private:
104
105 // <properties>
106 ToggleState m_eDefaultState; // the default check state
107 // </properties>
108protected:
110};
111
112
113// OButtonControl
114
115typedef ::cppu::ImplHelper3 < css::awt::XButton
116 , css::awt::XActionListener
117 , css::beans::XPropertyChangeListener
119
123{
124private:
129
130protected:
131
132 // UNO binding
133 virtual css::uno::Sequence< css::uno::Type> _getTypes() override;
134
135public:
136 explicit OButtonControl(const css::uno::Reference< css::uno::XComponentContext>& _rxFactory);
137 virtual ~OButtonControl() override;
138
139 // XServiceInfo
140 OUString SAL_CALL getImplementationName() override
141 { return "com.sun.star.form.OButtonControl"; }
142
143 virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
144
145 // UNO binding
147 virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type& _rType) override;
148
149 // XActionListener
150 virtual void SAL_CALL actionPerformed(const css::awt::ActionEvent& rEvent) override;
151
152 // XButton
153 virtual void SAL_CALL addActionListener(const css::uno::Reference< css::awt::XActionListener>& _rxListener) override;
154 virtual void SAL_CALL removeActionListener(const css::uno::Reference< css::awt::XActionListener>& _rxListener) override;
155 virtual void SAL_CALL setLabel(const OUString& Label) override;
156 virtual void SAL_CALL setActionCommand(const OUString& _rCommand) override;
157
158 // OComponentHelper
159 virtual void SAL_CALL disposing() override;
160
161 // XPropertyChangeListener
162 virtual void SAL_CALL propertyChange( const css::beans::PropertyChangeEvent& evt ) override;
163
164 // XEventListener
165 virtual void SAL_CALL disposing(const css::lang::EventObject& _rSource) override;
166
167 // XControl
168 virtual sal_Bool SAL_CALL setModel( const css::uno::Reference< css::awt::XControlModel >& _rxModel ) override;
169 void SAL_CALL setDesignMode(sal_Bool bOn) override;
170
171protected:
172 // OFormNavigationHelper overriables
173 virtual void getSupportedFeatures( ::std::vector< sal_Int16 >& /* [out] */ _rFeatureIds ) override;
174 virtual void featureStateChanged( sal_Int16 _nFeatureId, bool _bEnabled ) override;
175 virtual void allFeatureStatesChanged( ) override;
176 virtual bool isEnabled( sal_Int16 _nFeatureId ) const override;
177
178 // XDispatchProviderInterception disambiguation
179 virtual void SAL_CALL registerDispatchProviderInterceptor( const css::uno::Reference< css::frame::XDispatchProviderInterceptor >& Interceptor ) override;
180 virtual void SAL_CALL releaseDispatchProviderInterceptor( const css::uno::Reference< css::frame::XDispatchProviderInterceptor >& Interceptor ) override;
181
182 // OImageControl overridables
183 virtual void actionPerformed_Impl( bool bNotifyListener, const css::awt::MouseEvent& _rEvt ) override;
184
185private:
186 DECL_LINK( OnClick, void*, void );
187
190
192 sal_Int16 getModelUrlFeatureId( ) const;
193
195 void startOrStopModelPropertyListening( bool _bStart );
196};
197
198
199} // namespace frm
200
201/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool m_bEnabledByPropertyValue
caches the value of the "Enabled" property of our model
Definition: Button.hxx:128
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: Button.cxx:355
DECL_LINK(OnClick, void *, void)
virtual void SAL_CALL actionPerformed(const css::awt::ActionEvent &rEvent) override
Definition: Button.cxx:429
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
Definition: Button.cxx:639
virtual void featureStateChanged(sal_Int16 _nFeatureId, bool _bEnabled) override
called when the status of a feature changed
Definition: Button.cxx:713
sal_Int16 getModelUrlFeatureId() const
retrieves the feature id (see OFormNavigationHelper) of the TargetURL of the model.
Definition: Button.cxx:665
virtual void SAL_CALL removeActionListener(const css::uno::Reference< css::awt::XActionListener > &_rxListener) override
Definition: Button.cxx:548
OButtonControl(const css::uno::Reference< css::uno::XComponentContext > &_rxFactory)
Definition: Button.cxx:367
void SAL_CALL setDesignMode(sal_Bool bOn) override
Definition: Button.cxx:694
virtual void SAL_CALL setLabel(const OUString &Label) override
Definition: Button.cxx:519
virtual void allFeatureStatesChanged() override
notification for (potential) changes in the state of all features
Definition: Button.cxx:732
virtual void SAL_CALL setActionCommand(const OUString &_rCommand) override
Definition: Button.cxx:528
virtual void SAL_CALL disposing() override
Definition: Button.cxx:412
virtual void SAL_CALL addActionListener(const css::uno::Reference< css::awt::XActionListener > &_rxListener) override
Definition: Button.cxx:542
virtual ~OButtonControl() override
Definition: Button.cxx:387
OUString SAL_CALL getImplementationName() override
Definition: Button.hxx:140
virtual void SAL_CALL disposing(const css::lang::EventObject &_rSource) override
void startOrStopModelPropertyListening(bool _bStart)
starts or stops listening for changes in model properties we're interested in
Definition: Button.cxx:598
virtual bool isEnabled(sal_Int16 _nFeatureId) const override
checks whether a given feature is enabled
Definition: Button.cxx:743
sal_Int16 m_nTargetUrlFeatureId
Definition: Button.hxx:126
void modelFeatureUrlPotentiallyChanged()
to be called whenever the feature URL represented by our model has potentially changed
Definition: Button.cxx:624
virtual void SAL_CALL registerDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &Interceptor) override
Definition: Button.cxx:753
ImplSVEvent * m_nClickEvent
Definition: Button.hxx:125
virtual void getSupportedFeatures(::std::vector< sal_Int16 > &_rFeatureIds) override
retrieves the list of supported features
Definition: Button.cxx:706
virtual void SAL_CALL releaseDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &Interceptor) override
Definition: Button.cxx:760
virtual void actionPerformed_Impl(bool bNotifyListener, const css::awt::MouseEvent &_rEvt) override
Definition: Button.cxx:494
virtual sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &_rxModel) override
Definition: Button.cxx:607
virtual css::uno::Sequence< css::uno::Type > _getTypes() override
Definition: Button.cxx:345
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &_rType) override
Definition: Button.cxx:395
virtual void SAL_CALL getFastPropertyValue(css::uno::Any &rValue, sal_Int32 nHandle) const override
Definition: Button.cxx:260
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Definition: Button.cxx:130
virtual void SAL_CALL reset() override
Definition: Button.cxx:237
virtual void SAL_CALL removeResetListener(const css::uno::Reference< css::form::XResetListener > &aListener) override
Definition: Button.cxx:254
virtual void SAL_CALL disposing() override
Definition: Button.cxx:230
virtual ~OButtonModel() override
Definition: Button.cxx:99
virtual css::uno::Any getPropertyDefaultByHandle(sal_Int32 nHandle) const override
Definition: Button.cxx:312
void impl_resetNoBroadcast_nothrow()
Definition: Button.cxx:329
virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const css::uno::Any &rValue) override
Definition: Button.cxx:275
OButtonModel(const OButtonModel *_pOriginal, const css::uno::Reference< css::uno::XComponentContext > &_rxFactory)
virtual void SAL_CALL write(const css::uno::Reference< css::io::XObjectOutputStream > &_rxOutStream) override
Definition: Button.cxx:149
virtual sal_Bool SAL_CALL convertFastPropertyValue(css::uno::Any &_rConvertedValue, css::uno::Any &_rOldValue, sal_Int32 _nHandle, const css::uno::Any &_rValue) override
Definition: Button.cxx:295
virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone() override
Definition: Button.cxx:120
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &_rType) override
Definition: Button.cxx:70
virtual void describeFixedProperties(css::uno::Sequence< css::beans::Property > &_rProps) const override
describes the properties provided by this class, or its respective derived class
Definition: Button.cxx:104
OUString SAL_CALL getImplementationName() override
Definition: Button.hxx:64
css::uno::Sequence< css::uno::Type > _getTypes() override
Definition: Button.cxx:79
virtual void SAL_CALL addResetListener(const css::uno::Reference< css::form::XResetListener > &aListener) override
Definition: Button.cxx:248
ToggleState m_eDefaultState
Definition: Button.hxx:106
virtual void SAL_CALL read(const css::uno::Reference< css::io::XObjectInputStream > &_rxInStream) override
Definition: Button.cxx:170
OButtonModel(const css::uno::Reference< css::uno::XComponentContext > &_rxFactory)
ResetHelper m_aResetHelper
Definition: Button.hxx:103
virtual OUString SAL_CALL getServiceName() override
Definition: Button.cxx:143
virtual void SAL_CALL disposing() override
ListBox is a bit confusing / different from other form components, so here are a few notes:
Definition: BaseListBox.hxx:25
ToggleState
Definition: togglestate.hxx:27
::cppu::ImplHelper1< css::form::XReset > OButtonModel_Base
Definition: Button.hxx:43
::cppu::ImplHelper3< css::awt::XButton, css::awt::XActionListener, css::beans::XPropertyChangeListener > OButtonControl_BASE
Definition: Button.hxx:118
unsigned char sal_Bool
#define DECLARE_UNO3_AGG_DEFAULTS(classname, baseclass)