xref: /AOO41X/main/sfx2/source/inc/tplcomp.hxx (revision 353d8f4d17010cd2d0ea815067cad67e477f2bee)
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 
24 #ifndef _TPLCOMP_HXX
25 #define _TPLCOMP_HXX
26 
27 #include <osl/mutex.hxx>
28 //ASDBG #ifndef _USR_UNO_HXX
29 //ASDBG #include <usr/uno.hxx>
30 //ASDBG #endif
31 //ASDBG #ifndef _USR_LSTCOMP_HXX
32 //ASDBG #include <usr/iterhlp.hxx>
33 //ASDBG #endif
34 //ASDBG #ifndef _USR_SERVICES_HXX
35 //ASDBG #include <usr/services.hxx>
36 //ASDBG #endif
37 #include <com/sun/star/chaos/XCommandExecutor.hpp>
38 #include <com/sun/star/chaos/XStatusCallback.hpp>
39 #include <com/sun/star/chaos/UnknownCommandException.hpp>
40 #include <com/sun/star/chaos/StatusCallbackEvent.hpp>
41 #include <com/sun/star/chaos/XURLContent.hpp>
42 #include <com/sun/star/chaos/XExplorerExchange.hpp>
43 #include <com/sun/star/beans/PropertyValues.hpp>
44 #include <com/sun/star/beans/XPropertySet.hpp>
45 #include <com/sun/star/beans/PropertyValue.hpp>
46 #include <com/sun/star/beans/PropertyState.hpp>
47 #include <com/sun/star/beans/XPropertySetInfo.hpp>
48 #include <com/sun/star/beans/XMultiPropertySet.hpp>
49 #include <com/sun/star/beans/XFastPropertySet.hpp>
50 #include <com/sun/star/beans/XVetoableChangeListener.hpp>
51 #include <com/sun/star/beans/XPropertyState.hpp>
52 #include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
53 #include <com/sun/star/beans/PropertyAttribute.hpp>
54 #include <com/sun/star/beans/XPropertiesChangeListener.hpp>
55 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
56 #include <com/sun/star/beans/XPropertyAccess.hpp>
57 #include <com/sun/star/beans/XPropertyContainer.hpp>
58 #include <com/sun/star/beans/PropertyStateChangeEvent.hpp>
59 #include <com/sun/star/beans/PropertyChangeEvent.hpp>
60 #include <com/sun/star/lang/XServiceInfo.hpp>
61 #include <cppuhelper/weak.hxx>
62 #include <cppuhelper/interfacecontainer.hxx>
63 
64 class CntAnchor;
65 
66 class TplAnchorListener;
67 
68 // -----------------
69 // - TplComponent -
70 // -----------------
71 
72 class TplComponent : public ::com::sun::star::chaos::XURLContent, public ::com::sun::star::chaos::XCommandExecutor,
73                      public ::com::sun::star::beans::XPropertySet, public ::com::sun::star::chaos::XExplorerExchange,
74                      public ::cppu::OWeakObject, public ::com::sun::star::lang::XServiceInfo
75 {
76 private:
77 
78     void                        HandleNewEvt( const ::rtl::OUString& rCommand,
79                                               const ::com::sun::star::uno::Any& rAny );
80     void                        CreatePopupMenu( ::com::sun::star::uno::Any& rAny ) const;
81 
82 protected:
83 
84     ::rtl::OUString                     maURL;
85     ::rtl::OUString                     maName;
86     ::osl::Mutex         aMutex;
87     ::cppu::OInterfaceContainerHelper maListeners;
88     TplAnchorListener*          mpListener;
89     short                       mnOpenMode;
90 
91 public:
92 
93     SFX_DECL_XINTERFACE_XTYPEPROVIDER_XSERVICEINFO
94 
95                                 TplComponent();
96                                 ~TplComponent();
97 
98     // interface  ::com::sun::star::ucb::XContent
getParent()99     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >  SAL_CALL     getParent() throw ( ::com::sun::star::uno::RuntimeException )
100             { ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >  aRef; return aRef; }
setParent(const::com::sun::star::uno::Reference<::com::sun::star::uno::XInterface> & Parent)101     virtual void        SAL_CALL                setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Parent ) throw ( ::com::sun::star::uno::RuntimeException )
102             {}
103 
104     // interface  ::com::sun::star::chaos::XURLContent
getURL()105     virtual ::rtl::OUString   SAL_CALL              getURL()  throw ( ::com::sun::star::uno::RuntimeException )
106             { return maURL; }
107     virtual sal_Bool       SAL_CALL             initialize( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent > & aParent, const ::rtl::OUString& aURL ) throw ( ::com::sun::star::uno::RuntimeException );
108 
109     // interface  ::com::sun::star::chaos::XCommandExecutor
110     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >  SAL_CALL     queryCommands()  throw ( ::com::sun::star::uno::RuntimeException );
cancel(const::com::sun::star::uno::Reference<::com::sun::star::uno::XInterface> & rCommandId)111     virtual void       SAL_CALL             cancel( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rCommandId ) throw ( ::com::sun::star::uno::RuntimeException )
112             {}
113     virtual void       SAL_CALL             execute( const ::rtl::OUString& rCommand, const ::com::sun::star::uno::Any& rArgs,
114                                          const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rCallback ) throw ( ::com::sun::star::uno::RuntimeException );
115 
116     // interface  ::com::sun::star::beans::XPropertySet
117     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >  SAL_CALL  getPropertySetInfo()  throw ( ::com::sun::star::uno::RuntimeException );
118     virtual void      SAL_CALL             setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw ( ::com::sun::star::uno::RuntimeException );
119     virtual ::com::sun::star::uno::Any   SAL_CALL               getPropertyValue( const ::rtl::OUString& aPropertyName )  throw ( ::com::sun::star::uno::RuntimeException );
120     virtual void      SAL_CALL              addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
121                                                            const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
122     virtual void      SAL_CALL              removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
123                                                               const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
124     virtual void      SAL_CALL              addVetoableChangeListener( const ::rtl::OUString& aPropertyName,
125                                                            const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
126     virtual void      SAL_CALL              removeVetoableChangeListener( const ::rtl::OUString& aPropertyName,
127                                                               const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
128     // interface  ::com::sun::star::chaos::XExplorerExchange
129     virtual ::com::sun::star::uno::Any     SAL_CALL             createDataObject( sal_uInt16& nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
130     virtual sal_uInt16    SAL_CALL              insertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
131                                                   sal_uInt16 nUserAction,
132                                                   sal_uInt16 nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
133     virtual sal_Bool      SAL_CALL              queryInsertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
134                                                        sal_uInt16 nUserAction,
135                                                        sal_uInt16 nSourceOptions,
136                                                        sal_uInt16& nResultingAction,
137                                                        sal_uInt16& nDefaultAction ) throw ( ::com::sun::star::uno::RuntimeException );
138 
139 
140     // -------------------------------------------------------------
141 
142     void                        CreateNewChild( CntAnchor* pAnchor,
143                                                 const String& rTitle );
144     void                        RemoveChild( CntAnchor* pAnchor );
145     void                        StopListening( CntAnchor* pAnchor );
146     void                        HandleOpenEvt();
147 };
148 
149 // ------------------------
150 // - TplContentsComponent -
151 // ------------------------
152 
153 class TplContentsListener;
154 
155 class TplContentsComponent : public TplComponent
156 {
157 private:
158     ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent >                _xParent;
159     TplContentsListener*        _pListener;
160     SvDataObjectRef             _xObject;
161     sal_uInt16                      _nLayout;
162 
163     void                        HandleOpenEvt( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rJob,
164                                                const ::com::sun::star::chaos::StatusCallbackEvent& rEvt );
165     void                        HandleNewEvt( const ::rtl::OUString& rCommand,
166                                               const ::com::sun::star::uno::Any& rAny );
167     void                        HandleInitEvt();
168 
169     void                        CreateFileName( String& rName,
170                                                 String& rDirURL );
171     void                        CreateNewTpl( const String& rFilter,
172                                               const String& rParentDir,
173                                               const String& rFileName,
174                                               const String& rDocName );
175 protected:
176 
177     void                        CreatePopupMenu( ::com::sun::star::uno::Any& rAny ) const;
178 
179 public:
180 
181     SFX_DECL_XINTERFACE_XTYPEPROVIDER_XSERVICEINFO
182 
183                                 TplContentsComponent();
184                                 ~TplContentsComponent();
185 
186     virtual sal_Bool   SAL_CALL             initialize( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent > & aParent, const ::rtl::OUString& aURL ) throw ( ::com::sun::star::uno::RuntimeException );
187 
188 
189     // interface  ::com::sun::star::chaos::XCommandExecutor
190     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >  SAL_CALL     queryCommands()  throw ( ::com::sun::star::uno::RuntimeException );
191     virtual void         SAL_CALL           execute( const ::rtl::OUString& rCommand, const ::com::sun::star::uno::Any& rArgs,
192                                          const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rCallback ) throw ( ::com::sun::star::uno::RuntimeException );
193 
194     // interface  ::com::sun::star::beans::XPropertySet
195     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >  SAL_CALL  getPropertySetInfo()  throw ( ::com::sun::star::uno::RuntimeException );
196     virtual ::com::sun::star::uno::Any    SAL_CALL              getPropertyValue( const ::rtl::OUString& aPropertyName )  throw ( ::com::sun::star::uno::RuntimeException );
197     virtual void       SAL_CALL             setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw ( ::com::sun::star::uno::RuntimeException );
198 
199     // interface  ::com::sun::star::chaos::XExplorerExchange
200     virtual ::com::sun::star::uno::Any      SAL_CALL                createDataObject( sal_uInt16& nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
201     virtual sal_uInt16  SAL_CALL                    insertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
202                                                   sal_uInt16 nUserAction,
203                                                   sal_uInt16 nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
204     virtual sal_Bool    SAL_CALL                    queryInsertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
205                                                        sal_uInt16 nUserAction,
206                                                        sal_uInt16 nSourceOptions,
207                                                        sal_uInt16& nResultingAction,
208                                                        sal_uInt16& nDefaultAction ) throw ( ::com::sun::star::uno::RuntimeException );
209 
210     // -------------------------------------------------------------
211 
212     void                        CreateNewChild( CntAnchor* pAnchor );
213     void                        HandleDeleteEvt();
214     void                        SetURL( const ::rtl::OUString& rURL);
215     void                        SetName( const ::rtl::OUString& rNewName );
216 };
217 
218 
219 #endif
220 
221