LCOV - code coverage report
Current view: top level - svx/source/table - cell.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 698 0.0 %
Date: 2014-04-14 Functions: 0 108 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include <com/sun/star/drawing/BitmapMode.hpp>
      22             : #include <com/sun/star/style/XStyle.hpp>
      23             : #include <com/sun/star/text/WritingMode.hpp>
      24             : #include <com/sun/star/table/TableBorder.hpp>
      25             : #include <com/sun/star/table/BorderLine2.hpp>
      26             : 
      27             : #include <comphelper/string.hxx>
      28             : 
      29             : #include <cppuhelper/supportsservice.hxx>
      30             : #include <cppuhelper/typeprovider.hxx>
      31             : #include <svl/style.hxx>
      32             : #include <svl/itemset.hxx>
      33             : 
      34             : #include <osl/mutex.hxx>
      35             : #include <vcl/svapp.hxx>
      36             : 
      37             : #include "svx/sdr/properties/textproperties.hxx"
      38             : #include "editeng/outlobj.hxx"
      39             : #include "editeng/writingmodeitem.hxx"
      40             : #include "svx/svdotable.hxx"
      41             : #include "svx/svdoutl.hxx"
      42             : #include "svx/unoshtxt.hxx"
      43             : #include "svx/svdmodel.hxx"
      44             : 
      45             : #include "tableundo.hxx"
      46             : #include "cell.hxx"
      47             : #include "svx/unoshprp.hxx"
      48             : #include "svx/unoshape.hxx"
      49             : #include "editeng/editobj.hxx"
      50             : #include "editeng/boxitem.hxx"
      51             : #include "svx/xflbstit.hxx"
      52             : #include "svx/xflbmtit.hxx"
      53             : #include <svx/svdpool.hxx>
      54             : 
      55             : 
      56             : 
      57             : using ::editeng::SvxBorderLine;
      58             : using namespace ::com::sun::star::uno;
      59             : using namespace ::com::sun::star::beans;
      60             : using namespace ::com::sun::star::lang;
      61             : using namespace ::com::sun::star::text;
      62             : using namespace ::com::sun::star::table;
      63             : using namespace ::com::sun::star::drawing;
      64             : using namespace ::com::sun::star::style;
      65             : using namespace ::com::sun::star::container;
      66             : 
      67             : 
      68             : 
      69           0 : static const SvxItemPropertySet* ImplGetSvxCellPropertySet()
      70             : {
      71             :     // Propertymap fuer einen Outliner Text
      72             :     static const SfxItemPropertyMapEntry aSvxCellPropertyMap[] =
      73             :     {
      74           0 :         FILL_PROPERTIES
      75             : //      { "HasLevels",                    OWN_ATTR_HASLEVELS,             ::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY,      0},
      76           0 :         { OUString("Style"),                        OWN_ATTR_STYLE,                 cppu::UnoType< ::com::sun::star::style::XStyle >::get(),                                    ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0},
      77           0 :         { OUString(UNO_NAME_TEXT_WRITINGMODE),      SDRATTR_TEXTDIRECTION,          ::getCppuType( (::com::sun::star::text::WritingMode*) 0 ),                         0,      0},
      78           0 :         { OUString(UNO_NAME_TEXT_HORZADJUST),       SDRATTR_TEXT_HORZADJUST,        ::getCppuType((const ::com::sun::star::drawing::TextHorizontalAdjust*)0),  0,      0}, \
      79           0 :         { OUString(UNO_NAME_TEXT_LEFTDIST),         SDRATTR_TEXT_LEFTDIST,          ::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
      80           0 :         { OUString(UNO_NAME_TEXT_LOWERDIST),        SDRATTR_TEXT_LOWERDIST,         ::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
      81           0 :         { OUString(UNO_NAME_TEXT_RIGHTDIST),        SDRATTR_TEXT_RIGHTDIST,         ::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
      82           0 :         { OUString(UNO_NAME_TEXT_UPPERDIST),        SDRATTR_TEXT_UPPERDIST,         ::getCppuType((const sal_Int32*)0),        0,      SFX_METRIC_ITEM}, \
      83           0 :         { OUString(UNO_NAME_TEXT_VERTADJUST),       SDRATTR_TEXT_VERTADJUST,        ::getCppuType((const ::com::sun::star::drawing::TextVerticalAdjust*)0),    0,      0},\
      84           0 :         { OUString(UNO_NAME_TEXT_WORDWRAP),         SDRATTR_TEXT_WORDWRAP,          ::getBooleanCppuType(),        0,      0}, \
      85             : 
      86           0 :         { OUString("TableBorder"),                  OWN_ATTR_TABLEBORDER,           ::getCppuType((const TableBorder*)0), 0, 0 }, \
      87           0 :         { OUString("TopBorder"),                    SDRATTR_TABLE_BORDER,           ::getCppuType((const BorderLine*)0), 0, TOP_BORDER }, \
      88           0 :         { OUString("BottomBorder"),                 SDRATTR_TABLE_BORDER,           ::getCppuType((const BorderLine*)0), 0, BOTTOM_BORDER }, \
      89           0 :         { OUString("LeftBorder"),                   SDRATTR_TABLE_BORDER,           ::getCppuType((const BorderLine*)0), 0, LEFT_BORDER }, \
      90           0 :         { OUString("RightBorder"),                  SDRATTR_TABLE_BORDER,           ::getCppuType((const BorderLine*)0), 0, RIGHT_BORDER }, \
      91             : 
      92           0 :         SVX_UNOEDIT_OUTLINER_PROPERTIES,
      93           0 :         SVX_UNOEDIT_CHAR_PROPERTIES,
      94           0 :         SVX_UNOEDIT_PARA_PROPERTIES,
      95             :         { OUString(), 0, css::uno::Type(), 0, 0 }
      96           0 :     };
      97             : 
      98           0 :     static SvxItemPropertySet aSvxCellPropertySet( aSvxCellPropertyMap, SdrObject::GetGlobalDrawObjectItemPool() );
      99           0 :     return &aSvxCellPropertySet;
     100             : }
     101             : 
     102             : namespace
     103             : {
     104             : 
     105             : class CellTextProvider : public svx::ITextProvider
     106             : {
     107             : public:
     108             :     explicit CellTextProvider(const sdr::table::CellRef xCell);
     109             :     virtual ~CellTextProvider();
     110             : 
     111             : private:
     112             :     virtual sal_Int32 getTextCount() const SAL_OVERRIDE;
     113             :     virtual SdrText* getText(sal_Int32 nIndex) const SAL_OVERRIDE;
     114             : 
     115             : private:
     116             :     const sdr::table::CellRef m_xCell;
     117             : };
     118             : 
     119           0 : CellTextProvider::CellTextProvider(const sdr::table::CellRef xCell)
     120           0 :     : m_xCell(xCell)
     121             : {
     122           0 : }
     123             : 
     124           0 : CellTextProvider::~CellTextProvider()
     125             : {
     126           0 : }
     127             : 
     128           0 : sal_Int32 CellTextProvider::getTextCount() const
     129             : {
     130           0 :     return 1;
     131             : }
     132             : 
     133           0 : SdrText* CellTextProvider::getText(sal_Int32 nIndex) const
     134             : {
     135             :     (void) nIndex;
     136             :     assert(nIndex == 0);
     137           0 :     return m_xCell.get();
     138             : }
     139             : 
     140             : }
     141             : 
     142             : namespace sdr
     143             : {
     144             :     namespace properties
     145             :     {
     146             :         class CellProperties : public TextProperties
     147             :         {
     148             :         protected:
     149             :             // create a new itemset
     150             :             SfxItemSet& CreateObjectSpecificItemSet(SfxItemPool& rPool) SAL_OVERRIDE;
     151             : 
     152             :             const svx::ITextProvider& getTextProvider() const SAL_OVERRIDE;
     153             : 
     154             :         public:
     155             :             // basic constructor
     156             :             CellProperties(SdrObject& rObj, sdr::table::Cell* pCell );
     157             : 
     158             :             // constructor for copying, but using new object
     159             :             CellProperties(const CellProperties& rProps, SdrObject& rObj, sdr::table::Cell* pCell);
     160             : 
     161             :             // destructor
     162             :             virtual ~CellProperties();
     163             : 
     164             :             // Clone() operator, normally just calls the local copy constructor
     165             :             BaseProperties& Clone(SdrObject& rObj) const SAL_OVERRIDE;
     166             : 
     167             :             void ForceDefaultAttributes() SAL_OVERRIDE;
     168             : 
     169             :             void ItemSetChanged(const SfxItemSet& rSet) SAL_OVERRIDE;
     170             : 
     171             :             void ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem) SAL_OVERRIDE;
     172             : 
     173             :             void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr) SAL_OVERRIDE;
     174             : 
     175             :             sdr::table::CellRef mxCell;
     176             : 
     177             :         private:
     178             :             const CellTextProvider maTextProvider;
     179             :         };
     180             : 
     181             :         // create a new itemset
     182           0 :         SfxItemSet& CellProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool)
     183             :         {
     184             :             return *(new SfxItemSet(rPool,
     185             : 
     186             :                 // range from SdrAttrObj
     187             :                 SDRATTR_START, SDRATTR_SHADOW_LAST,
     188             :                 SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
     189             :                 SDRATTR_TEXTDIRECTION, SDRATTR_TEXTDIRECTION,
     190             : 
     191             :                 // range for SdrTableObj
     192             :                 SDRATTR_TABLE_FIRST, SDRATTR_TABLE_LAST,
     193             : 
     194             :                 // range from SdrTextObj
     195             :                 EE_ITEMS_START, EE_ITEMS_END,
     196             : 
     197             :                 // end
     198           0 :                 0, 0));
     199             :         }
     200             : 
     201           0 :         const svx::ITextProvider& CellProperties::getTextProvider() const
     202             :         {
     203           0 :             return maTextProvider;
     204             :         }
     205             : 
     206           0 :         CellProperties::CellProperties(SdrObject& rObj, sdr::table::Cell* pCell)
     207             :         :   TextProperties(rObj)
     208             :         ,   mxCell(pCell)
     209           0 :         ,   maTextProvider(mxCell)
     210             :         {
     211           0 :         }
     212             : 
     213           0 :         CellProperties::CellProperties(const CellProperties& rProps, SdrObject& rObj, sdr::table::Cell* pCell)
     214             :         :   TextProperties(rProps, rObj)
     215             :         ,   mxCell( pCell )
     216           0 :         ,   maTextProvider(mxCell)
     217             :         {
     218           0 :         }
     219             : 
     220           0 :         CellProperties::~CellProperties()
     221             :         {
     222           0 :         }
     223             : 
     224           0 :         BaseProperties& CellProperties::Clone(SdrObject& rObj) const
     225             :         {
     226             :             OSL_FAIL("CellProperties::Clone(), does not work yet!");
     227           0 :             return *(new CellProperties(*this, rObj,0));
     228             :         }
     229             : 
     230           0 :         void CellProperties::ForceDefaultAttributes()
     231             :         {
     232           0 :         }
     233             : 
     234           0 :         void CellProperties::ItemSetChanged(const SfxItemSet& rSet )
     235             :         {
     236           0 :             SdrTextObj& rObj = (SdrTextObj&)GetSdrObject();
     237             : 
     238           0 :             if( mxCell.is() )
     239             :             {
     240           0 :                 OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject();
     241             : 
     242           0 :                 bool bOwnParaObj = pParaObj != 0;
     243             : 
     244           0 :                 if( pParaObj == 0 )
     245           0 :                     pParaObj = mxCell->GetOutlinerParaObject();
     246             : 
     247           0 :                 if(pParaObj)
     248             :                 {
     249             :                     // handle outliner attributes
     250           0 :                     Outliner* pOutliner = 0;
     251             : 
     252           0 :                     if(mxCell->IsTextEditActive())
     253             :                     {
     254           0 :                         pOutliner = rObj.GetTextEditOutliner();
     255             :                     }
     256             :                     else
     257             :                     {
     258           0 :                         pOutliner = &rObj.ImpGetDrawOutliner();
     259           0 :                         pOutliner->SetText(*pParaObj);
     260             :                     }
     261             : 
     262           0 :                     sal_Int32 nParaCount(pOutliner->GetParagraphCount());
     263             : 
     264           0 :                     for(sal_Int32 nPara = 0; nPara < nParaCount; nPara++)
     265             :                     {
     266           0 :                         SfxItemSet aSet(pOutliner->GetParaAttribs(nPara));
     267           0 :                         aSet.Put(rSet);
     268           0 :                         pOutliner->SetParaAttribs(nPara, aSet);
     269           0 :                     }
     270             : 
     271           0 :                     if(!mxCell->IsTextEditActive())
     272             :                     {
     273           0 :                         if(nParaCount)
     274             :                         {
     275             :                             // force ItemSet
     276           0 :                             GetObjectItemSet();
     277             : 
     278           0 :                             SfxItemSet aNewSet(pOutliner->GetParaAttribs(0L));
     279           0 :                             mpItemSet->Put(aNewSet);
     280             :                         }
     281             : 
     282           0 :                         OutlinerParaObject* pTemp = pOutliner->CreateParaObject(0, nParaCount);
     283           0 :                         pOutliner->Clear();
     284             : 
     285           0 :                         mxCell->SetOutlinerParaObject(pTemp);
     286             :                     }
     287             : 
     288           0 :                     if( bOwnParaObj )
     289           0 :                         delete pParaObj;
     290             :                 }
     291             :             }
     292             : 
     293             :             // call parent
     294           0 :             AttributeProperties::ItemSetChanged(rSet);
     295             : 
     296           0 :             if( mxCell.is() )
     297           0 :                 mxCell->notifyModified();
     298           0 :         }
     299             : 
     300           0 :         void CellProperties::ItemChange(const sal_uInt16 nWhich, const SfxPoolItem* pNewItem)
     301             :         {
     302           0 :             if(pNewItem && (SDRATTR_TEXTDIRECTION == nWhich))
     303             :             {
     304           0 :                 bool bVertical(com::sun::star::text::WritingMode_TB_RL == ((SvxWritingModeItem*)pNewItem)->GetValue());
     305             : 
     306           0 :                 sdr::table::SdrTableObj& rObj = (sdr::table::SdrTableObj&)GetSdrObject();
     307           0 :                 if( rObj.IsVerticalWriting() != bVertical )
     308           0 :                     rObj.SetVerticalWriting(bVertical);
     309             : 
     310             :                 // Set a cell vertical property
     311           0 :                 OutlinerParaObject* pParaObj = mxCell->GetEditOutlinerParaObject();
     312           0 :                 if( pParaObj == 0 )
     313           0 :                     pParaObj = mxCell->GetOutlinerParaObject();
     314           0 :                 if(pParaObj)
     315             :                 {
     316           0 :                     pParaObj->SetVertical(bVertical);
     317             :                 }
     318             : 
     319             :             }
     320             : 
     321             :             // call parent
     322           0 :             AttributeProperties::ItemChange( nWhich, pNewItem );
     323           0 :         }
     324             : 
     325           0 :         void CellProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr)
     326             :         {
     327           0 :             TextProperties::SetStyleSheet( pNewStyleSheet, bDontRemoveHardAttr );
     328           0 :         }
     329             :     } // end of namespace properties
     330             : } // end of namespace sdr
     331             : 
     332             : namespace sdr { namespace table {
     333             : 
     334             : 
     335             : // Cell
     336             : 
     337             : 
     338           0 : rtl::Reference< Cell > Cell::create( SdrTableObj& rTableObj, OutlinerParaObject* pOutlinerParaObject )
     339             : {
     340           0 :     rtl::Reference< Cell > xCell( new Cell( rTableObj, pOutlinerParaObject ) );
     341           0 :     if( xCell->mxTable.is() )
     342             :     {
     343           0 :         Reference< XEventListener > xListener( xCell.get() );
     344           0 :         xCell->mxTable->addEventListener( xListener );
     345             :     }
     346           0 :     return xCell;
     347             : }
     348             : 
     349             : 
     350             : 
     351           0 : Cell::Cell( SdrTableObj& rTableObj, OutlinerParaObject* pOutlinerParaObject ) throw()
     352             : : SdrText( rTableObj, pOutlinerParaObject )
     353             : , SvxUnoTextBase( ImplGetSvxUnoOutlinerTextCursorSvxPropertySet() )
     354           0 : , mpPropSet( ImplGetSvxCellPropertySet() )
     355           0 : , mpProperties( new sdr::properties::CellProperties( rTableObj, this ) )
     356             : , mnCellContentType( CellContentType_EMPTY )
     357             : , mfValue( 0.0 )
     358             : , mnError( 0 )
     359             : , mbMerged( sal_False )
     360             : , mnRowSpan( 1 )
     361             : , mnColSpan( 1 )
     362           0 : , mxTable( rTableObj.getTable() )
     363             : {
     364           0 :     if( rTableObj.GetModel() )
     365           0 :         SetModel( rTableObj.GetModel() );
     366           0 : }
     367             : 
     368             : 
     369             : 
     370           0 : Cell::~Cell() throw()
     371             : {
     372           0 :     dispose();
     373           0 : }
     374             : 
     375             : 
     376             : 
     377           0 : void Cell::dispose()
     378             : {
     379           0 :     if( mxTable.is() )
     380             :     {
     381             :         try
     382             :         {
     383           0 :             Reference< XEventListener > xThis( this );
     384           0 :             mxTable->removeEventListener( xThis );
     385             :         }
     386           0 :         catch( Exception& )
     387             :         {
     388             :             OSL_FAIL("Cell::dispose(), exception caught!");
     389             :         }
     390           0 :         mxTable.clear();
     391             :     }
     392             : 
     393           0 :     if( mpProperties )
     394             :     {
     395           0 :         delete mpProperties;
     396           0 :         mpProperties = 0;
     397             :     }
     398           0 :     SetOutlinerParaObject( 0 );
     399           0 : }
     400             : 
     401             : 
     402             : 
     403           0 : void Cell::SetModel(SdrModel* pNewModel)
     404             : {
     405           0 :     SvxTextEditSource* pTextEditSource = dynamic_cast< SvxTextEditSource* >( GetEditSource() );
     406           0 :     if( (GetModel() != pNewModel) || ( pNewModel && !pTextEditSource) )
     407             :     {
     408           0 :         if( mpProperties )
     409             :         {
     410           0 :             SfxItemPool* pItemPool = mpProperties->GetObjectItemSet().GetPool();
     411             : 
     412             :             // test for correct pool in ItemSet; move to new pool if necessary
     413           0 :             if( pNewModel && pItemPool && pItemPool != &pNewModel->GetItemPool())
     414           0 :                 mpProperties->MoveToItemPool(pItemPool, &pNewModel->GetItemPool(), pNewModel);
     415             :         }
     416             : 
     417           0 :         if( pTextEditSource )
     418             :         {
     419           0 :             pTextEditSource->ChangeModel( pNewModel );
     420             :         }
     421             :         else
     422             :         {
     423           0 :             SetEditSource( new SvxTextEditSource( &GetObject(), this, static_cast< XWeak * >( this ) ) );
     424             :         }
     425             : 
     426           0 :         SetStyleSheet( 0, sal_True );
     427           0 :         SdrText::SetModel( pNewModel );
     428           0 :         ForceOutlinerParaObject( OUTLINERMODE_TEXTOBJECT );
     429             :     }
     430           0 : }
     431             : 
     432             : 
     433             : 
     434           0 : void Cell::merge( sal_Int32 nColumnSpan, sal_Int32 nRowSpan )
     435             : {
     436           0 :     if( (mnColSpan != nColumnSpan) || (mnRowSpan != nRowSpan) || (mbMerged != sal_False) )
     437             :     {
     438           0 :         mnColSpan = nColumnSpan;
     439           0 :         mnRowSpan = nRowSpan;
     440           0 :         mbMerged = sal_False;
     441           0 :         notifyModified();
     442             :     }
     443           0 : }
     444             : 
     445             : 
     446             : 
     447           0 : void Cell::mergeContent( const CellRef& xSourceCell )
     448             : {
     449           0 :     SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
     450             : 
     451           0 :     if( xSourceCell->hasText() )
     452             :     {
     453           0 :         SdrOutliner& rOutliner=rTableObj.ImpGetDrawOutliner();
     454           0 :         rOutliner.SetUpdateMode(true);
     455             : 
     456           0 :         if( hasText() )
     457             :         {
     458           0 :             rOutliner.SetText(*GetOutlinerParaObject());
     459           0 :             rOutliner.AddText(*xSourceCell->GetOutlinerParaObject());
     460             :         }
     461             :         else
     462             :         {
     463           0 :             rOutliner.SetText(*xSourceCell->GetOutlinerParaObject());
     464             :         }
     465             : 
     466           0 :         SetOutlinerParaObject( rOutliner.CreateParaObject() );
     467           0 :         rOutliner.Clear();
     468           0 :         xSourceCell->SetOutlinerParaObject(rOutliner.CreateParaObject());
     469           0 :         rOutliner.Clear();
     470           0 :         SetStyleSheet( GetStyleSheet(), sal_True );
     471             :     }
     472           0 : }
     473             : 
     474             : 
     475             : 
     476           0 : void Cell::cloneFrom( const CellRef& xCell )
     477             : {
     478           0 :     if( xCell.is() )
     479             :     {
     480           0 :         replaceContentAndFormating( xCell );
     481             : 
     482           0 :         mnCellContentType = xCell->mnCellContentType;
     483             : 
     484           0 :         msFormula = xCell->msFormula;
     485           0 :         mfValue = xCell->mfValue;
     486           0 :         mnError = xCell->mnError;
     487             : 
     488           0 :         mbMerged = xCell->mbMerged;
     489           0 :         mnRowSpan = xCell->mnRowSpan;
     490           0 :         mnColSpan = xCell->mnColSpan;
     491             : 
     492             :     }
     493           0 :     notifyModified();
     494           0 : }
     495             : 
     496           0 : void Cell::replaceContentAndFormating( const CellRef& xSourceCell )
     497             : {
     498           0 :     if( xSourceCell.is() && mpProperties )
     499             :     {
     500           0 :         mpProperties->SetMergedItemSet( xSourceCell->GetObjectItemSet() );
     501           0 :         SetOutlinerParaObject( new OutlinerParaObject(*xSourceCell->GetOutlinerParaObject()) );
     502             : 
     503           0 :         SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
     504           0 :         SdrTableObj& rSourceTableObj = dynamic_cast< SdrTableObj& >( xSourceCell->GetObject() );
     505             : 
     506           0 :         if(rSourceTableObj.GetModel() != rTableObj.GetModel())
     507             :         {
     508           0 :             SetStyleSheet( 0, sal_True );
     509             :         }
     510             :     }
     511           0 : }
     512             : 
     513             : 
     514             : 
     515           0 : void Cell::setMerged()
     516             : {
     517           0 :     if( !mbMerged )
     518             :     {
     519           0 :         mbMerged = sal_True;
     520           0 :         notifyModified();
     521             :     }
     522           0 : }
     523             : 
     524             : 
     525             : 
     526           0 : void Cell::notifyModified()
     527             : {
     528           0 :     if( mxTable.is() )
     529           0 :         mxTable->setModified( sal_True );
     530           0 : }
     531             : 
     532             : 
     533             : // SdrTextShape proxy
     534             : 
     535             : 
     536           0 : bool Cell::IsTextEditActive()
     537             : {
     538           0 :     bool isActive = false;
     539           0 :     SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
     540           0 :     if(rTableObj.getActiveCell().get() == this )
     541             :     {
     542           0 :         OutlinerParaObject* pParaObj = rTableObj.GetEditOutlinerParaObject();
     543           0 :         if( pParaObj != 0 )
     544             :         {
     545           0 :             isActive = true;
     546           0 :             delete pParaObj;
     547             :         }
     548             :     }
     549           0 :     return isActive;
     550             : }
     551             : 
     552             : 
     553             : 
     554           0 : bool Cell::hasText() const
     555             : {
     556           0 :     OutlinerParaObject* pParaObj = GetOutlinerParaObject();
     557           0 :     if( pParaObj )
     558             :     {
     559           0 :         const EditTextObject& rTextObj = pParaObj->GetTextObject();
     560           0 :         if( rTextObj.GetParagraphCount() >= 1 )
     561             :         {
     562           0 :             if( rTextObj.GetParagraphCount() == 1 )
     563             :             {
     564           0 :                 if( rTextObj.GetText(0).isEmpty() )
     565           0 :                     return false;
     566             :             }
     567           0 :             return true;
     568             :         }
     569             :     }
     570             : 
     571           0 :     return false;
     572             : }
     573             : 
     574             : 
     575             : 
     576           0 : OutlinerParaObject* Cell::GetEditOutlinerParaObject() const
     577             : {
     578           0 :     SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
     579           0 :     if( rTableObj.getActiveCell().get() == this )
     580           0 :         return rTableObj.GetEditOutlinerParaObject();
     581           0 :     return 0;
     582             : }
     583             : 
     584             : 
     585             : 
     586           0 : void Cell::SetStyleSheet( SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr )
     587             : {
     588             :     // only allow cell styles for cells
     589           0 :     if( pStyleSheet && pStyleSheet->GetFamily() != SFX_STYLE_FAMILY_FRAME )
     590           0 :         return;
     591             : 
     592           0 :     if( mpProperties && (mpProperties->GetStyleSheet() != pStyleSheet) )
     593             :     {
     594           0 :         mpProperties->SetStyleSheet( pStyleSheet, bDontRemoveHardAttr );
     595             :     }
     596             : }
     597             : 
     598             : 
     599             : 
     600           0 : const SfxItemSet& Cell::GetObjectItemSet()
     601             : {
     602           0 :     if( mpProperties )
     603             :     {
     604           0 :         return mpProperties->GetObjectItemSet();
     605             :     }
     606             :     else
     607             :     {
     608             :         OSL_FAIL("Cell::GetObjectItemSet(), called without properties!");
     609           0 :         return GetObject().GetObjectItemSet();
     610             :     }
     611             : }
     612             : 
     613           0 : void Cell::SetObjectItem(const SfxPoolItem& rItem)
     614             : {
     615           0 :     if( mpProperties )
     616             :     {
     617           0 :         mpProperties->SetObjectItem( rItem );
     618           0 :         notifyModified();
     619             :     }
     620           0 : }
     621             : 
     622           0 : void Cell::SetMergedItem(const SfxPoolItem& rItem)
     623             : {
     624           0 :     SetObjectItem(rItem);
     625           0 : }
     626             : 
     627           0 : SfxStyleSheet* Cell::GetStyleSheet() const
     628             : {
     629           0 :     if( mpProperties )
     630           0 :         return mpProperties->GetStyleSheet();
     631             :     else
     632           0 :         return 0;
     633             : }
     634             : 
     635             : 
     636             : 
     637           0 : const Rectangle& Cell::GetCurrentBoundRect() const
     638             : {
     639           0 :     return maCellRect;
     640             : }
     641             : 
     642             : 
     643             : 
     644           0 : void Cell::TakeTextAnchorRect(Rectangle& rAnchorRect) const
     645             : {
     646           0 :     rAnchorRect.Left() = maCellRect.Left() + GetTextLeftDistance();
     647           0 :     rAnchorRect.Right() = maCellRect.Right() - GetTextRightDistance();
     648           0 :     rAnchorRect.Top() = maCellRect.Top() + GetTextUpperDistance();
     649           0 :     rAnchorRect.Bottom() = maCellRect.Bottom() - GetTextLowerDistance();
     650           0 : }
     651             : 
     652             : 
     653             : 
     654           0 : const SfxItemSet& Cell::GetItemSet() const
     655             : {
     656           0 :     return mpProperties->GetObjectItemSet();
     657             : }
     658             : 
     659             : 
     660             : 
     661           0 : void Cell::SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, sal_Bool bClearAllItems)
     662             : {
     663           0 :     if( mpProperties )
     664             :     {
     665           0 :         mpProperties->SetMergedItemSetAndBroadcast(rSet, bClearAllItems);
     666           0 :         notifyModified();
     667             :     }
     668           0 : }
     669             : 
     670             : 
     671             : 
     672           0 : sal_Int32 Cell::getMinimumWidth()
     673             : {
     674           0 :     return GetTextLeftDistance() + GetTextRightDistance() + 100;
     675             : }
     676             : 
     677             : 
     678             : 
     679           0 : sal_Int32 Cell::getMinimumHeight()
     680             : {
     681           0 :     if( !mpProperties )
     682           0 :         return 0;
     683             : 
     684           0 :     SdrTableObj& rTableObj = dynamic_cast< SdrTableObj& >( GetObject() );
     685           0 :     sal_Int32 nMinimumHeight = 0;
     686             : 
     687           0 :     Rectangle aTextRect;
     688           0 :     TakeTextAnchorRect( aTextRect );
     689           0 :     Size aSize( aTextRect.GetSize() );
     690           0 :     aSize.Height()=0x0FFFFFFF;
     691             : 
     692           0 :     SdrOutliner* pEditOutliner = rTableObj.GetCellTextEditOutliner( *this );
     693           0 :     if(pEditOutliner)
     694             :     {
     695           0 :         pEditOutliner->SetMaxAutoPaperSize(aSize);
     696           0 :         nMinimumHeight = pEditOutliner->GetTextHeight()+1;
     697             :     }
     698             :     else /*if ( hasText() )*/
     699             :     {
     700           0 :         Outliner& rOutliner=rTableObj.ImpGetDrawOutliner();
     701           0 :         rOutliner.SetPaperSize(aSize);
     702           0 :         rOutliner.SetUpdateMode(true);
     703           0 :         ForceOutlinerParaObject( OUTLINERMODE_TEXTOBJECT );
     704             : 
     705           0 :         if( GetOutlinerParaObject() )
     706             :         {
     707           0 :             rOutliner.SetText(*GetOutlinerParaObject());
     708             :         }
     709           0 :         nMinimumHeight=rOutliner.GetTextHeight()+1;
     710           0 :         rOutliner.Clear();
     711             :     }
     712             : 
     713           0 :     nMinimumHeight += GetTextUpperDistance() + GetTextLowerDistance();
     714           0 :     return nMinimumHeight;
     715             : }
     716             : 
     717             : 
     718             : 
     719           0 : long Cell::GetTextLeftDistance() const
     720             : {
     721           0 :     return ((SdrTextLeftDistItem&)(GetItemSet().Get(SDRATTR_TEXT_LEFTDIST))).GetValue();
     722             : }
     723             : 
     724             : 
     725             : 
     726           0 : long Cell::GetTextRightDistance() const
     727             : {
     728           0 :     return ((SdrTextRightDistItem&)(GetItemSet().Get(SDRATTR_TEXT_RIGHTDIST))).GetValue();
     729             : }
     730             : 
     731             : 
     732             : 
     733           0 : long Cell::GetTextUpperDistance() const
     734             : {
     735           0 :     return ((SdrTextUpperDistItem&)(GetItemSet().Get(SDRATTR_TEXT_UPPERDIST))).GetValue();
     736             : }
     737             : 
     738             : 
     739             : 
     740           0 : long Cell::GetTextLowerDistance() const
     741             : {
     742           0 :     return ((SdrTextLowerDistItem&)(GetItemSet().Get(SDRATTR_TEXT_LOWERDIST))).GetValue();
     743             : }
     744             : 
     745             : 
     746             : 
     747           0 : SdrTextVertAdjust Cell::GetTextVerticalAdjust() const
     748             : {
     749           0 :     return ((SdrTextVertAdjustItem&)(GetItemSet().Get(SDRATTR_TEXT_VERTADJUST))).GetValue();
     750             : }
     751             : 
     752             : 
     753             : 
     754           0 : SdrTextHorzAdjust Cell::GetTextHorizontalAdjust() const
     755             : {
     756           0 :     return ((SdrTextHorzAdjustItem&)(GetItemSet().Get(SDRATTR_TEXT_HORZADJUST))).GetValue();
     757             : }
     758             : 
     759             : 
     760             : 
     761           0 : void Cell::SetOutlinerParaObject( OutlinerParaObject* pTextObject )
     762             : {
     763           0 :     SdrText::SetOutlinerParaObject( pTextObject );
     764           0 :     maSelection.nStartPara = EE_PARA_MAX_COUNT;
     765             : 
     766           0 :     if( pTextObject == 0 )
     767           0 :         ForceOutlinerParaObject( OUTLINERMODE_TEXTOBJECT );
     768           0 : }
     769             : 
     770             : 
     771             : 
     772           0 : void Cell::AddUndo()
     773             : {
     774           0 :     SdrObject& rObj = GetObject();
     775           0 :     if( rObj.IsInserted() && GetModel() && GetModel()->IsUndoEnabled() )
     776             :     {
     777           0 :         CellRef xCell( this );
     778           0 :         GetModel()->AddUndo( new CellUndo( &rObj, xCell ) );
     779             :     }
     780           0 : }
     781             : 
     782             : 
     783             : 
     784           0 : sdr::properties::TextProperties* Cell::CloneProperties( sdr::properties::TextProperties* pProperties, SdrObject& rNewObj, Cell& rNewCell )
     785             : {
     786           0 :     if( pProperties )
     787           0 :         return new sdr::properties::CellProperties( *static_cast<sdr::properties::CellProperties*>(pProperties), rNewObj, &rNewCell );
     788             :     else
     789           0 :         return 0;
     790             : }
     791             : 
     792             : 
     793             : 
     794           0 : sdr::properties::TextProperties* Cell::CloneProperties( SdrObject& rNewObj, Cell& rNewCell )
     795             : {
     796           0 :     return CloneProperties(mpProperties,rNewObj,rNewCell);
     797             : }
     798             : 
     799             : 
     800             : // XInterface
     801             : 
     802             : 
     803           0 : Any SAL_CALL Cell::queryInterface( const Type & rType ) throw(RuntimeException, std::exception)
     804             : {
     805           0 :     if( rType == cppu::UnoType<XMergeableCell>::get() )
     806           0 :         return Any( Reference< XMergeableCell >( this ) );
     807             : 
     808           0 :     if( rType == cppu::UnoType<XCell>::get() )
     809           0 :         return Any( Reference< XCell >( this ) );
     810             : 
     811           0 :     if( rType == cppu::UnoType<XLayoutConstrains>::get() )
     812           0 :         return Any( Reference< XLayoutConstrains >( this ) );
     813             : 
     814           0 :     if( rType == cppu::UnoType<XEventListener>::get() )
     815           0 :         return Any( Reference< XEventListener >( this ) );
     816             : 
     817           0 :     Any aRet( SvxUnoTextBase::queryAggregation( rType ) );
     818           0 :     if( aRet.hasValue() )
     819           0 :         return aRet;
     820             : 
     821           0 :     return ::cppu::OWeakObject::queryInterface( rType );
     822             : }
     823             : 
     824             : 
     825             : 
     826           0 : void SAL_CALL Cell::acquire() throw ()
     827             : {
     828           0 :     ::cppu::OWeakObject::acquire();
     829           0 : }
     830             : 
     831             : 
     832             : 
     833           0 : void SAL_CALL Cell::release() throw ()
     834             : {
     835           0 :     ::cppu::OWeakObject::release();
     836           0 : }
     837             : 
     838             : 
     839             : // XTypeProvider
     840             : 
     841             : 
     842           0 : Sequence< Type > SAL_CALL Cell::getTypes(  ) throw (RuntimeException, std::exception)
     843             : {
     844           0 :     Sequence< Type > aTypes( SvxUnoTextBase::getTypes() );
     845             : 
     846           0 :     sal_Int32 nLen = aTypes.getLength();
     847           0 :     aTypes.realloc(nLen + 2);
     848           0 :     aTypes[nLen++] = cppu::UnoType<XMergeableCell>::get();
     849           0 :     aTypes[nLen++] = cppu::UnoType<XLayoutConstrains>::get();
     850             : 
     851           0 :     return aTypes;
     852             : }
     853             : 
     854             : 
     855             : 
     856           0 : Sequence< sal_Int8 > SAL_CALL Cell::getImplementationId(  ) throw (RuntimeException, std::exception)
     857             : {
     858           0 :     return css::uno::Sequence<sal_Int8>();
     859             : }
     860             : 
     861             : // XServiceInfo
     862           0 : OUString SAL_CALL Cell::getImplementationName(  ) throw (RuntimeException, std::exception)
     863             : {
     864           0 :     return OUString( "com.sun.star.comp.svx.table.Cell" );
     865             : }
     866             : 
     867           0 : sal_Bool SAL_CALL Cell::supportsService( const OUString& ServiceName ) throw (RuntimeException, std::exception)
     868             : {
     869           0 :     return cppu::supportsService( this, ServiceName );
     870             : }
     871             : 
     872           0 : Sequence< OUString > SAL_CALL Cell::getSupportedServiceNames(  ) throw (RuntimeException, std::exception)
     873             : {
     874           0 :     Sequence< OUString > aSeq( SvxUnoTextBase::getSupportedServiceNames() );
     875           0 :     sal_Int32 nIndex = aSeq.getLength();
     876           0 :     aSeq.realloc( nIndex + 2 );
     877           0 :     aSeq[nIndex++] = "com.sun.star.table.cell";
     878           0 :     aSeq[nIndex++] = "com.sun.star.drawing.cell";
     879           0 :     return aSeq;
     880             : }
     881             : 
     882             : // XLayoutConstrains
     883           0 : ::com::sun::star::awt::Size SAL_CALL Cell::getMinimumSize()
     884             :     throw (RuntimeException,
     885             :            std::exception)
     886             : {
     887           0 :     return ::com::sun::star::awt::Size( getMinimumWidth(),  getMinimumHeight() );
     888             : }
     889             : 
     890             : 
     891             : 
     892           0 : ::com::sun::star::awt::Size SAL_CALL Cell::getPreferredSize()
     893             :     throw (RuntimeException,
     894             :            std::exception)
     895             : {
     896           0 :     return getMinimumSize();
     897             : }
     898             : 
     899             : 
     900             : 
     901           0 : ::com::sun::star::awt::Size SAL_CALL Cell::calcAdjustedSize( const ::com::sun::star::awt::Size& aNewSize ) throw (RuntimeException, std::exception)
     902             : {
     903           0 :     return aNewSize;
     904             : }
     905             : 
     906             : 
     907             : // XMergeableCell
     908             : 
     909             : 
     910           0 : sal_Int32 SAL_CALL Cell::getRowSpan() throw (RuntimeException, std::exception)
     911             : {
     912           0 :     return mnRowSpan;
     913             : }
     914             : 
     915             : 
     916             : 
     917           0 : sal_Int32 SAL_CALL Cell::getColumnSpan() throw (RuntimeException, std::exception)
     918             : {
     919           0 :     return mnColSpan;
     920             : }
     921             : 
     922             : 
     923             : 
     924           0 : sal_Bool SAL_CALL Cell::isMerged() throw (RuntimeException, std::exception)
     925             : {
     926           0 :     return mbMerged;
     927             : }
     928             : 
     929             : 
     930             : // XCell
     931             : 
     932             : 
     933           0 : OUString SAL_CALL Cell::getFormula(  ) throw (RuntimeException, std::exception)
     934             : {
     935           0 :     return msFormula;
     936             : }
     937             : 
     938             : 
     939             : 
     940           0 : void SAL_CALL Cell::setFormula( const OUString& aFormula ) throw (RuntimeException, std::exception)
     941             : {
     942           0 :     if( msFormula != aFormula )
     943             :     {
     944           0 :         msFormula = aFormula;
     945             :     }
     946           0 : }
     947             : 
     948             : 
     949             : 
     950           0 : double SAL_CALL Cell::getValue(  ) throw (RuntimeException, std::exception)
     951             : {
     952           0 :     return mfValue;
     953             : }
     954             : 
     955             : 
     956             : 
     957           0 : void SAL_CALL Cell::setValue( double nValue ) throw (RuntimeException, std::exception)
     958             : {
     959           0 :     if( mfValue != nValue )
     960             :     {
     961           0 :         mfValue = nValue;
     962           0 :         mnCellContentType = CellContentType_VALUE;
     963             :     }
     964           0 : }
     965             : 
     966             : 
     967             : 
     968           0 : CellContentType SAL_CALL Cell::getType() throw (RuntimeException, std::exception)
     969             : {
     970           0 :     return mnCellContentType;
     971             : }
     972             : 
     973             : 
     974             : 
     975           0 : sal_Int32 SAL_CALL Cell::getError(  ) throw (RuntimeException, std::exception)
     976             : {
     977           0 :     return mnError;
     978             : }
     979             : 
     980             : 
     981             : // XPropertySet
     982             : 
     983             : 
     984           0 : Any Cell::GetAnyForItem( SfxItemSet& aSet, const SfxItemPropertySimpleEntry* pMap )
     985             : {
     986           0 :     Any aAny( SvxItemPropertySet_getPropertyValue( *mpPropSet, pMap, aSet ) );
     987             : 
     988           0 :     if( pMap->aType != aAny.getValueType() )
     989             :     {
     990             :         // since the sfx uint16 item now exports a sal_Int32, we may have to fix this here
     991           0 :         if( ( pMap->aType == ::getCppuType((const sal_Int16*)0)) && aAny.getValueType() == ::getCppuType((const sal_Int32*)0) )
     992             :         {
     993           0 :             sal_Int32 nValue = 0;
     994           0 :             aAny >>= nValue;
     995           0 :             aAny <<= (sal_Int16)nValue;
     996             :         }
     997             :         else
     998             :         {
     999             :             OSL_FAIL("GetAnyForItem() Returnvalue has wrong Type!" );
    1000             :         }
    1001             :     }
    1002             : 
    1003           0 :     return aAny;
    1004             : }
    1005             : 
    1006           0 : Reference< XPropertySetInfo > SAL_CALL Cell::getPropertySetInfo() throw(RuntimeException, std::exception)
    1007             : {
    1008           0 :     return mpPropSet->getPropertySetInfo();
    1009             : }
    1010             : 
    1011             : 
    1012             : 
    1013           0 : void SAL_CALL Cell::setPropertyValue( const OUString& rPropertyName, const Any& rValue ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException, std::exception)
    1014             : {
    1015           0 :     ::SolarMutexGuard aGuard;
    1016             : 
    1017           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1018           0 :         throw DisposedException();
    1019             : 
    1020           0 :     const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMapEntry(rPropertyName);
    1021           0 :     if( pMap )
    1022             :     {
    1023           0 :         if( (pMap->nFlags & PropertyAttribute::READONLY ) != 0 )
    1024           0 :             throw PropertyVetoException();
    1025             : 
    1026           0 :         switch( pMap->nWID )
    1027             :         {
    1028             :         case OWN_ATTR_STYLE:
    1029             :         {
    1030           0 :             Reference< XStyle > xStyle;
    1031           0 :             if( !( rValue >>= xStyle ) )
    1032           0 :                 throw IllegalArgumentException();
    1033             : 
    1034           0 :             SfxUnoStyleSheet* pStyle = SfxUnoStyleSheet::getUnoStyleSheet(xStyle);
    1035           0 :             SetStyleSheet( pStyle, sal_True );
    1036           0 :             return;
    1037             :         }
    1038             :         case OWN_ATTR_TABLEBORDER:
    1039             :         {
    1040           0 :             if(rValue.getValueType() != ::getCppuType((const TableBorder*)0) )
    1041           0 :                 break;
    1042             : 
    1043           0 :             const TableBorder* pBorder = (const TableBorder* )rValue.getValue();
    1044           0 :             if( pBorder == NULL )
    1045           0 :                 break;
    1046             : 
    1047           0 :             SvxBoxItem aBox( SDRATTR_TABLE_BORDER );
    1048           0 :             SvxBoxInfoItem aBoxInfo( SDRATTR_TABLE_BORDER_INNER );
    1049           0 :             SvxBorderLine aLine;
    1050             : 
    1051           0 :             sal_Bool bSet = SvxBoxItem::LineToSvxLine(pBorder->TopLine, aLine, false);
    1052           0 :             aBox.SetLine(bSet ? &aLine : 0, BOX_LINE_TOP);
    1053           0 :             aBoxInfo.SetValid(VALID_TOP, pBorder->IsTopLineValid);
    1054             : 
    1055           0 :             bSet = SvxBoxItem::LineToSvxLine(pBorder->BottomLine, aLine, false);
    1056           0 :             aBox.SetLine(bSet ? &aLine : 0, BOX_LINE_BOTTOM);
    1057           0 :             aBoxInfo.SetValid(VALID_BOTTOM, pBorder->IsBottomLineValid);
    1058             : 
    1059           0 :             bSet = SvxBoxItem::LineToSvxLine(pBorder->LeftLine, aLine, false);
    1060           0 :             aBox.SetLine(bSet ? &aLine : 0, BOX_LINE_LEFT);
    1061           0 :             aBoxInfo.SetValid(VALID_LEFT, pBorder->IsLeftLineValid);
    1062             : 
    1063           0 :             bSet = SvxBoxItem::LineToSvxLine(pBorder->RightLine, aLine, false);
    1064           0 :             aBox.SetLine(bSet ? &aLine : 0, BOX_LINE_RIGHT);
    1065           0 :             aBoxInfo.SetValid(VALID_RIGHT, pBorder->IsRightLineValid);
    1066             : 
    1067           0 :             bSet = SvxBoxItem::LineToSvxLine(pBorder->HorizontalLine, aLine, false);
    1068           0 :             aBoxInfo.SetLine(bSet ? &aLine : 0, BOXINFO_LINE_HORI);
    1069           0 :             aBoxInfo.SetValid(VALID_HORI, pBorder->IsHorizontalLineValid);
    1070             : 
    1071           0 :             bSet = SvxBoxItem::LineToSvxLine(pBorder->VerticalLine, aLine, false);
    1072           0 :             aBoxInfo.SetLine(bSet ? &aLine : 0, BOXINFO_LINE_VERT);
    1073           0 :             aBoxInfo.SetValid(VALID_VERT, pBorder->IsVerticalLineValid);
    1074             : 
    1075           0 :             aBox.SetDistance(pBorder->Distance); //TODO
    1076           0 :             aBoxInfo.SetValid(VALID_DISTANCE, pBorder->IsDistanceValid);
    1077             : 
    1078           0 :             mpProperties->SetObjectItem(aBox);
    1079           0 :             mpProperties->SetObjectItem(aBoxInfo);
    1080           0 :             return;
    1081             :         }
    1082             :         case OWN_ATTR_FILLBMP_MODE:
    1083             :         {
    1084             :             BitmapMode eMode;
    1085           0 :             if(!(rValue >>= eMode) )
    1086             :             {
    1087           0 :                 sal_Int32 nMode = 0;
    1088           0 :                 if(!(rValue >>= nMode))
    1089           0 :                     throw IllegalArgumentException();
    1090             : 
    1091           0 :                 eMode = (BitmapMode)nMode;
    1092             :             }
    1093             : 
    1094           0 :             mpProperties->SetObjectItem( XFillBmpStretchItem( eMode == BitmapMode_STRETCH ) );
    1095           0 :             mpProperties->SetObjectItem( XFillBmpTileItem( eMode == BitmapMode_REPEAT ) );
    1096           0 :             return;
    1097             :         }
    1098             :         default:
    1099             :         {
    1100           0 :             SfxItemSet aSet( GetModel()->GetItemPool(), pMap->nWID, pMap->nWID);
    1101           0 :             aSet.Put(mpProperties->GetItem(pMap->nWID));
    1102             : 
    1103           0 :             bool bSpecial = false;
    1104             : 
    1105           0 :             switch( pMap->nWID )
    1106             :             {
    1107             :                 case XATTR_FILLBITMAP:
    1108             :                 case XATTR_FILLGRADIENT:
    1109             :                 case XATTR_FILLHATCH:
    1110             :                 case XATTR_FILLFLOATTRANSPARENCE:
    1111             :                 case XATTR_LINEEND:
    1112             :                 case XATTR_LINESTART:
    1113             :                 case XATTR_LINEDASH:
    1114             :                 {
    1115           0 :                     if( pMap->nMemberId == MID_NAME )
    1116             :                     {
    1117           0 :                         OUString aApiName;
    1118           0 :                         if( rValue >>= aApiName )
    1119             :                         {
    1120           0 :                             if( SvxShape::SetFillAttribute( pMap->nWID, aApiName, aSet, GetModel() ) )
    1121           0 :                                 bSpecial = true;
    1122           0 :                         }
    1123             :                     }
    1124             :                 }
    1125           0 :                 break;
    1126             :             }
    1127             : 
    1128           0 :             if( !bSpecial )
    1129             :             {
    1130             : 
    1131           0 :                 if( !SvxUnoTextRangeBase::SetPropertyValueHelper( aSet, pMap, rValue, aSet ))
    1132             :                 {
    1133           0 :                     if( aSet.GetItemState( pMap->nWID ) != SFX_ITEM_SET )
    1134             :                     {
    1135             :                         // Default aus ItemPool holen
    1136           0 :                         if(GetModel()->GetItemPool().IsWhich(pMap->nWID))
    1137           0 :                             aSet.Put(GetModel()->GetItemPool().GetDefaultItem(pMap->nWID));
    1138             :                     }
    1139             : 
    1140           0 :                     if( aSet.GetItemState( pMap->nWID ) == SFX_ITEM_SET )
    1141             :                     {
    1142           0 :                         SvxItemPropertySet_setPropertyValue( *mpPropSet, pMap, rValue, aSet );
    1143             :                     }
    1144             :                 }
    1145             :             }
    1146             : 
    1147           0 :             GetModel()->SetChanged();
    1148           0 :             mpProperties->SetMergedItemSetAndBroadcast( aSet );
    1149           0 :             return;
    1150             :         }
    1151             :         }
    1152             :     }
    1153           0 :     throw UnknownPropertyException();
    1154             : }
    1155             : 
    1156             : 
    1157             : 
    1158           0 : Any SAL_CALL Cell::getPropertyValue( const OUString& PropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1159             : {
    1160           0 :     ::SolarMutexGuard aGuard;
    1161             : 
    1162           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1163           0 :         throw DisposedException();
    1164             : 
    1165           0 :     const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMapEntry(PropertyName);
    1166           0 :     if( pMap )
    1167             :     {
    1168           0 :         switch( pMap->nWID )
    1169             :         {
    1170             :         case OWN_ATTR_STYLE:
    1171             :         {
    1172           0 :             return Any( Reference< XStyle >( dynamic_cast< SfxUnoStyleSheet* >( GetStyleSheet() ) ) );
    1173             :         }
    1174             :         case OWN_ATTR_TABLEBORDER:
    1175             :         {
    1176           0 :             const SvxBoxInfoItem& rBoxInfoItem = static_cast<const SvxBoxInfoItem&>(mpProperties->GetItem(SDRATTR_TABLE_BORDER_INNER));
    1177           0 :             const SvxBoxItem& rBox = static_cast<const SvxBoxItem&>(mpProperties->GetItem(SDRATTR_TABLE_BORDER));
    1178             : 
    1179           0 :              TableBorder aTableBorder;
    1180           0 :             aTableBorder.TopLine                = SvxBoxItem::SvxLineToLine(rBox.GetTop(), false);
    1181           0 :             aTableBorder.IsTopLineValid         = rBoxInfoItem.IsValid(VALID_TOP);
    1182           0 :             aTableBorder.BottomLine             = SvxBoxItem::SvxLineToLine(rBox.GetBottom(), false);
    1183           0 :             aTableBorder.IsBottomLineValid      = rBoxInfoItem.IsValid(VALID_BOTTOM);
    1184           0 :             aTableBorder.LeftLine               = SvxBoxItem::SvxLineToLine(rBox.GetLeft(), false);
    1185           0 :             aTableBorder.IsLeftLineValid        = rBoxInfoItem.IsValid(VALID_LEFT);
    1186           0 :             aTableBorder.RightLine              = SvxBoxItem::SvxLineToLine(rBox.GetRight(), false);
    1187           0 :             aTableBorder.IsRightLineValid       = rBoxInfoItem.IsValid(VALID_RIGHT );
    1188           0 :             aTableBorder.HorizontalLine         = SvxBoxItem::SvxLineToLine(rBoxInfoItem.GetHori(), false);
    1189           0 :             aTableBorder.IsHorizontalLineValid  = rBoxInfoItem.IsValid(VALID_HORI);
    1190           0 :             aTableBorder.VerticalLine           = SvxBoxItem::SvxLineToLine(rBoxInfoItem.GetVert(), false);
    1191           0 :             aTableBorder.IsVerticalLineValid    = rBoxInfoItem.IsValid(VALID_VERT);
    1192           0 :             aTableBorder.Distance               = rBox.GetDistance();
    1193           0 :             aTableBorder.IsDistanceValid        = rBoxInfoItem.IsValid(VALID_DISTANCE);
    1194             : 
    1195           0 :             return Any( aTableBorder );
    1196             :         }
    1197             :         case OWN_ATTR_FILLBMP_MODE:
    1198             :         {
    1199           0 :             const XFillBmpStretchItem& rStretchItem = static_cast<const XFillBmpStretchItem&>(mpProperties->GetItem(XATTR_FILLBMP_STRETCH));
    1200           0 :             const XFillBmpTileItem& rTileItem = static_cast<const XFillBmpTileItem&>(mpProperties->GetItem(XATTR_FILLBMP_TILE));
    1201           0 :             if( rTileItem.GetValue() )
    1202             :             {
    1203           0 :                 return Any( BitmapMode_REPEAT );
    1204             :             }
    1205           0 :             else if( rStretchItem.GetValue() )
    1206             :             {
    1207           0 :                 return Any(  BitmapMode_STRETCH );
    1208             :             }
    1209             :             else
    1210             :             {
    1211           0 :                 return Any(  BitmapMode_NO_REPEAT );
    1212             :             }
    1213             :         }
    1214             :         default:
    1215             :         {
    1216           0 :             SfxItemSet aSet( GetModel()->GetItemPool(), pMap->nWID, pMap->nWID);
    1217           0 :             aSet.Put(mpProperties->GetItem(pMap->nWID));
    1218             : 
    1219           0 :             Any aAny;
    1220           0 :             if(!SvxUnoTextRangeBase::GetPropertyValueHelper( aSet, pMap, aAny ))
    1221             :             {
    1222           0 :                 if(!aSet.Count())
    1223             :                 {
    1224             :                     // Default aus ItemPool holen
    1225           0 :                     if(GetModel()->GetItemPool().IsWhich(pMap->nWID))
    1226           0 :                         aSet.Put(GetModel()->GetItemPool().GetDefaultItem(pMap->nWID));
    1227             :                 }
    1228             : 
    1229           0 :                 if( aSet.Count() )
    1230           0 :                     aAny = GetAnyForItem( aSet, pMap );
    1231             :             }
    1232             : 
    1233           0 :             return aAny;
    1234             :         }
    1235             :         }
    1236             :     }
    1237           0 :     throw UnknownPropertyException();
    1238             : }
    1239             : 
    1240             : 
    1241             : 
    1242           0 : void SAL_CALL Cell::addPropertyChangeListener( const OUString& /*aPropertyName*/, const Reference< XPropertyChangeListener >& /*xListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1243             : {
    1244           0 : }
    1245             : 
    1246             : 
    1247             : 
    1248           0 : void SAL_CALL Cell::removePropertyChangeListener( const OUString& /*aPropertyName*/, const Reference< XPropertyChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1249             : {
    1250           0 : }
    1251             : 
    1252             : 
    1253             : 
    1254           0 : void SAL_CALL Cell::addVetoableChangeListener( const OUString& /*PropertyName*/, const Reference< XVetoableChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1255             : {
    1256           0 : }
    1257             : 
    1258             : 
    1259             : 
    1260           0 : void SAL_CALL Cell::removeVetoableChangeListener( const OUString& /*PropertyName*/, const Reference< XVetoableChangeListener >& /*aListener*/ ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1261             : {
    1262           0 : }
    1263             : 
    1264             : 
    1265             : // XMultiPropertySet
    1266             : 
    1267             : 
    1268           0 : void SAL_CALL Cell::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw (PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException, std::exception)
    1269             : {
    1270           0 :     ::SolarMutexGuard aSolarGuard;
    1271             : 
    1272           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1273           0 :         throw DisposedException();
    1274             : 
    1275           0 :     const sal_Int32 nCount = aPropertyNames.getLength();
    1276             : 
    1277           0 :     const OUString* pNames = aPropertyNames.getConstArray();
    1278           0 :     const Any* pValues = aValues.getConstArray();
    1279             : 
    1280           0 :     for( sal_Int32 nIdx = 0; nIdx < nCount; nIdx++, pNames++, pValues++ )
    1281             :     {
    1282             :         try
    1283             :         {
    1284           0 :             setPropertyValue( *pNames, *pValues );
    1285             :         }
    1286           0 :         catch( UnknownPropertyException& )
    1287             :         {
    1288             :             OSL_FAIL("svx::Cell::setPropertyValues(), unknown property!" );
    1289             :         }
    1290           0 :         catch( Exception& )
    1291             :         {
    1292             :             OSL_FAIL("svx::Cell::setPropertyValues(), Exception caught!" );
    1293             :         }
    1294           0 :     }
    1295           0 : }
    1296             : 
    1297             : 
    1298             : 
    1299           0 : Sequence< Any > SAL_CALL Cell::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw (RuntimeException, std::exception)
    1300             : {
    1301           0 :     ::SolarMutexGuard aSolarGuard;
    1302             : 
    1303           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1304           0 :         throw DisposedException();
    1305             : 
    1306           0 :     const sal_Int32 nCount = aPropertyNames.getLength();
    1307           0 :     const OUString* pNames = aPropertyNames.getConstArray();
    1308             : 
    1309           0 :     Sequence< Any > aRet( nCount );
    1310           0 :     Any* pValue = aRet.getArray();
    1311             : 
    1312           0 :     for( sal_Int32 nIdx = 0; nIdx < nCount; nIdx++, pValue++, pNames++ )
    1313             :     {
    1314             :         try
    1315             :         {
    1316           0 :             *pValue = getPropertyValue( *pNames );
    1317             :         }
    1318           0 :         catch( UnknownPropertyException& )
    1319             :         {
    1320             :             OSL_FAIL("svx::Cell::setPropertyValues(), unknown property!" );
    1321             :         }
    1322           0 :         catch( Exception& )
    1323             :         {
    1324             :             OSL_FAIL( "svx::Cell::getPropertyValues(), Exception caught!" );
    1325             :         }
    1326             :     }
    1327             : 
    1328           0 :     return aRet;
    1329             : }
    1330             : 
    1331             : 
    1332             : 
    1333           0 : void SAL_CALL Cell::addPropertiesChangeListener( const Sequence< OUString >& /*aPropertyNames*/, const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw (RuntimeException, std::exception)
    1334             : {
    1335           0 : }
    1336             : 
    1337             : 
    1338             : 
    1339           0 : void SAL_CALL Cell::removePropertiesChangeListener( const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw (RuntimeException, std::exception)
    1340             : {
    1341           0 : }
    1342             : 
    1343             : 
    1344             : 
    1345           0 : void SAL_CALL Cell::firePropertiesChangeEvent( const Sequence< OUString >& /*aPropertyNames*/, const Reference< XPropertiesChangeListener >& /*xListener*/ ) throw (RuntimeException, std::exception)
    1346             : {
    1347           0 : }
    1348             : 
    1349             : 
    1350             : // XPropertyState
    1351             : 
    1352             : 
    1353           0 : PropertyState SAL_CALL Cell::getPropertyState( const OUString& PropertyName ) throw(UnknownPropertyException, RuntimeException, std::exception)
    1354             : {
    1355           0 :     ::SolarMutexGuard aGuard;
    1356             : 
    1357           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1358           0 :         throw DisposedException();
    1359             : 
    1360           0 :     const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMapEntry(PropertyName);
    1361             : 
    1362           0 :     if( pMap )
    1363             :     {
    1364             :         PropertyState eState;
    1365           0 :         switch( pMap->nWID )
    1366             :         {
    1367             :         case OWN_ATTR_FILLBMP_MODE:
    1368             :         {
    1369           0 :             const SfxItemSet& rSet = mpProperties->GetMergedItemSet();
    1370             : 
    1371           0 :             const bool bStretch = rSet.GetItemState( XATTR_FILLBMP_STRETCH, false ) == SFX_ITEM_SET;
    1372           0 :             const bool bTile = rSet.GetItemState( XATTR_FILLBMP_TILE, false ) == SFX_ITEM_SET;
    1373           0 :             if( bStretch || bTile )
    1374             :             {
    1375           0 :                 eState = PropertyState_DIRECT_VALUE;
    1376             :             }
    1377             :             else
    1378             :             {
    1379           0 :                 eState = PropertyState_DEFAULT_VALUE;
    1380             :             }
    1381             :         }
    1382             :         case OWN_ATTR_STYLE:
    1383             :         {
    1384           0 :             return PropertyState_DIRECT_VALUE;
    1385             :         }
    1386             :         case OWN_ATTR_TABLEBORDER:
    1387             :         {
    1388           0 :             const SfxItemSet& rSet = mpProperties->GetMergedItemSet();
    1389           0 :             if( (rSet.GetItemState( SDRATTR_TABLE_BORDER_INNER, false ) == SFX_ITEM_DEFAULT) && (rSet.GetItemState( SDRATTR_TABLE_BORDER, false ) == SFX_ITEM_DEFAULT) )
    1390           0 :                 return PropertyState_DEFAULT_VALUE;
    1391             : 
    1392           0 :             return PropertyState_DIRECT_VALUE;
    1393             :         }
    1394             :         default:
    1395             :         {
    1396           0 :             const SfxItemSet& rSet = mpProperties->GetMergedItemSet();
    1397             : 
    1398           0 :             switch( rSet.GetItemState( pMap->nWID, false ) )
    1399             :             {
    1400             :             case SFX_ITEM_READONLY:
    1401             :             case SFX_ITEM_SET:
    1402           0 :                 eState = PropertyState_DIRECT_VALUE;
    1403           0 :                 break;
    1404             :             case SFX_ITEM_DEFAULT:
    1405           0 :                 eState = PropertyState_DEFAULT_VALUE;
    1406           0 :                 break;
    1407             :             default:
    1408           0 :                 eState = PropertyState_AMBIGUOUS_VALUE;
    1409           0 :                 break;
    1410             :             }
    1411             : 
    1412             :             // if a item is set, this doesn't mean we want it :)
    1413           0 :             if( ( PropertyState_DIRECT_VALUE == eState ) )
    1414             :             {
    1415           0 :                 switch( pMap->nWID )
    1416             :                 {
    1417             :                 // the following items are disabled by changing the
    1418             :                 // fill style or the line style. so there is no need
    1419             :                 // to export items without names which should be empty
    1420             :                 case XATTR_FILLBITMAP:
    1421             :                 case XATTR_FILLGRADIENT:
    1422             :                 case XATTR_FILLHATCH:
    1423             :                 case XATTR_LINEDASH:
    1424             :                     {
    1425           0 :                         NameOrIndex* pItem = (NameOrIndex*)rSet.GetItem((sal_uInt16)pMap->nWID);
    1426           0 :                         if( ( pItem == NULL ) || pItem->GetName().isEmpty() )
    1427           0 :                             eState = PropertyState_DEFAULT_VALUE;
    1428             :                     }
    1429           0 :                     break;
    1430             : 
    1431             :                 // #i36115#
    1432             :                 // If e.g. the LineStart is on NONE and thus the string has length 0, it still
    1433             :                 // may be a hard attribute covering the set LineStart of the parent (Style).
    1434             :                 // #i37644#
    1435             :                 // same is for fill float transparency
    1436             :                 case XATTR_LINEEND:
    1437             :                 case XATTR_LINESTART:
    1438             :                 case XATTR_FILLFLOATTRANSPARENCE:
    1439             :                     {
    1440           0 :                         NameOrIndex* pItem = (NameOrIndex*)rSet.GetItem((sal_uInt16)pMap->nWID);
    1441           0 :                         if( pItem == NULL )
    1442           0 :                             eState = PropertyState_DEFAULT_VALUE;
    1443             :                     }
    1444           0 :                     break;
    1445             :                 }
    1446             :             }
    1447             :         }
    1448             :         }
    1449           0 :         return eState;
    1450             :     }
    1451           0 :     throw UnknownPropertyException();
    1452             : }
    1453             : 
    1454             : 
    1455             : 
    1456           0 : Sequence< PropertyState > SAL_CALL Cell::getPropertyStates( const Sequence< OUString >& aPropertyName ) throw(UnknownPropertyException, RuntimeException, std::exception)
    1457             : {
    1458           0 :     ::SolarMutexGuard aGuard;
    1459             : 
    1460           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1461           0 :         throw DisposedException();
    1462             : 
    1463           0 :     const sal_Int32 nCount = aPropertyName.getLength();
    1464             : 
    1465           0 :     Sequence< PropertyState > aRet( nCount );
    1466             : 
    1467           0 :     const OUString* pNames = aPropertyName.getConstArray();
    1468           0 :     PropertyState* pState = aRet.getArray();
    1469             : 
    1470           0 :     for( sal_Int32 nIdx = 0; nIdx < nCount; nIdx++, pNames++, pState++ )
    1471             :     {
    1472             :         try
    1473             :         {
    1474           0 :             *pState = getPropertyState( *pNames );
    1475             :         }
    1476           0 :         catch( Exception& )
    1477             :         {
    1478           0 :             *pState = PropertyState_AMBIGUOUS_VALUE;
    1479             :         }
    1480             :     }
    1481             : 
    1482           0 :     return aRet;
    1483             : }
    1484             : 
    1485             : 
    1486             : 
    1487           0 : void SAL_CALL Cell::setPropertyToDefault( const OUString& PropertyName ) throw(UnknownPropertyException, RuntimeException, std::exception)
    1488             : {
    1489           0 :     ::SolarMutexGuard aGuard;
    1490             : 
    1491           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1492           0 :         throw DisposedException();
    1493             : 
    1494           0 :     const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMapEntry(PropertyName);
    1495           0 :     if( pMap )
    1496             :     {
    1497           0 :         switch( pMap->nWID )
    1498             :         {
    1499             :         case OWN_ATTR_FILLBMP_MODE:
    1500             :         {
    1501           0 :             mpProperties->ClearObjectItem( XATTR_FILLBMP_STRETCH );
    1502           0 :             mpProperties->ClearObjectItem( XATTR_FILLBMP_TILE );
    1503           0 :             break;
    1504             :         }
    1505             :         case OWN_ATTR_STYLE:
    1506           0 :             break;
    1507             : 
    1508             :         case OWN_ATTR_TABLEBORDER:
    1509             :         {
    1510           0 :             mpProperties->ClearObjectItem( SDRATTR_TABLE_BORDER_INNER );
    1511           0 :             mpProperties->ClearObjectItem( SDRATTR_TABLE_BORDER );
    1512           0 :             break;
    1513             :         }
    1514             : 
    1515             :         default:
    1516             :         {
    1517           0 :             mpProperties->ClearObjectItem( pMap->nWID );
    1518             :         }
    1519             :         }
    1520             : 
    1521           0 :         GetModel()->SetChanged();
    1522           0 :         return;
    1523             :     }
    1524           0 :     throw UnknownPropertyException();
    1525             : }
    1526             : 
    1527             : 
    1528             : 
    1529           0 : Any SAL_CALL Cell::getPropertyDefault( const OUString& aPropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1530             : {
    1531           0 :     ::SolarMutexGuard aGuard;
    1532             : 
    1533           0 :     if( (mpProperties == 0) || (GetModel() == 0) )
    1534           0 :         throw DisposedException();
    1535             : 
    1536           0 :     const SfxItemPropertySimpleEntry* pMap = mpPropSet->getPropertyMapEntry(aPropertyName);
    1537           0 :     if( pMap )
    1538             :     {
    1539           0 :         switch( pMap->nWID )
    1540             :         {
    1541             :         case OWN_ATTR_FILLBMP_MODE:
    1542           0 :             return Any(  BitmapMode_NO_REPEAT );
    1543             : 
    1544             :         case OWN_ATTR_STYLE:
    1545             :         {
    1546           0 :             Reference< XStyle > xStyle;
    1547           0 :             return Any( xStyle );
    1548             :         }
    1549             : 
    1550             :         case OWN_ATTR_TABLEBORDER:
    1551             :         {
    1552           0 :             TableBorder aBorder;
    1553           0 :             return Any( aBorder );
    1554             :         }
    1555             : 
    1556             :         default:
    1557             :         {
    1558           0 :             if(  GetModel()->GetItemPool().IsWhich(pMap->nWID) )
    1559             :             {
    1560           0 :                 SfxItemSet aSet( GetModel()->GetItemPool(), pMap->nWID, pMap->nWID);
    1561           0 :                 aSet.Put(GetModel()->GetItemPool().GetDefaultItem(pMap->nWID));
    1562           0 :                 return GetAnyForItem( aSet, pMap );
    1563             :             }
    1564             :         }
    1565             :         }
    1566             :     }
    1567           0 :     throw UnknownPropertyException();
    1568             : }
    1569             : 
    1570             : 
    1571             : // XMultiPropertyStates
    1572             : 
    1573             : 
    1574           0 : void SAL_CALL Cell::setAllPropertiesToDefault()
    1575             :     throw (RuntimeException, std::exception)
    1576             : {
    1577           0 :     delete mpProperties;
    1578           0 :     mpProperties = new sdr::properties::CellProperties( static_cast< SdrTableObj& >( GetObject() ), this );
    1579             : 
    1580           0 :     SdrOutliner& rOutliner = GetObject().ImpGetDrawOutliner();
    1581             : 
    1582           0 :     OutlinerParaObject* pParaObj = GetOutlinerParaObject();
    1583           0 :     if( pParaObj )
    1584             :     {
    1585           0 :         rOutliner.SetText(*pParaObj);
    1586           0 :         sal_Int32 nParaCount(rOutliner.GetParagraphCount());
    1587             : 
    1588           0 :         if(nParaCount)
    1589             :         {
    1590           0 :             ESelection aSelection( 0, 0, EE_PARA_ALL, EE_TEXTPOS_ALL);
    1591           0 :             rOutliner.RemoveAttribs(aSelection, true, 0);
    1592             : 
    1593           0 :             OutlinerParaObject* pTemp = rOutliner.CreateParaObject(0, nParaCount);
    1594           0 :             rOutliner.Clear();
    1595             : 
    1596           0 :             SetOutlinerParaObject(pTemp);
    1597             :         }
    1598             :     }
    1599           0 : }
    1600             : 
    1601             : 
    1602             : 
    1603           0 : void SAL_CALL Cell::setPropertiesToDefault( const Sequence< OUString >& aPropertyNames ) throw (UnknownPropertyException, RuntimeException, std::exception)
    1604             : {
    1605           0 :     sal_Int32 nCount = aPropertyNames.getLength();
    1606           0 :     const OUString* pName = aPropertyNames.getConstArray();
    1607             : 
    1608           0 :     while(nCount--)
    1609           0 :         setPropertyToDefault( *pName++ );
    1610           0 : }
    1611             : 
    1612             : 
    1613             : 
    1614           0 : Sequence< Any > SAL_CALL Cell::getPropertyDefaults( const Sequence< OUString >& aPropertyNames ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException, std::exception)
    1615             : {
    1616           0 :     sal_Int32 nCount = aPropertyNames.getLength();
    1617           0 :     Sequence< Any > aDefaults( nCount );
    1618           0 :     Any* pDefaults = aDefaults.getArray();
    1619           0 :     const OUString* pName = aPropertyNames.getConstArray();
    1620             : 
    1621           0 :     while(nCount--)
    1622           0 :         *pDefaults++ = getPropertyDefault( *pName++ );
    1623             : 
    1624           0 :     return aDefaults;
    1625             : }
    1626             : 
    1627             : 
    1628             : // XFastPropertySet
    1629             : 
    1630             : 
    1631           0 : void SAL_CALL Cell::setFastPropertyValue( sal_Int32 nHandle, const Any& aValue ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
    1632             : {
    1633             :     (void)aValue;
    1634             :     (void)nHandle;
    1635           0 :     throw UnknownPropertyException();
    1636             : }
    1637             : 
    1638             : 
    1639             : // TODO: Refactor this method!
    1640           0 : Any SAL_CALL Cell::getFastPropertyValue( sal_Int32 nHandle ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException)
    1641             : {
    1642             :     (void)nHandle;
    1643           0 :     throw UnknownPropertyException();
    1644             : }
    1645             : 
    1646             : 
    1647             : // XText
    1648             : 
    1649             : 
    1650           0 : void SAL_CALL Cell::insertTextContent( const Reference< XTextRange >& xRange, const Reference< XTextContent >& xContent, sal_Bool bAbsorb ) throw (IllegalArgumentException, RuntimeException, std::exception)
    1651             : {
    1652           0 :     SvxUnoTextBase::insertTextContent( xRange, xContent, bAbsorb );
    1653           0 :     notifyModified();
    1654           0 : }
    1655             : 
    1656             : 
    1657             : 
    1658           0 : void SAL_CALL Cell::removeTextContent( const Reference< XTextContent >& xContent ) throw (NoSuchElementException, RuntimeException, std::exception)
    1659             : {
    1660           0 :     SvxUnoTextBase::removeTextContent( xContent );
    1661           0 :     notifyModified();
    1662           0 : }
    1663             : 
    1664             : 
    1665             : // XSimpleText
    1666             : 
    1667             : 
    1668           0 : Reference< XTextCursor > SAL_CALL Cell::createTextCursor(  ) throw (RuntimeException, std::exception)
    1669             : {
    1670           0 :     return SvxUnoTextBase::createTextCursor();
    1671             : }
    1672             : 
    1673             : 
    1674             : 
    1675           0 : Reference< XTextCursor > SAL_CALL Cell::createTextCursorByRange( const Reference< XTextRange >& aTextPosition ) throw (RuntimeException, std::exception)
    1676             : {
    1677           0 :     return SvxUnoTextBase::createTextCursorByRange( aTextPosition );
    1678             : }
    1679             : 
    1680             : 
    1681             : 
    1682           0 : void SAL_CALL Cell::insertString( const Reference< XTextRange >& xRange, const OUString& aString, sal_Bool bAbsorb ) throw (RuntimeException, std::exception)
    1683             : {
    1684           0 :     SvxUnoTextBase::insertString( xRange, aString, bAbsorb );
    1685           0 :     notifyModified();
    1686           0 : }
    1687             : 
    1688             : 
    1689             : 
    1690           0 : void SAL_CALL Cell::insertControlCharacter( const Reference< XTextRange >& xRange, sal_Int16 nControlCharacter, sal_Bool bAbsorb ) throw (IllegalArgumentException, RuntimeException, std::exception)
    1691             : {
    1692           0 :     SvxUnoTextBase::insertControlCharacter( xRange, nControlCharacter, bAbsorb );
    1693           0 :     notifyModified();
    1694           0 : }
    1695             : 
    1696             : 
    1697             : // XTextRange
    1698             : 
    1699             : 
    1700           0 : Reference< XText > SAL_CALL Cell::getText(  ) throw (RuntimeException, std::exception)
    1701             : {
    1702           0 :     return SvxUnoTextBase::getText();
    1703             : }
    1704             : 
    1705             : 
    1706             : 
    1707           0 : Reference< XTextRange > SAL_CALL Cell::getStart(  ) throw (RuntimeException, std::exception)
    1708             : {
    1709           0 :     return SvxUnoTextBase::getStart();
    1710             : }
    1711             : 
    1712             : 
    1713             : 
    1714           0 : Reference< XTextRange > SAL_CALL Cell::getEnd(  ) throw (RuntimeException, std::exception)
    1715             : {
    1716           0 :     return SvxUnoTextBase::getEnd();
    1717             : }
    1718             : 
    1719             : 
    1720             : 
    1721           0 : OUString SAL_CALL Cell::getString(  ) throw (RuntimeException, std::exception)
    1722             : {
    1723           0 :     maSelection.nStartPara = EE_PARA_MAX_COUNT;
    1724           0 :     return SvxUnoTextBase::getString();
    1725             : }
    1726             : 
    1727             : 
    1728             : 
    1729           0 : void SAL_CALL Cell::setString( const OUString& aString ) throw (RuntimeException, std::exception)
    1730             : {
    1731           0 :     SvxUnoTextBase::setString( aString );
    1732           0 :     notifyModified();
    1733           0 : }
    1734             : 
    1735             : // XEventListener
    1736           0 : void SAL_CALL Cell::disposing( const EventObject& /*Source*/ ) throw (RuntimeException, std::exception)
    1737             : {
    1738           0 :     mxTable.clear();
    1739           0 :     dispose();
    1740           0 : }
    1741             : 
    1742             : } }
    1743             : 
    1744             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10