1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _UNOTXVW_HXX 28 #define _UNOTXVW_HXX 29 #include <sfx2/sfxbasecontroller.hxx> 30 #include <com/sun/star/embed/XEmbeddedObject.hpp> 31 #include <com/sun/star/text/XTextViewCursor.hpp> 32 #include <com/sun/star/text/XTextViewCursorSupplier.hpp> 33 #include <com/sun/star/text/XRubySelection.hpp> 34 #include <com/sun/star/view/XFormLayerAccess.hpp> 35 #include <com/sun/star/view/XScreenCursor.hpp> 36 #include <com/sun/star/view/XViewSettingsSupplier.hpp> 37 #include <com/sun/star/view/XSelectionSupplier.hpp> 38 #include <com/sun/star/view/XLineCursor.hpp> 39 #include <com/sun/star/view/XViewCursor.hpp> 40 #include <com/sun/star/text/XPageCursor.hpp> 41 #include <com/sun/star/beans/XPropertySet.hpp> 42 #include <com/sun/star/beans/XPropertySetInfo.hpp> 43 #include <com/sun/star/beans/XPropertyState.hpp> 44 #include <com/sun/star/lang/XServiceInfo.hpp> 45 #include <com/sun/star/datatransfer/XTransferableSupplier.hpp> 46 #include <cppuhelper/implbase8.hxx> // helper for implementations 47 #include <svl/itemprop.hxx> 48 #include "calbck.hxx" 49 #include "TextCursorHelper.hxx" 50 #include <comphelper/uno3.hxx> 51 52 #include <sfx2/objsh.hxx> 53 54 class SdrObject; 55 class SwView; 56 57 typedef ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > * XSelectionChangeListenerPtr; 58 SV_DECL_PTRARR_DEL( SelectionChangeListenerArr, XSelectionChangeListenerPtr, 4, 4 ) 59 60 /****************************************************************************** 61 * 62 ******************************************************************************/ 63 class SwXTextView : 64 public ::com::sun::star::view::XSelectionSupplier, 65 public ::com::sun::star::lang::XServiceInfo, 66 public ::com::sun::star::view::XFormLayerAccess, 67 public ::com::sun::star::text::XTextViewCursorSupplier, 68 public ::com::sun::star::text::XRubySelection, 69 public ::com::sun::star::view::XViewSettingsSupplier, 70 public ::com::sun::star::beans::XPropertySet, 71 public ::com::sun::star::datatransfer::XTransferableSupplier, 72 public SfxBaseController 73 { 74 SelectionChangeListenerArr aSelChangedListeners; 75 76 SwView* m_pView; 77 const SfxItemPropertySet* m_pPropSet; // property map for SwXTextView properties 78 // (not related to pxViewSettings!) 79 80 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > * pxViewSettings; 81 ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > * pxTextViewCursor; 82 83 84 SdrObject* GetControl( 85 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & Model, 86 ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& xToFill ); 87 88 protected: 89 virtual ~SwXTextView(); 90 public: 91 SwXTextView(SwView* pSwView); 92 93 94 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException); 95 virtual void SAL_CALL acquire( ) throw(); 96 virtual void SAL_CALL release( ) throw(); 97 98 //XTypeProvider 99 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 100 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); 101 102 //XSelectionSupplier 103 virtual ::com::sun::star::uno::Any SAL_CALL getSelection(void) throw( ::com::sun::star::uno::RuntimeException ); 104 virtual sal_Bool SAL_CALL select(const ::com::sun::star::uno::Any& aInterface) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException ); 105 virtual void SAL_CALL addSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > & xListener) throw( ::com::sun::star::uno::RuntimeException ); 106 virtual void SAL_CALL removeSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener > & xListener) throw( ::com::sun::star::uno::RuntimeException ); 107 108 // XFormLayerAccess 109 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); 110 virtual ::sal_Bool SAL_CALL isFormDesignMode( ) throw (::com::sun::star::uno::RuntimeException); 111 virtual void SAL_CALL setFormDesignMode( ::sal_Bool DesignMode ) throw (::com::sun::star::uno::RuntimeException); 112 113 // XControlAccess 114 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 ); 115 116 //XTextViewCursorSupplier 117 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextViewCursor > SAL_CALL getViewCursor(void) throw( ::com::sun::star::uno::RuntimeException ); 118 119 //XViewSettings 120 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL getViewSettings(void) throw( ::com::sun::star::uno::RuntimeException ); 121 122 //XRubySelection 123 virtual ::com::sun::star::uno::Sequence< 124 ::com::sun::star::uno::Sequence< 125 ::com::sun::star::beans::PropertyValue > > SAL_CALL getRubyList( sal_Bool bAutomatic ) 126 throw(::com::sun::star::uno::RuntimeException); 127 128 virtual void SAL_CALL setRubyList( 129 const ::com::sun::star::uno::Sequence< 130 ::com::sun::star::uno::Sequence< 131 ::com::sun::star::beans::PropertyValue > >& RubyList, sal_Bool bAutomatic ) 132 throw(::com::sun::star::uno::RuntimeException); 133 134 //XPropertySet 135 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException); 136 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); 137 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); 138 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); 139 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); 140 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); 141 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); 142 143 //XServiceInfo 144 virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException ); 145 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException ); 146 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException ); 147 148 //XTransferableSupplier 149 virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable > SAL_CALL getTransferable( ) throw (::com::sun::star::uno::RuntimeException); 150 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); 151 152 void NotifySelChanged(); 153 void NotifyDBChanged(); 154 155 SwView* GetView() {return m_pView;} 156 void Invalidate(); 157 158 // temporary document used for PDF export of selections/multi-selections 159 SfxObjectShellLock BuildTmpSelectionDoc(); 160 }; 161 162 /* -----------------17.09.98 12:52------------------- 163 * 164 * --------------------------------------------------*/ 165 166 typedef cppu::WeakImplHelper8< 167 ::com::sun::star::text::XTextViewCursor, 168 ::com::sun::star::lang::XServiceInfo, 169 ::com::sun::star::text::XPageCursor, 170 ::com::sun::star::view::XScreenCursor, 171 ::com::sun::star::view::XViewCursor, 172 ::com::sun::star::view::XLineCursor, 173 ::com::sun::star::beans::XPropertySet, 174 ::com::sun::star::beans::XPropertyState 175 > SwXTextViewCursor_Base; 176 177 class SwXTextViewCursor : public SwXTextViewCursor_Base, 178 public SwClient, 179 public OTextCursorHelper 180 { 181 SwView* m_pView; 182 const SfxItemPropertySet* m_pPropSet; 183 protected: 184 sal_Bool IsTextSelection( sal_Bool bAllowTables = sal_True ) const; 185 virtual ~SwXTextViewCursor(); 186 public: 187 SwXTextViewCursor(SwView* pVw); 188 189 DECLARE_XINTERFACE() 190 191 //XTextViewCursor 192 virtual sal_Bool SAL_CALL isVisible(void) throw( ::com::sun::star::uno::RuntimeException ); 193 virtual void SAL_CALL setVisible(sal_Bool bVisible) throw( ::com::sun::star::uno::RuntimeException ); 194 virtual ::com::sun::star::awt::Point SAL_CALL getPosition(void) throw( ::com::sun::star::uno::RuntimeException ); 195 196 //XTextCursor - neu 197 virtual void SAL_CALL collapseToStart( ) throw(::com::sun::star::uno::RuntimeException); 198 virtual void SAL_CALL collapseToEnd( ) throw(::com::sun::star::uno::RuntimeException); 199 virtual sal_Bool SAL_CALL isCollapsed( ) throw(::com::sun::star::uno::RuntimeException); 200 virtual sal_Bool SAL_CALL goLeft( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 201 virtual sal_Bool SAL_CALL goRight( sal_Int16 nCount, sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 202 virtual void SAL_CALL gotoStart( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 203 virtual void SAL_CALL gotoEnd( sal_Bool bExpand ) throw(::com::sun::star::uno::RuntimeException); 204 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); 205 206 //XPageCursor 207 virtual sal_Bool SAL_CALL jumpToFirstPage(void) throw( ::com::sun::star::uno::RuntimeException ); 208 virtual sal_Bool SAL_CALL jumpToLastPage(void) throw( ::com::sun::star::uno::RuntimeException ); 209 virtual sal_Bool SAL_CALL jumpToPage(sal_Int16 nPage) throw( ::com::sun::star::uno::RuntimeException ); 210 virtual sal_Bool SAL_CALL jumpToNextPage(void) throw( ::com::sun::star::uno::RuntimeException ); 211 virtual sal_Bool SAL_CALL jumpToPreviousPage(void) throw( ::com::sun::star::uno::RuntimeException ); 212 virtual sal_Bool SAL_CALL jumpToEndOfPage(void) throw( ::com::sun::star::uno::RuntimeException ); 213 virtual sal_Bool SAL_CALL jumpToStartOfPage(void) throw( ::com::sun::star::uno::RuntimeException ); 214 virtual sal_Int16 SAL_CALL getPage(void) throw( ::com::sun::star::uno::RuntimeException ); 215 216 //XTextRange 217 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void) throw( ::com::sun::star::uno::RuntimeException ); 218 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart(void) throw( ::com::sun::star::uno::RuntimeException ); 219 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd(void) throw( ::com::sun::star::uno::RuntimeException ); 220 virtual rtl::OUString SAL_CALL getString(void) throw( ::com::sun::star::uno::RuntimeException ); 221 virtual void SAL_CALL setString(const rtl::OUString& aString) throw( ::com::sun::star::uno::RuntimeException ); 222 223 //XScreenCursor 224 virtual sal_Bool SAL_CALL screenDown(void) throw( ::com::sun::star::uno::RuntimeException ); 225 virtual sal_Bool SAL_CALL screenUp(void) throw( ::com::sun::star::uno::RuntimeException ); 226 227 //XViewCursor 228 virtual sal_Bool SAL_CALL goDown(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 229 virtual sal_Bool SAL_CALL goUp(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 230 // virtual sal_Bool goLeft(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 231 // virtual sal_Bool goRight(sal_Int16 nCount, sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 232 233 //XLineCursor 234 virtual sal_Bool SAL_CALL isAtStartOfLine(void) throw( ::com::sun::star::uno::RuntimeException ); 235 virtual sal_Bool SAL_CALL isAtEndOfLine(void) throw( ::com::sun::star::uno::RuntimeException ); 236 virtual void SAL_CALL gotoEndOfLine(sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 237 virtual void SAL_CALL gotoStartOfLine(sal_Bool bExpand) throw( ::com::sun::star::uno::RuntimeException ); 238 239 //XPropertySet 240 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); 241 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); 242 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); 243 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); 244 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); 245 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); 246 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); 247 248 //XPropertyState 249 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 250 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); 251 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); 252 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); 253 254 //XServiceInfo 255 virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException ); 256 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException ); 257 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException ); 258 259 static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId(); 260 261 //XUnoTunnel 262 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); 263 264 void Invalidate(){m_pView = 0;} 265 266 // ITextCursorHelper 267 virtual const SwPaM* GetPaM() const; 268 virtual SwPaM* GetPaM(); 269 virtual const SwDoc* GetDoc() const; 270 virtual SwDoc* GetDoc(); 271 }; 272 #endif 273 274 275