1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: cell.hxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef _SVX_CELL_HXX_
32 #define _SVX_CELL_HXX_
34 #include <com/sun/star/table/XMergeableCell.hpp>
35 #include <com/sun/star/awt/XLayoutConstrains.hpp>
36 #include <com/sun/star/beans/XMultiPropertyStates.hpp>
37 #include <com/sun/star/lang/XEventListener.hpp>
39 #include <rtl/ref.hxx>
41 #include "svx/sdtaitm.hxx"
42 #include "tablemodel.hxx"
43 #include "svx/unotext.hxx"
44 #include "svx/svdtext.hxx"
46 // -----------------------------------------------------------------------------
49 class OutlinerParaObject
;
51 namespace sdr
{ namespace properties
{
55 // -----------------------------------------------------------------------------
57 namespace sdr
{ namespace table
{
59 // -----------------------------------------------------------------------------
61 class SVX_DLLPUBLIC Cell
: public SdrText
,
62 public SvxUnoTextBase
,
63 public ::com::sun::star::table::XMergeableCell
,
64 public ::com::sun::star::awt::XLayoutConstrains
,
65 public ::com::sun::star::lang::XEventListener
,
66 public ::cppu::OWeakObject
68 friend class CellUndo
;
71 SVX_DLLPRIVATE
static rtl::Reference
< Cell
> create( SdrTableObj
& rTableObj
, OutlinerParaObject
* pOutlinerParaObject
);
74 SVX_DLLPRIVATE
void dispose();
77 bool IsTextEditActive();
78 SVX_DLLPRIVATE
bool hasText() const;
80 SVX_DLLPRIVATE
void cloneFrom( const CellRef
& rCell
);
82 SVX_DLLPRIVATE
void setCellRect( ::Rectangle
& rCellRect
) { maCellRect
= rCellRect
; }
83 SVX_DLLPRIVATE
const ::Rectangle
& getCellRect() const { return maCellRect
; }
84 SVX_DLLPRIVATE ::Rectangle
& getCellRect() { return maCellRect
; }
86 OutlinerParaObject
* GetEditOutlinerParaObject() const;
87 SVX_DLLPRIVATE
void SetStyleSheet( SfxStyleSheet
* pStyleSheet
, sal_Bool bDontRemoveHardAttr
);
88 SVX_DLLPRIVATE
virtual SfxStyleSheet
* GetStyleSheet() const;
89 SfxStyleSheetPool
* GetStyleSheetPool() const;
90 SVX_DLLPRIVATE
virtual const Rectangle
& GetCurrentBoundRect() const;
91 SVX_DLLPRIVATE
virtual void TakeTextAnchorRect(Rectangle
& rAnchorRect
) const;
93 SVX_DLLPRIVATE
virtual const SfxItemSet
& GetItemSet() const;
94 SVX_DLLPRIVATE
void SetMergedItemSetAndBroadcast(const SfxItemSet
& rSet
, sal_Bool bClearAllItems
);
95 void SetMergedItem(const SfxPoolItem
& rItem
);
97 SVX_DLLPRIVATE sal_Int32
getMinimumWidth();
98 SVX_DLLPRIVATE sal_Int32
getMinimumHeight();
100 SVX_DLLPRIVATE
long GetTextLeftDistance() const;
101 SVX_DLLPRIVATE
long GetTextRightDistance() const;
102 SVX_DLLPRIVATE
long GetTextUpperDistance() const;
103 SVX_DLLPRIVATE
long GetTextLowerDistance() const;
105 SVX_DLLPRIVATE SdrTextVertAdjust
GetTextVerticalAdjust() const;
106 SdrTextHorzAdjust
GetTextHorizontalAdjust() const;
108 SVX_DLLPRIVATE
virtual void SetModel(SdrModel
* pNewModel
);
110 SVX_DLLPRIVATE
void merge( sal_Int32 nColumnSpan
, sal_Int32 nRowSpan
);
111 SVX_DLLPRIVATE
void mergeContent( const CellRef
& xSourceCell
);
112 SVX_DLLPRIVATE
void replaceContentAndFormating( const CellRef
& xSourceCell
);
114 SVX_DLLPRIVATE
void setMerged();
117 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Any SAL_CALL
queryInterface( const ::com::sun::star::uno::Type
& Type
) throw (::com::sun::star::uno::RuntimeException
);
118 SVX_DLLPRIVATE
virtual void SAL_CALL
acquire() throw ();
119 SVX_DLLPRIVATE
virtual void SAL_CALL
release() throw ();
122 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw (::com::sun::star::uno::RuntimeException
);
123 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Sequence
< ::sal_Int8
> SAL_CALL
getImplementationId( ) throw (::com::sun::star::uno::RuntimeException
);
126 SVX_DLLPRIVATE
virtual ::rtl::OUString SAL_CALL
getImplementationName( ) throw (::com::sun::star::uno::RuntimeException
);
127 SVX_DLLPRIVATE
virtual ::sal_Bool SAL_CALL
supportsService( const ::rtl::OUString
& ServiceName
) throw (::com::sun::star::uno::RuntimeException
);
128 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Sequence
< ::rtl::OUString
> SAL_CALL
getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException
);
131 SVX_DLLPRIVATE
virtual ::com::sun::star::awt::Size SAL_CALL
getMinimumSize( ) throw (::com::sun::star::uno::RuntimeException
);
132 SVX_DLLPRIVATE
virtual ::com::sun::star::awt::Size SAL_CALL
getPreferredSize( ) throw (::com::sun::star::uno::RuntimeException
);
133 SVX_DLLPRIVATE
virtual ::com::sun::star::awt::Size SAL_CALL
calcAdjustedSize( const ::com::sun::star::awt::Size
& aNewSize
) throw (::com::sun::star::uno::RuntimeException
);
136 SVX_DLLPRIVATE
virtual ::sal_Int32 SAL_CALL
getRowSpan() throw (::com::sun::star::uno::RuntimeException
);
137 SVX_DLLPRIVATE
virtual ::sal_Int32 SAL_CALL
getColumnSpan() throw (::com::sun::star::uno::RuntimeException
);
138 SVX_DLLPRIVATE
virtual ::sal_Bool SAL_CALL
isMerged() throw (::com::sun::star::uno::RuntimeException
);
141 SVX_DLLPRIVATE
virtual ::rtl::OUString SAL_CALL
getFormula() throw (::com::sun::star::uno::RuntimeException
);
142 SVX_DLLPRIVATE
virtual void SAL_CALL
setFormula( const ::rtl::OUString
& aFormula
) throw (::com::sun::star::uno::RuntimeException
);
143 SVX_DLLPRIVATE
virtual double SAL_CALL
getValue() throw (::com::sun::star::uno::RuntimeException
);
144 SVX_DLLPRIVATE
virtual void SAL_CALL
setValue( double nValue
) throw (::com::sun::star::uno::RuntimeException
);
145 SVX_DLLPRIVATE
virtual ::com::sun::star::table::CellContentType SAL_CALL
getType() throw (::com::sun::star::uno::RuntimeException
);
146 SVX_DLLPRIVATE
virtual sal_Int32 SAL_CALL
getError() throw (::com::sun::star::uno::RuntimeException
);
148 // ::com::sun::star::beans::XPropertySet
149 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo
> SAL_CALL
getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException
);
150 SVX_DLLPRIVATE
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
);
151 SVX_DLLPRIVATE
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
);
152 SVX_DLLPRIVATE
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
);
153 SVX_DLLPRIVATE
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
);
154 SVX_DLLPRIVATE
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
);
155 SVX_DLLPRIVATE
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
);
158 SVX_DLLPRIVATE
virtual void SAL_CALL
setPropertyValues( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
, const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Any
>& aValues
) throw (::com::sun::star::beans::PropertyVetoException
, ::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
);
159 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Any
> SAL_CALL
getPropertyValues( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
) throw (::com::sun::star::uno::RuntimeException
);
160 SVX_DLLPRIVATE
virtual void SAL_CALL
addPropertiesChangeListener( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertiesChangeListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
161 SVX_DLLPRIVATE
virtual void SAL_CALL
removePropertiesChangeListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertiesChangeListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
162 SVX_DLLPRIVATE
virtual void SAL_CALL
firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertiesChangeListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
164 // ::com::sun::star::beans::XPropertyState
165 SVX_DLLPRIVATE
virtual ::com::sun::star::beans::PropertyState SAL_CALL
getPropertyState( const ::rtl::OUString
& PropertyName
) throw(::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
);
166 SVX_DLLPRIVATE
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
);
167 SVX_DLLPRIVATE
virtual void SAL_CALL
setPropertyToDefault( const ::rtl::OUString
& PropertyName
) throw(::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
);
168 SVX_DLLPRIVATE
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
);
170 // XMultiPropertyStates
171 SVX_DLLPRIVATE
virtual void SAL_CALL
setAllPropertiesToDefault( ) throw (::com::sun::star::uno::RuntimeException
);
172 SVX_DLLPRIVATE
virtual void SAL_CALL
setPropertiesToDefault( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::uno::RuntimeException
);
173 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Any
> SAL_CALL
getPropertyDefaults( const ::com::sun::star::uno::Sequence
< ::rtl::OUString
>& aPropertyNames
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
);
176 SVX_DLLPRIVATE
virtual void SAL_CALL
setFastPropertyValue( ::sal_Int32 nHandle
, 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
);
177 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Any SAL_CALL
getFastPropertyValue( ::sal_Int32 nHandle
) throw (::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
);
180 SVX_DLLPRIVATE
virtual void SAL_CALL
insertTextContent( const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
>& xRange
, const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextContent
>& xContent
, ::sal_Bool bAbsorb
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
);
181 SVX_DLLPRIVATE
virtual void SAL_CALL
removeTextContent( const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextContent
>& xContent
) throw (::com::sun::star::container::NoSuchElementException
, ::com::sun::star::uno::RuntimeException
);
184 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextCursor
> SAL_CALL
createTextCursor( ) throw (::com::sun::star::uno::RuntimeException
);
185 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextCursor
> SAL_CALL
createTextCursorByRange( const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
>& aTextPosition
) throw (::com::sun::star::uno::RuntimeException
);
186 SVX_DLLPRIVATE
virtual void SAL_CALL
insertString( const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
>& xRange
, const ::rtl::OUString
& aString
, ::sal_Bool bAbsorb
) throw (::com::sun::star::uno::RuntimeException
);
187 SVX_DLLPRIVATE
virtual void SAL_CALL
insertControlCharacter( const ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
>& xRange
, ::sal_Int16 nControlCharacter
, ::sal_Bool bAbsorb
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::uno::RuntimeException
);
190 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::text::XText
> SAL_CALL
getText( ) throw (::com::sun::star::uno::RuntimeException
);
191 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
> SAL_CALL
getStart( ) throw (::com::sun::star::uno::RuntimeException
);
192 SVX_DLLPRIVATE
virtual ::com::sun::star::uno::Reference
< ::com::sun::star::text::XTextRange
> SAL_CALL
getEnd( ) throw (::com::sun::star::uno::RuntimeException
);
193 SVX_DLLPRIVATE
virtual ::rtl::OUString SAL_CALL
getString( ) throw (::com::sun::star::uno::RuntimeException
);
194 SVX_DLLPRIVATE
virtual void SAL_CALL
setString( const ::rtl::OUString
& aString
) throw (::com::sun::star::uno::RuntimeException
);
197 SVX_DLLPRIVATE
virtual void SAL_CALL
disposing( const ::com::sun::star::lang::EventObject
& Source
) throw (::com::sun::star::uno::RuntimeException
);
199 SVX_DLLPRIVATE
virtual void SetOutlinerParaObject( OutlinerParaObject
* pTextObject
);
201 SVX_DLLPRIVATE
void AddUndo();
203 using SvxUnoTextRangeBase::setPropertyValue
;
204 using SvxUnoTextRangeBase::getPropertyValue
;
206 SVX_DLLPRIVATE
sdr::properties::TextProperties
* CloneProperties( SdrObject
& rNewObj
, Cell
& rNewCell
);
208 SVX_DLLPRIVATE
static sdr::properties::TextProperties
* CloneProperties( sdr::properties::TextProperties
* pProperties
, SdrObject
& rNewObj
, Cell
& rNewCell
);
210 SVX_DLLPRIVATE
void notifyModified();
212 ::rtl::OUString
getName();
215 SVX_DLLPRIVATE
virtual const SfxItemSet
& GetObjectItemSet();
216 SVX_DLLPRIVATE
virtual void SetObjectItem(const SfxPoolItem
& rItem
);
218 SVX_DLLPRIVATE ::com::sun::star::uno::Any
GetAnyForItem( SfxItemSet
& aSet
, const SfxItemPropertySimpleEntry
* pMap
);
221 SVX_DLLPRIVATE
Cell( SdrTableObj
& rTableObj
, OutlinerParaObject
* pOutlinerParaObject
) throw();
222 SVX_DLLPRIVATE
virtual ~Cell() throw();
224 const SvxItemPropertySet
* mpPropSet
;
226 sdr::properties::TextProperties
* mpProperties
;
228 ::com::sun::star::table::CellContentType mnCellContentType
;
230 ::rtl::OUString msFormula
;
234 ::sal_Int32 mnRowSpan
;
235 ::sal_Int32 mnColSpan
;
237 Rectangle maCellRect
;
239 ::com::sun::star::uno::Reference
< ::com::sun::star::table::XTable
> mxTable
;
242 // -----------------------------------------------------------------------------