xref: /trunk/main/chart2/source/model/inc/Diagram.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef CHART_DIAGRAM_HXX
24 #define CHART_DIAGRAM_HXX
25 
26 #include "OPropertySet.hxx"
27 #include "MutexContainer.hxx"
28 #include <cppuhelper/implbase8.hxx>
29 #include <comphelper/uno3.hxx>
30 #include <com/sun/star/beans/PropertyValue.hpp>
31 #include <com/sun/star/chart2/data/XDataSource.hpp>
32 #include <com/sun/star/chart2/XDiagram.hpp>
33 #include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
34 #include <com/sun/star/chart2/XTitled.hpp>
35 #include <com/sun/star/chart/X3DDefaultSetter.hpp>
36 #include <com/sun/star/lang/XServiceInfo.hpp>
37 #include <com/sun/star/uno/XComponentContext.hpp>
38 #include <com/sun/star/util/XCloneable.hpp>
39 #include <com/sun/star/util/XModifyBroadcaster.hpp>
40 #include <com/sun/star/util/XModifyListener.hpp>
41 
42 #include "ServiceMacros.hxx"
43 
44 #include <map>
45 #include <vector>
46 
47 namespace chart
48 {
49 
50 namespace impl
51 {
52 typedef ::cppu::WeakImplHelper8<
53     ::com::sun::star::chart2::XDiagram,
54     ::com::sun::star::lang::XServiceInfo,
55     ::com::sun::star::chart2::XCoordinateSystemContainer,
56     ::com::sun::star::chart2::XTitled,
57     ::com::sun::star::chart::X3DDefaultSetter,
58     ::com::sun::star::util::XModifyBroadcaster,
59     ::com::sun::star::util::XModifyListener,
60     ::com::sun::star::util::XCloneable >
61     Diagram_Base;
62 }
63 
64 class Diagram :
65     public MutexContainer,
66     public impl::Diagram_Base,
67     public ::property::OPropertySet
68 {
69 public:
70     Diagram( ::com::sun::star::uno::Reference<
71              ::com::sun::star::uno::XComponentContext > const & xContext );
72     virtual ~Diagram();
73 
74     /// establish methods for factory instantiation
75     APPHELPER_SERVICE_FACTORY_HELPER( Diagram )
76 
77     /// XServiceInfo declarations
78     APPHELPER_XSERVICEINFO_DECL()
79 
80     /// merge XInterface implementations
81     DECLARE_XINTERFACE()
82     /// merge XTypeProvider implementations
83     DECLARE_XTYPEPROVIDER()
84 
85 protected:
86     explicit Diagram( const Diagram & rOther );
87 
88     // ____ OPropertySet ____
89     virtual ::com::sun::star::uno::Any GetDefaultValue( sal_Int32 nHandle ) const;
90 
91     // ____ OPropertySet ____
92     virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
93 
94     // ____ XPropertySet ____
95     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL
96         getPropertySetInfo();
97 
98     // ____ XFastPropertySet ____
99     virtual void SAL_CALL setFastPropertyValue( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue );
100 
101     /// make original interface function visible again
102     using ::com::sun::star::beans::XFastPropertySet::getFastPropertyValue;
103 
104     virtual void SAL_CALL getFastPropertyValue(
105         ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
106 
107 //  virtual sal_Bool SAL_CALL convertFastPropertyValue
108 //         ( ::com::sun::star::uno::Any & rConvertedValue,
109 //           ::com::sun::star::uno::Any & rOldValue,
110 //           sal_Int32 nHandle,
111 //           const ::com::sun::star::uno::Any& rValue )
112 //      throw (::com::sun::star::lang::IllegalArgumentException);
113 
114     // ____ XDiagram ____
115     virtual ::com::sun::star::uno::Reference<
116         ::com::sun::star::beans::XPropertySet > SAL_CALL getWall();
117     virtual ::com::sun::star::uno::Reference<
118         ::com::sun::star::beans::XPropertySet > SAL_CALL getFloor();
119     virtual ::com::sun::star::uno::Reference<
120         ::com::sun::star::chart2::XLegend > SAL_CALL getLegend();
121     virtual void SAL_CALL setLegend( const ::com::sun::star::uno::Reference<
122                                      ::com::sun::star::chart2::XLegend >& xLegend );
123     virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XColorScheme > SAL_CALL getDefaultColorScheme();
124     virtual void SAL_CALL setDefaultColorScheme(
125         const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XColorScheme >& xColorScheme );
126     virtual void SAL_CALL setDiagramData(
127         const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource >& xDataSource,
128         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArguments );
129 
130     // ____ XCoordinateSystemContainer ____
131     virtual void SAL_CALL addCoordinateSystem(
132         const ::com::sun::star::uno::Reference<
133             ::com::sun::star::chart2::XCoordinateSystem >& aCoordSys );
134     virtual void SAL_CALL removeCoordinateSystem(
135         const ::com::sun::star::uno::Reference<
136             ::com::sun::star::chart2::XCoordinateSystem >& aCoordSys );
137     virtual ::com::sun::star::uno::Sequence<
138         ::com::sun::star::uno::Reference<
139         ::com::sun::star::chart2::XCoordinateSystem > > SAL_CALL getCoordinateSystems();
140     virtual void SAL_CALL setCoordinateSystems(
141         const ::com::sun::star::uno::Sequence<
142             ::com::sun::star::uno::Reference<
143                 ::com::sun::star::chart2::XCoordinateSystem > >& aCoordinateSystems );
144 
145     // ____ XTitled ____
146     virtual ::com::sun::star::uno::Reference<
147         ::com::sun::star::chart2::XTitle > SAL_CALL getTitleObject();
148     virtual void SAL_CALL setTitleObject( const ::com::sun::star::uno::Reference<
149                                           ::com::sun::star::chart2::XTitle >& Title );
150 
151     // ____ X3DDefaultSetter ____
152     virtual void SAL_CALL set3DSettingsToDefault();
153     virtual void SAL_CALL setDefaultRotation();
154     virtual void SAL_CALL setDefaultIllumination();
155 
156     // ____ XCloneable ____
157     virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone();
158 
159     // ____ XModifyBroadcaster ____
160     virtual void SAL_CALL addModifyListener(
161         const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
162     virtual void SAL_CALL removeModifyListener(
163         const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener );
164 
165     // ____ XModifyListener ____
166     virtual void SAL_CALL modified(
167         const ::com::sun::star::lang::EventObject& aEvent );
168 
169     // ____ XEventListener (base of XModifyListener) ____
170     virtual void SAL_CALL disposing(
171         const ::com::sun::star::lang::EventObject& Source );
172 
173     // ____ OPropertySet ____
174     virtual void firePropertyChangeEvent();
175     using OPropertySet::disposing;
176 
177     void fireModifyEvent();
178 
179 private:
180      ::com::sun::star::uno::Reference<
181          ::com::sun::star::uno::XComponentContext >                m_xContext;
182 
183     typedef
184         ::std::vector< ::com::sun::star::uno::Reference<
185             ::com::sun::star::chart2::XCoordinateSystem > >
186         tCoordinateSystemContainerType;
187 
188     tCoordinateSystemContainerType m_aCoordSystems;
189 
190     ::com::sun::star::uno::Reference<
191         ::com::sun::star::beans::XPropertySet >
192                         m_xWall;
193 
194     ::com::sun::star::uno::Reference<
195         ::com::sun::star::beans::XPropertySet >
196                         m_xFloor;
197 
198     ::com::sun::star::uno::Reference<
199         ::com::sun::star::chart2::XTitle >
200                         m_xTitle;
201 
202     ::com::sun::star::uno::Reference<
203         ::com::sun::star::chart2::XLegend >
204                         m_xLegend;
205 
206     ::com::sun::star::uno::Reference<
207         ::com::sun::star::chart2::XColorScheme >
208                         m_xColorScheme;
209 
210     ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener > m_xModifyEventForwarder;
211 };
212 
213 } //  namespace chart
214 
215 // CHART_DIAGRAM_HXX
216 #endif
217