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