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 _UNOTXVW_HXX 24 #define _UNOTXVW_HXX 25 #include <sfx2/sfxbasecontroller.hxx> 26 #include <com/sun/star/embed/XEmbeddedObject.hpp> 27 #include <com/sun/star/text/XTextViewCursor.hpp> 28 #include <com/sun/star/text/XTextViewCursorSupplier.hpp> 29 #include <com/sun/star/text/XRubySelection.hpp> 30 #include <com/sun/star/view/XFormLayerAccess.hpp> 31 #include <com/sun/star/view/XScreenCursor.hpp> 32 #include <com/sun/star/view/XViewSettingsSupplier.hpp> 33 #include <com/sun/star/view/XSelectionSupplier.hpp> 34 #include <com/sun/star/view/XLineCursor.hpp> 35 #include <com/sun/star/view/XViewCursor.hpp> 36 #include <com/sun/star/text/XPageCursor.hpp> 37 #include <com/sun/star/beans/XPropertySet.hpp> 38 #include <com/sun/star/beans/XPropertySetInfo.hpp> 39 #include <com/sun/star/beans/XPropertyState.hpp> 40 #include <com/sun/star/lang/XServiceInfo.hpp> 41 #include <com/sun/star/datatransfer/XTransferableSupplier.hpp> 42 #include <cppuhelper/implbase8.hxx> // helper for implementations 43 #include <svl/itemprop.hxx> 44 #include "calbck.hxx" 45 #include "TextCursorHelper.hxx" 46 #include <comphelper/uno3.hxx> 47 48 #include <sfx2/objsh.hxx> 49 50 class SdrObject; 51 class SwView; 52 53 typedef ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > * XSelectionChangeListenerPtr; 54 SV_DECL_PTRARR_DEL( SelectionChangeListenerArr, XSelectionChangeListenerPtr, 4, 4 ) 55 56 /****************************************************************************** 57 * 58 ******************************************************************************/ 59 class SwXTextView : 60 public ::com::sun::star::view::XSelectionSupplier, 61 public ::com::sun::star::lang::XServiceInfo, 62 public ::com::sun::star::view::XFormLayerAccess, 63 public ::com::sun::star::text::XTextViewCursorSupplier, 64 public ::com::sun::star::text::XRubySelection, 65 public ::com::sun::star::view::XViewSettingsSupplier, 66 public ::com::sun::star::beans::XPropertySet, 67 public ::com::sun::star::datatransfer::XTransferableSupplier, 68 public SfxBaseController 69 { 70 SelectionChangeListenerArr aSelChangedListeners; 71 72 SwView* m_pView; 73 const SfxItemPropertySet* m_pPropSet; // property map for SwXTextView properties 74 // (not related to pxViewSettings!) 75 76 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > * pxViewSettings; 77 ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > * pxTextViewCursor; 78 79 80 SdrObject* GetControl( 81 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & Model, 82 ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& xToFill ); 83 84 protected: 85 virtual ~SwXTextView(); 86 public: 87 SwXTextView(SwView* pSwView); 88 89 90 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException); 91 virtual void SAL_CALL acquire( ) throw(); 92 virtual void SAL_CALL release( ) throw(); 93 94 //XTypeProvider 95 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 96 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); 97 98 //XSelectionSupplier 99 virtual ::com::sun::star::uno::Any SAL_CALL getSelection(void) throw( ::com::sun::star::uno::RuntimeException ); 100 virtual sal_Bool SAL_CALL select(const ::com::sun::star::uno::Any& aInterface) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException ); 101 virtual void SAL_CALL addSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > & xListener) throw( ::com::sun::star::uno::RuntimeException ); 102 virtual void SAL_CALL removeSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > & xListener) throw( ::com::sun::star::uno::RuntimeException ); 103 104 // XFormLayerAccess 105 virtual ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > SAL_CALL getFormController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& Form ) throw (::com::sun::star::uno::RuntimeException); 106 virtual ::sal_Bool SAL_CALL isFormDesignMode( ) throw (::com::sun::star::uno::RuntimeException); 107 virtual void SAL_CALL setFormDesignMode( ::sal_Bool DesignMode ) throw (::com::sun::star::uno::RuntimeException); 108 109 // XControlAccess 110 virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl > SAL_CALL getControl(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & Model) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException ); 111 112 //XTextViewCursorSupplier 113 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > SAL_CALL getViewCursor(void) throw( ::com::sun::star::uno::RuntimeException ); 114 115 //XViewSettings 116 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getViewSettings(void) throw( ::com::sun::star::uno::RuntimeException ); 117 118 //XRubySelection 119 virtual ::com::sun::star::uno::Sequence< 120 ::com::sun::star::uno::Sequence< 121 ::com::sun::star::beans::PropertyValue > > SAL_CALL getRubyList( sal_Bool bAutomatic ) 122 throw(::com::sun::star::uno::RuntimeException); 123 124 virtual void SAL_CALL setRubyList( 125 const ::com::sun::star::uno::Sequence< 126 ::com::sun::star::uno::Sequence< 127 ::com::sun::star::beans::PropertyValue > >& RubyList, sal_Bool bAutomatic ) 128 throw(::com::sun::star::uno::RuntimeException); 129 130 //XPropertySet 131 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException); 132 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 133 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 134 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 135 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 136 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 137 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 138 139 //XServiceInfo 140 virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException ); 141 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException ); 142 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException ); 143 144 //XTransferableSupplier 145 virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > SAL_CALL getTransferable( ) throw (::com::sun::star::uno::RuntimeException); 146 virtual void SAL_CALL insertTransferable( const ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& xTrans ) throw (::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::uno::RuntimeException); 147 148 void NotifySelChanged(); 149 void NotifyDBChanged(); 150 GetView()151 SwView* GetView() {return m_pView;} 152 void Invalidate(); 153 154 // temporary document used for PDF export of selections/multi-selections 155 SfxObjectShellLock BuildTmpSelectionDoc(); 156 }; 157 158 /* -----------------17.09.98 12:52------------------- 159 * 160 * --------------------------------------------------*/ 161 162 typedef cppu::WeakImplHelper8< 163 ::com::sun::star::text::XTextViewCursor, 164 ::com::sun::star::lang::XServiceInfo, 165 ::com::sun::star::text::XPageCursor, 166 ::com::sun::star::view::XScreenCursor, 167 ::com::sun::star::view::XViewCursor, 168 ::com::sun::star::view::XLineCursor, 169 ::com::sun::star::beans::XPropertySet, 170 ::com::sun::star::beans::XPropertyState 171 > SwXTextViewCursor_Base; 172 173 class SwXTextViewCursor : public SwXTextViewCursor_Base, 174 public SwClient, 175 public OTextCursorHelper 176 { 177 SwView* m_pView; 178 const SfxItemPropertySet* m_pPropSet; 179 protected: 180 sal_Bool IsTextSelection( sal_Bool bAllowTables = sal_True ) const; 181 virtual ~SwXTextViewCursor(); 182 public: 183 SwXTextViewCursor(SwView* pVw); 184 185 DECLARE_XINTERFACE() 186 187 //XTextViewCursor 188 virtual sal_Bool SAL_CALL isVisible(void) throw( ::com::sun::star::uno::RuntimeException ); 189 virtual void SAL_CALL setVisible(sal_Bool bVisible) throw( ::com::sun::star::uno::RuntimeException ); 190 virtual ::com::sun::star::awt::Point SAL_CALL getPosition(void) throw( ::com::sun::star::uno::RuntimeException ); 191 192 //XTextCursor - neu 193 virtual void SAL_CALL collapseToStart( ) throw(::com::sun::star::uno::RuntimeException); 194 virtual void SAL_CALL collapseToEnd( ) throw(::com::sun::star::uno::RuntimeException); 195 virtual sal_Bool SAL_CALL isCollapsed( ) throw(::com::sun::star::uno::RuntimeException); 196 virtual sal_Bool SAL_CALL goLeft( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 197 virtual sal_Bool SAL_CALL goRight( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 198 virtual void SAL_CALL gotoStart( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 199 virtual void SAL_CALL gotoEnd( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 200 virtual void SAL_CALL gotoRange( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 201 202 //XPageCursor 203 virtual sal_Bool SAL_CALL jumpToFirstPage(void) throw( ::com::sun::star::uno::RuntimeException ); 204 virtual sal_Bool SAL_CALL jumpToLastPage(void) throw( ::com::sun::star::uno::RuntimeException ); 205 virtual sal_Bool SAL_CALL jumpToPage(sal_Int16 nPage) throw( ::com::sun::star::uno::RuntimeException ); 206 virtual sal_Bool SAL_CALL jumpToNextPage(void) throw( ::com::sun::star::uno::RuntimeException ); 207 virtual sal_Bool SAL_CALL jumpToPreviousPage(void) throw( ::com::sun::star::uno::RuntimeException ); 208 virtual sal_Bool SAL_CALL jumpToEndOfPage(void) throw( ::com::sun::star::uno::RuntimeException ); 209 virtual sal_Bool SAL_CALL jumpToStartOfPage(void) throw( ::com::sun::star::uno::RuntimeException ); 210 virtual sal_Int16 SAL_CALL getPage(void) throw( ::com::sun::star::uno::RuntimeException ); 211 212 //XTextRange 213 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException ); 214 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException ); 215 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException ); 216 virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException ); 217 virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException ); 218 219 //XScreenCursor 220 virtual sal_Bool SAL_CALL screenDown(void) throw( ::com::sun::star::uno::RuntimeException ); 221 virtual sal_Bool SAL_CALL screenUp(void) throw( ::com::sun::star::uno::RuntimeException ); 222 223 //XViewCursor 224 virtual sal_Bool SAL_CALL goDown(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 225 virtual sal_Bool SAL_CALL goUp(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 226 // virtual sal_Bool goLeft(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 227 // virtual sal_Bool goRight(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 228 229 //XLineCursor 230 virtual sal_Bool SAL_CALL isAtStartOfLine(void) throw( ::com::sun::star::uno::RuntimeException ); 231 virtual sal_Bool SAL_CALL isAtEndOfLine(void) throw( ::com::sun::star::uno::RuntimeException ); 232 virtual void SAL_CALL gotoEndOfLine(sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 233 virtual void SAL_CALL gotoStartOfLine(sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 234 235 //XPropertySet 236 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); 237 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 238 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 239 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 240 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 241 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 242 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 243 244 //XPropertyState 245 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 246 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 247 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 248 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 249 250 //XServiceInfo 251 virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException ); 252 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException ); 253 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException ); 254 255 static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId(); 256 257 //XUnoTunnel 258 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); 259 Invalidate()260 void Invalidate(){m_pView = 0;} 261 262 // ITextCursorHelper 263 virtual const SwPaM* GetPaM() const; 264 virtual SwPaM* GetPaM(); 265 virtual const SwDoc* GetDoc() const; 266 virtual SwDoc* GetDoc(); 267 }; 268 #endif 269 270 271