2000-12-15 11:23:15 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
|
|
|
* $RCSfile: unoparagraph.cxx,v $
|
|
|
|
*
|
2001-11-01 12:52:20 +00:00
|
|
|
* $Revision: 1.19 $
|
2000-12-15 11:23:15 +00:00
|
|
|
*
|
2001-11-01 12:52:20 +00:00
|
|
|
* last change: $Author: mib $ $Date: 2001-11-01 13:52:20 $
|
2000-12-15 11:23:15 +00:00
|
|
|
*
|
|
|
|
* The Contents of this file are made available subject to the terms of
|
|
|
|
* either of the following licenses
|
|
|
|
*
|
|
|
|
* - GNU Lesser General Public License Version 2.1
|
|
|
|
* - Sun Industry Standards Source License Version 1.1
|
|
|
|
*
|
|
|
|
* Sun Microsystems Inc., October, 2000
|
|
|
|
*
|
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2000 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Sun Industry Standards Source License Version 1.1
|
|
|
|
* =================================================
|
|
|
|
* The contents of this file are subject to the Sun Industry Standards
|
|
|
|
* Source License Version 1.1 (the "License"); You may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of the
|
|
|
|
* License at http://www.openoffice.org/license.html.
|
|
|
|
*
|
|
|
|
* Software provided under this License is provided on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
|
|
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
|
|
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
|
|
|
* See the License for the specific provisions governing your rights and
|
|
|
|
* obligations concerning the Software.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
|
|
|
*
|
|
|
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
|
|
|
*
|
|
|
|
* All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s): _______________________________________
|
|
|
|
*
|
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifdef PRECOMPILED
|
|
|
|
#include "core_pch.hxx"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#pragma hdrstop
|
|
|
|
|
|
|
|
#include <cmdid.h>
|
2001-03-29 13:40:38 +00:00
|
|
|
#ifndef _UNOMID_H
|
|
|
|
#include <unomid.h>
|
|
|
|
#endif
|
2000-12-15 11:23:15 +00:00
|
|
|
|
|
|
|
#ifndef _UNOOBJ_HXX
|
|
|
|
#include <unoobj.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _UNOMAP_HXX
|
|
|
|
#include <unomap.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _UNOCRSR_HXX
|
|
|
|
#include <unocrsr.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _UNOPRNMS_HXX
|
|
|
|
#include <unoprnms.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _UNOCRSRHELPER_HXX
|
|
|
|
#include <unocrsrhelper.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _DOC_HXX //autogen
|
|
|
|
#include <doc.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _NDTXT_HXX //autogen
|
|
|
|
#include <ndtxt.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _VOS_MUTEX_HXX_ //autogen
|
|
|
|
#include <vos/mutex.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SV_SVAPP_HXX
|
|
|
|
#include <vcl/svapp.hxx>
|
|
|
|
#endif
|
|
|
|
#define _SVSTDARR_USHORTS
|
|
|
|
#define _SVSTDARR_USHORTSSORT
|
|
|
|
#include <svtools/svstdarr.hxx>
|
|
|
|
|
2001-04-03 06:28:56 +00:00
|
|
|
#ifndef _COM_SUN_STAR_BEANS_PropertyAttribute_HPP_
|
|
|
|
#include <com/sun/star/beans/PropertyAttribute.hpp>
|
|
|
|
#endif
|
2000-12-15 11:23:15 +00:00
|
|
|
#ifndef _COM_SUN_STAR_TEXT_WRAPTEXTMODE_HPP_
|
|
|
|
#include <com/sun/star/text/WrapTextMode.hpp>
|
|
|
|
#endif
|
|
|
|
#ifndef _COM_SUN_STAR_TEXT_TEXTCONTENTANCHORTYPE_HPP_
|
|
|
|
#include <com/sun/star/text/TextContentAnchorType.hpp>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
using namespace ::com::sun::star;
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::lang;
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
using namespace ::com::sun::star::text;
|
|
|
|
using namespace ::com::sun::star::container;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
//using namespace ::com::sun::star::drawing;
|
|
|
|
|
|
|
|
using namespace ::rtl;
|
|
|
|
|
|
|
|
/******************************************************************
|
|
|
|
* SwXParagraph
|
|
|
|
******************************************************************/
|
|
|
|
/* -----------------------------11.07.00 12:10--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
SwXParagraph* SwXParagraph::GetImplementation(Reference< XInterface> xRef )
|
|
|
|
{
|
|
|
|
uno::Reference<lang::XUnoTunnel> xParaTunnel( xRef, uno::UNO_QUERY);
|
|
|
|
if(xParaTunnel.is())
|
|
|
|
return (SwXParagraph*)xParaTunnel->getSomething(SwXParagraph::getUnoTunnelId());
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
/* -----------------------------13.03.00 12:15--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
const uno::Sequence< sal_Int8 > & SwXParagraph::getUnoTunnelId()
|
|
|
|
{
|
|
|
|
static uno::Sequence< sal_Int8 > aSeq = ::CreateUnoTunnelId();
|
|
|
|
return aSeq;
|
|
|
|
}
|
|
|
|
/* -----------------------------10.03.00 18:04--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
sal_Int64 SAL_CALL SwXParagraph::getSomething( const uno::Sequence< sal_Int8 >& rId )
|
|
|
|
throw(uno::RuntimeException)
|
|
|
|
{
|
|
|
|
if( rId.getLength() == 16
|
|
|
|
&& 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
|
|
|
|
rId.getConstArray(), 16 ) )
|
|
|
|
{
|
|
|
|
return (sal_Int64)this;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
/* -----------------------------06.04.00 16:37--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
OUString SwXParagraph::getImplementationName(void) throw( RuntimeException )
|
|
|
|
{
|
|
|
|
return C2U("SwXParagraph");
|
|
|
|
}
|
|
|
|
/* -----------------------------06.04.00 16:37--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
BOOL SwXParagraph::supportsService(const OUString& rServiceName) throw( RuntimeException )
|
|
|
|
{
|
|
|
|
String sServiceName(rServiceName);
|
|
|
|
return sServiceName.EqualsAscii("com.sun.star.text.TextContent") ||
|
|
|
|
sServiceName.EqualsAscii("com.sun.star.text.Paragraph") ||
|
|
|
|
sServiceName.EqualsAscii("com.sun.star.style.CharacterProperties")||
|
2001-04-23 09:01:41 +00:00
|
|
|
sServiceName.EqualsAscii("com.sun.star.style.CharacterPropertiesAsian")||
|
|
|
|
sServiceName.EqualsAscii("com.sun.star.style.CharacterPropertiesComplex")||
|
|
|
|
sServiceName.EqualsAscii("com.sun.star.style.ParagraphProperties");
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
/* -----------------------------06.04.00 16:37--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
Sequence< OUString > SwXParagraph::getSupportedServiceNames(void) throw( RuntimeException )
|
|
|
|
{
|
2001-04-23 09:01:41 +00:00
|
|
|
Sequence< OUString > aRet(6);
|
2000-12-15 11:23:15 +00:00
|
|
|
OUString* pArray = aRet.getArray();
|
|
|
|
pArray[0] = C2U("com.sun.star.text.Paragraph");
|
|
|
|
pArray[1] = C2U("com.sun.star.style.CharacterProperties");
|
2001-04-23 09:01:41 +00:00
|
|
|
pArray[2] = C2U("com.sun.star.style.CharacterPropertiesAsian");
|
|
|
|
pArray[3] = C2U("com.sun.star.style.CharacterPropertiesComplex");
|
|
|
|
pArray[4] = C2U("com.sun.star.style.ParagraphProperties");
|
|
|
|
pArray[5] = C2U("com.sun.star.text.TextContent");
|
2000-12-15 11:23:15 +00:00
|
|
|
return aRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:47---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
SwXParagraph::SwXParagraph() :
|
|
|
|
aLstnrCntnr( (XTextRange*)this),
|
|
|
|
xParentText(0),
|
|
|
|
aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_PARAGRAPH)),
|
2001-05-23 08:10:48 +00:00
|
|
|
m_bIsDescriptor(TRUE),
|
|
|
|
nSelectionStartPos(-1),
|
|
|
|
nSelectionEndPos(-1)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
/*-- 11.12.98 08:12:47---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
2001-05-23 08:10:48 +00:00
|
|
|
SwXParagraph::SwXParagraph(SwXText* pParent, SwUnoCrsr* pCrsr, sal_Int32 nSelStart, sal_Int32 nSelEnd) :
|
2000-12-15 11:23:15 +00:00
|
|
|
SwClient(pCrsr),
|
|
|
|
xParentText(pParent),
|
|
|
|
aLstnrCntnr( (XTextRange*)this),
|
|
|
|
aPropSet(aSwMapProvider.GetPropertyMap(PROPERTY_MAP_PARAGRAPH)),
|
2001-05-23 08:10:48 +00:00
|
|
|
m_bIsDescriptor(FALSE),
|
|
|
|
nSelectionStartPos(nSelStart),
|
|
|
|
nSelectionEndPos(nSelEnd)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:48---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
SwXParagraph::~SwXParagraph()
|
|
|
|
{
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
delete pUnoCrsr;
|
|
|
|
}
|
|
|
|
/* -----------------------------11.07.00 14:48--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::attachToText(SwXText* pParent, SwUnoCrsr* pCrsr)
|
|
|
|
{
|
|
|
|
DBG_ASSERT(m_bIsDescriptor, "Paragraph is not a descriptor")
|
|
|
|
if(m_bIsDescriptor)
|
|
|
|
{
|
|
|
|
m_bIsDescriptor = FALSE;
|
|
|
|
pCrsr->Add(this);
|
|
|
|
xParentText = pParent;
|
|
|
|
if(m_sText.getLength())
|
|
|
|
{
|
|
|
|
try { setString(m_sText); }
|
|
|
|
catch(...){}
|
|
|
|
m_sText = OUString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:49---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
Reference< XPropertySetInfo > SwXParagraph::getPropertySetInfo(void)
|
|
|
|
throw( RuntimeException )
|
|
|
|
{
|
|
|
|
static Reference< XPropertySetInfo > xRef = aPropSet.getPropertySetInfo();
|
|
|
|
return xRef;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:49---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
2001-04-03 06:28:56 +00:00
|
|
|
void SwXParagraph::setPropertyValue(const OUString& rPropertyName, const Any& aValue)
|
|
|
|
throw( UnknownPropertyException, PropertyVetoException, IllegalArgumentException,
|
|
|
|
WrappedTargetException, RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
Sequence<OUString> aPropertyNames(1);
|
|
|
|
aPropertyNames.getArray()[0] = rPropertyName;
|
|
|
|
Sequence<Any> aValues(1);
|
|
|
|
aValues.getArray()[0] = aValue;
|
|
|
|
setPropertyValues(aPropertyNames, aValues);
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:49---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Any SwXParagraph::getPropertyValue(const OUString& rPropertyName)
|
|
|
|
throw( UnknownPropertyException, WrappedTargetException, RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
Sequence<OUString> aPropertyNames(1);
|
|
|
|
aPropertyNames.getArray()[0] = rPropertyName;
|
|
|
|
Sequence< Any > aRet = getPropertyValues(aPropertyNames );
|
|
|
|
return aRet.getConstArray()[0];
|
|
|
|
}
|
|
|
|
/* -----------------------------02.04.01 11:43--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::setPropertyValues(
|
|
|
|
const Sequence< OUString >& rPropertyNames,
|
|
|
|
const Sequence< Any >& aValues )
|
|
|
|
throw(PropertyVetoException, IllegalArgumentException,
|
|
|
|
WrappedTargetException, RuntimeException)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
2001-04-03 06:28:56 +00:00
|
|
|
const OUString* pPropertyNames = rPropertyNames.getConstArray();
|
|
|
|
const Any* pValues = aValues.getConstArray();
|
|
|
|
const SfxItemPropertyMap* pMap = aPropSet.getPropertyMap();
|
|
|
|
OUString sTmp;
|
|
|
|
SwParaSelection aParaSel(pUnoCrsr);
|
|
|
|
for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); nProp++)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
2001-04-03 06:28:56 +00:00
|
|
|
pMap = SfxItemPropertyMap::GetByName(pMap, pPropertyNames[nProp]);
|
|
|
|
if(pMap)
|
|
|
|
{
|
|
|
|
if(pMap->nFlags & PropertyAttribute::READONLY)
|
|
|
|
{
|
|
|
|
IllegalArgumentException aArg;
|
|
|
|
aArg.Message = pPropertyNames[nProp];
|
|
|
|
throw aArg;
|
|
|
|
}
|
|
|
|
SwXTextCursor::SetPropertyValue(*pUnoCrsr, aPropSet,
|
|
|
|
sTmp, pValues[nProp], pMap);
|
2001-06-07 07:01:20 +00:00
|
|
|
pMap++;
|
2001-04-03 06:28:56 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
UnknownPropertyException aExcept;
|
|
|
|
aExcept.Message = pPropertyNames[nProp];
|
|
|
|
throw aExcept;
|
|
|
|
}
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
}
|
2001-04-03 06:28:56 +00:00
|
|
|
/* -----------------------------02.04.01 11:43--------------------------------
|
2000-12-15 11:23:15 +00:00
|
|
|
|
2001-04-03 06:28:56 +00:00
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
Sequence< Any > SwXParagraph::getPropertyValues(
|
|
|
|
const Sequence< OUString >& rPropertyNames )
|
|
|
|
throw(RuntimeException)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
2001-04-03 06:28:56 +00:00
|
|
|
Sequence< Any > aValues(rPropertyNames.getLength());
|
2000-12-15 11:23:15 +00:00
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
2001-04-03 06:28:56 +00:00
|
|
|
Any* pValues = aValues.getArray();
|
|
|
|
const OUString* pPropertyNames = rPropertyNames.getConstArray();
|
|
|
|
const SfxItemPropertyMap* pMap = aPropSet.getPropertyMap();
|
2001-05-09 08:28:33 +00:00
|
|
|
SwNode& rTxtNode = pUnoCrsr->GetPoint()->nNode.GetNode();
|
|
|
|
SwAttrSet& rAttrSet = ((SwTxtNode&)rTxtNode).GetSwAttrSet();
|
2001-04-03 06:28:56 +00:00
|
|
|
for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); nProp++)
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
2001-04-03 06:28:56 +00:00
|
|
|
pMap = SfxItemPropertyMap::GetByName(pMap, pPropertyNames[nProp]);
|
2000-12-15 11:23:15 +00:00
|
|
|
if(pMap)
|
|
|
|
{
|
2001-04-03 06:28:56 +00:00
|
|
|
if(!SwXParagraph::getDefaultTextContentValue(
|
|
|
|
pValues[nProp], pPropertyNames[nProp], pMap->nWID))
|
|
|
|
{
|
|
|
|
BOOL bDone = FALSE;
|
|
|
|
PropertyState eTemp;
|
|
|
|
bDone = SwUnoCursorHelper::getCrsrPropertyValue(
|
2001-06-07 07:01:20 +00:00
|
|
|
pMap, *pUnoCrsr, &(pValues[nProp]), eTemp, rTxtNode.GetTxtNode() );
|
2001-04-03 06:28:56 +00:00
|
|
|
if(!bDone)
|
|
|
|
pValues[nProp] = aPropSet.getPropertyValue(*pMap, rAttrSet);
|
|
|
|
}
|
2001-04-05 12:22:59 +00:00
|
|
|
++pMap;
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
else
|
2001-04-03 06:28:56 +00:00
|
|
|
{
|
|
|
|
UnknownPropertyException aExcept;
|
|
|
|
aExcept.Message = pPropertyNames[nProp];
|
|
|
|
throw aExcept;
|
|
|
|
}
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2001-04-03 06:28:56 +00:00
|
|
|
throw RuntimeException();
|
|
|
|
return aValues;
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
2001-04-03 06:28:56 +00:00
|
|
|
/* -----------------------------02.04.01 11:43--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::addPropertiesChangeListener(
|
|
|
|
const Sequence< OUString >& aPropertyNames,
|
|
|
|
const Reference< XPropertiesChangeListener >& xListener )
|
|
|
|
throw(RuntimeException)
|
|
|
|
{}
|
|
|
|
/* -----------------------------02.04.01 11:43--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::removePropertiesChangeListener(
|
|
|
|
const Reference< XPropertiesChangeListener >& xListener )
|
|
|
|
throw(RuntimeException)
|
|
|
|
{}
|
|
|
|
/* -----------------------------02.04.01 11:43--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::firePropertiesChangeEvent(
|
|
|
|
const Sequence< OUString >& aPropertyNames,
|
|
|
|
const Reference< XPropertiesChangeListener >& xListener )
|
|
|
|
throw(RuntimeException)
|
|
|
|
{}
|
2000-12-15 11:23:15 +00:00
|
|
|
/* -----------------------------12.09.00 11:09--------------------------------
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
BOOL SwXParagraph::getDefaultTextContentValue(Any& rAny, const OUString& rPropertyName, USHORT nWID)
|
|
|
|
{
|
|
|
|
if(!nWID)
|
|
|
|
{
|
2001-06-13 11:40:53 +00:00
|
|
|
if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_ANCHOR_TYPE)))
|
2000-12-15 11:23:15 +00:00
|
|
|
nWID = FN_UNO_ANCHOR_TYPE;
|
2001-06-13 11:40:53 +00:00
|
|
|
else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_ANCHOR_TYPES)))
|
2000-12-15 11:23:15 +00:00
|
|
|
nWID = FN_UNO_ANCHOR_TYPES;
|
2001-06-13 11:40:53 +00:00
|
|
|
else if(rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_TEXT_WRAP)))
|
2000-12-15 11:23:15 +00:00
|
|
|
nWID = FN_UNO_TEXT_WRAP;
|
|
|
|
else
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch(nWID)
|
|
|
|
{
|
|
|
|
case FN_UNO_TEXT_WRAP: rAny <<= WrapTextMode_NONE; break;
|
|
|
|
case FN_UNO_ANCHOR_TYPE: rAny <<= TextContentAnchorType_AT_PARAGRAPH; break;
|
|
|
|
case FN_UNO_ANCHOR_TYPES:
|
|
|
|
{ Sequence<TextContentAnchorType> aTypes(1);
|
|
|
|
TextContentAnchorType* pArray = aTypes.getArray();
|
|
|
|
pArray[0] = TextContentAnchorType_AT_PARAGRAPH;
|
|
|
|
rAny.setValue(&aTypes, ::getCppuType((uno::Sequence<TextContentAnchorType>*)0));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:50---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::addPropertyChangeListener(
|
|
|
|
const OUString& PropertyName,
|
|
|
|
const uno::Reference< beans::XPropertyChangeListener > & aListener)
|
|
|
|
throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
DBG_WARNING("not implemented")
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:50---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::removePropertyChangeListener(const OUString& PropertyName, const uno::Reference< beans::XPropertyChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
DBG_WARNING("not implemented")
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:50---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::addVetoableChangeListener(const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener > & aListener) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
DBG_WARNING("not implemented")
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:51---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::removeVetoableChangeListener(const OUString& PropertyName, const uno::Reference< beans::XVetoableChangeListener > & aListener)
|
|
|
|
throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
DBG_WARNING("not implemented")
|
|
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
beans::PropertyState lcl_SwXParagraph_getPropertyState(
|
|
|
|
SwUnoCrsr& rUnoCrsr,
|
|
|
|
const SwAttrSet** ppSet,
|
2001-06-07 07:01:20 +00:00
|
|
|
const SfxItemPropertyMap& rMap,
|
|
|
|
sal_Bool &rAttrSetFetched )
|
2000-12-15 11:23:15 +00:00
|
|
|
throw( beans::UnknownPropertyException)
|
|
|
|
{
|
|
|
|
beans::PropertyState eRet = beans::PropertyState_DEFAULT_VALUE;
|
|
|
|
|
2001-06-07 07:01:20 +00:00
|
|
|
if(!(*ppSet) && !rAttrSetFetched )
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
|
|
|
SwNode& rTxtNode = rUnoCrsr.GetPoint()->nNode.GetNode();
|
|
|
|
(*ppSet) = ((SwTxtNode&)rTxtNode).GetpSwAttrSet();
|
2001-06-07 07:01:20 +00:00
|
|
|
rAttrSetFetched = sal_True;
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
2001-06-07 07:01:20 +00:00
|
|
|
switch( rMap.nWID )
|
2000-12-15 11:23:15 +00:00
|
|
|
{
|
2001-06-07 07:01:20 +00:00
|
|
|
case FN_UNO_NUM_RULES:
|
2000-12-15 11:23:15 +00:00
|
|
|
//wenn eine Numerierung gesetzt ist, dann hier herausreichen, sonst nichts tun
|
2001-10-09 13:57:38 +00:00
|
|
|
SwUnoCursorHelper::getNumberingProperty( rUnoCrsr, eRet, NULL );
|
2001-06-07 07:01:20 +00:00
|
|
|
break;
|
2001-07-19 15:34:00 +00:00
|
|
|
case FN_UNO_ANCHOR_TYPES:
|
|
|
|
break;
|
|
|
|
case RES_ANCHOR:
|
|
|
|
if ( MID_SURROUND_SURROUNDTYPE != rMap.nMemberId )
|
|
|
|
goto lcl_SwXParagraph_getPropertyStateDEFAULT;
|
|
|
|
break;
|
|
|
|
case RES_SURROUND:
|
|
|
|
if ( MID_ANCHOR_ANCHORTYPE != rMap.nMemberId )
|
|
|
|
goto lcl_SwXParagraph_getPropertyStateDEFAULT;
|
|
|
|
break;
|
2001-06-07 07:01:20 +00:00
|
|
|
case FN_UNO_PARA_STYLE:
|
|
|
|
case FN_UNO_PARA_CONDITIONAL_STYLE_NAME:
|
|
|
|
{
|
|
|
|
SwFmtColl* pFmt = SwXTextCursor::GetCurTxtFmtColl(
|
|
|
|
rUnoCrsr, rMap.nWID == FN_UNO_PARA_CONDITIONAL_STYLE_NAME);
|
2001-11-01 12:52:20 +00:00
|
|
|
eRet = pFmt ? beans::PropertyState_DIRECT_VALUE
|
|
|
|
: beans::PropertyState_AMBIGUOUS_VALUE;
|
2001-06-07 07:01:20 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case FN_UNO_PAGE_STYLE:
|
|
|
|
{
|
2001-10-09 13:57:38 +00:00
|
|
|
String sVal;
|
|
|
|
SwUnoCursorHelper::GetCurPageStyle( rUnoCrsr, sVal );
|
2001-11-01 12:52:20 +00:00
|
|
|
eRet = sVal.Len() ? beans::PropertyState_DIRECT_VALUE
|
|
|
|
: beans::PropertyState_AMBIGUOUS_VALUE;
|
2001-06-07 07:01:20 +00:00
|
|
|
}
|
|
|
|
break;
|
2001-07-19 15:34:00 +00:00
|
|
|
lcl_SwXParagraph_getPropertyStateDEFAULT:
|
2001-06-07 07:01:20 +00:00
|
|
|
default:
|
|
|
|
if((*ppSet) && SFX_ITEM_SET == (*ppSet)->GetItemState(rMap.nWID, FALSE))
|
|
|
|
eRet = beans::PropertyState_DIRECT_VALUE;
|
|
|
|
break;
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
return eRet;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*-- 05.03.99 11:37:30---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
beans::PropertyState SwXParagraph::getPropertyState(const OUString& rPropertyName)
|
|
|
|
throw( beans::UnknownPropertyException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
beans::PropertyState eRet = beans::PropertyState_DEFAULT_VALUE;
|
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
|
|
|
if( pUnoCrsr )
|
|
|
|
{
|
|
|
|
const SwAttrSet* pSet = 0;
|
2001-03-29 13:40:38 +00:00
|
|
|
const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
|
|
|
|
aPropSet.getPropertyMap(), rPropertyName );
|
|
|
|
if(!pMap)
|
|
|
|
{
|
|
|
|
UnknownPropertyException aExcept;
|
|
|
|
aExcept.Message = rPropertyName;
|
|
|
|
throw aExcept;
|
|
|
|
}
|
2001-06-07 07:01:20 +00:00
|
|
|
sal_Bool bDummy = sal_False;
|
|
|
|
eRet = lcl_SwXParagraph_getPropertyState( *pUnoCrsr, &pSet, *pMap,
|
|
|
|
bDummy );
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return eRet;
|
|
|
|
}
|
|
|
|
/*-- 05.03.99 11:37:32---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
uno::Sequence< beans::PropertyState > SwXParagraph::getPropertyStates(
|
|
|
|
const uno::Sequence< OUString >& PropertyNames)
|
|
|
|
throw( beans::UnknownPropertyException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
const OUString* pNames = PropertyNames.getConstArray();
|
|
|
|
uno::Sequence< beans::PropertyState > aRet(PropertyNames.getLength());
|
|
|
|
beans::PropertyState* pStates = aRet.getArray();
|
|
|
|
|
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
2001-03-29 13:40:38 +00:00
|
|
|
const SfxItemPropertyMap* pMap = aPropSet.getPropertyMap();
|
2000-12-15 11:23:15 +00:00
|
|
|
if( pUnoCrsr )
|
|
|
|
{
|
|
|
|
const SwAttrSet* pSet = 0;
|
2001-06-07 07:01:20 +00:00
|
|
|
sal_Bool bAttrSetFetched = sal_False;
|
2001-07-19 15:34:00 +00:00
|
|
|
for(sal_Int32 i = 0, nEnd = PropertyNames.getLength(); i < nEnd; i++,++pStates,++pMap,++pNames )
|
2001-03-29 13:40:38 +00:00
|
|
|
{
|
2001-07-19 15:34:00 +00:00
|
|
|
pMap = SfxItemPropertyMap::GetByName( pMap, *pNames );
|
2001-03-29 13:40:38 +00:00
|
|
|
if(!pMap)
|
|
|
|
{
|
|
|
|
UnknownPropertyException aExcept;
|
2001-07-19 15:34:00 +00:00
|
|
|
aExcept.Message = *pNames;
|
2001-03-29 13:40:38 +00:00
|
|
|
throw aExcept;
|
|
|
|
}
|
2001-06-07 07:01:20 +00:00
|
|
|
|
2001-11-01 12:52:20 +00:00
|
|
|
if (bAttrSetFetched && !pSet &&
|
|
|
|
pMap->nWID >= RES_CHRATR_BEGIN &&
|
|
|
|
pMap->nWID <= RES_UNKNOWNATR_END )
|
2001-07-19 15:34:00 +00:00
|
|
|
*pStates = beans::PropertyState_DEFAULT_VALUE;
|
|
|
|
else
|
|
|
|
*pStates = lcl_SwXParagraph_getPropertyState( *pUnoCrsr, &pSet,*pMap, bAttrSetFetched );
|
2001-03-29 13:40:38 +00:00
|
|
|
}
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
|
|
|
|
return aRet;
|
|
|
|
}
|
|
|
|
/*-- 05.03.99 11:37:33---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::setPropertyToDefault(const OUString& rPropertyName)
|
|
|
|
throw( beans::UnknownPropertyException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
2001-06-13 11:40:53 +00:00
|
|
|
if( rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_ANCHOR_TYPE)) ||
|
|
|
|
rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_ANCHOR_TYPES)) ||
|
|
|
|
rPropertyName.equalsAsciiL( SW_PROP_NAME(UNO_NAME_TEXT_WRAP)))
|
|
|
|
return;
|
2000-12-15 11:23:15 +00:00
|
|
|
|
|
|
|
// Absatz selektieren
|
|
|
|
SwParaSelection aParaSel(pUnoCrsr);
|
|
|
|
SwDoc* pDoc = pUnoCrsr->GetDoc();
|
|
|
|
const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
|
|
|
|
aPropSet.getPropertyMap(), rPropertyName);
|
|
|
|
if(pMap)
|
|
|
|
{
|
2001-10-16 10:58:14 +00:00
|
|
|
if ( pMap->nFlags & PropertyAttribute::READONLY)
|
|
|
|
throw RuntimeException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only:" ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
|
|
|
|
|
2000-12-15 11:23:15 +00:00
|
|
|
if(pMap->nWID < RES_FRMATR_END)
|
|
|
|
{
|
|
|
|
SvUShortsSort aWhichIds;
|
|
|
|
aWhichIds.Insert(pMap->nWID);
|
|
|
|
if(pMap->nWID < RES_PARATR_BEGIN)
|
|
|
|
pUnoCrsr->GetDoc()->ResetAttr(*pUnoCrsr, sal_True, &aWhichIds);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
//fuer Absatzattribute muss die Selektion jeweils auf
|
|
|
|
//Absatzgrenzen erweitert werden
|
|
|
|
SwPosition aStart = *pUnoCrsr->Start();
|
|
|
|
SwPosition aEnd = *pUnoCrsr->End();
|
|
|
|
SwUnoCrsr* pTemp = pUnoCrsr->GetDoc()->CreateUnoCrsr(aStart, sal_False);
|
|
|
|
if(!SwUnoCursorHelper::IsStartOfPara(*pTemp))
|
|
|
|
{
|
|
|
|
pTemp->MovePara(fnParaCurr, fnParaStart);
|
|
|
|
}
|
|
|
|
pTemp->SetMark();
|
|
|
|
*pTemp->GetPoint() = aEnd;
|
|
|
|
//pTemp->Exchange();
|
|
|
|
SwXTextCursor::SelectPam(*pTemp, sal_True);
|
|
|
|
if(!SwUnoCursorHelper::IsEndOfPara(*pTemp))
|
|
|
|
{
|
|
|
|
pTemp->MovePara(fnParaCurr, fnParaEnd);
|
|
|
|
}
|
|
|
|
pTemp->GetDoc()->ResetAttr(*pTemp, sal_True, &aWhichIds);
|
|
|
|
delete pTemp;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
SwUnoCursorHelper::resetCrsrPropertyValue(pMap, *pUnoCrsr);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw beans::UnknownPropertyException();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
}
|
|
|
|
/*-- 05.03.99 11:37:33---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Any SwXParagraph::getPropertyDefault(const OUString& rPropertyName)
|
|
|
|
throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
uno::Any aRet;
|
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
|
|
|
if(SwXParagraph::getDefaultTextContentValue(aRet, rPropertyName))
|
|
|
|
return aRet;
|
|
|
|
|
|
|
|
SwDoc* pDoc = pUnoCrsr->GetDoc();
|
|
|
|
const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
|
|
|
|
aPropSet.getPropertyMap(), rPropertyName);
|
|
|
|
if(pMap)
|
|
|
|
{
|
2001-10-16 10:58:14 +00:00
|
|
|
if ( pMap->nFlags & PropertyAttribute::READONLY)
|
|
|
|
throw RuntimeException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only:" ) ) + rPropertyName, static_cast < cppu::OWeakObject * > ( this ) );
|
2000-12-15 11:23:15 +00:00
|
|
|
if(pMap->nWID < RES_FRMATR_END)
|
|
|
|
{
|
|
|
|
const SfxPoolItem& rDefItem =
|
|
|
|
pUnoCrsr->GetDoc()->GetAttrPool().GetDefaultItem(pMap->nWID);
|
|
|
|
rDefItem.QueryValue(aRet, pMap->nMemberId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw beans::UnknownPropertyException();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
|
|
|
|
return aRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:51---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::attach(const uno::Reference< XTextRange > & xTextRange)
|
|
|
|
throw( lang::IllegalArgumentException, uno::RuntimeException )
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:51---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Reference< XTextRange > SwXParagraph::getAnchor(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
uno::Reference< XTextRange > aRet;
|
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
|
|
|
// Absatz selektieren
|
|
|
|
SwParaSelection aSelection(pUnoCrsr);
|
|
|
|
aRet = new SwXTextRange(*pUnoCrsr, xParentText);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return aRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:52---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::dispose(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
SwUnoCrsr* pUnoCrsr = ((SwXParagraph*)this)->GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
|
|
|
// Absatz selektieren
|
2001-06-13 10:27:35 +00:00
|
|
|
{
|
|
|
|
SwParaSelection aSelection(pUnoCrsr);
|
|
|
|
pUnoCrsr->GetDoc()->DelFullPara(*pUnoCrsr);
|
|
|
|
}
|
2000-12-21 13:52:16 +00:00
|
|
|
aLstnrCntnr.Disposing();
|
2001-05-30 10:28:11 +00:00
|
|
|
delete pUnoCrsr;
|
2000-12-15 11:23:15 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:52---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::addEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
if(!GetRegisteredIn())
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
aLstnrCntnr.AddListener(aListener);
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:53---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::removeEventListener(const uno::Reference< lang::XEventListener > & aListener) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
if(!GetRegisteredIn() || !aLstnrCntnr.RemoveListener(aListener))
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:53---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Reference< container::XEnumeration > SwXParagraph::createEnumeration(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
uno::Reference< container::XEnumeration > aRef;
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if(pUnoCrsr)
|
2001-05-23 08:10:48 +00:00
|
|
|
aRef = new SwXTextPortionEnumeration(*pUnoCrsr, xParentText, nSelectionStartPos, nSelectionEndPos);
|
2000-12-15 11:23:15 +00:00
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return aRef;
|
|
|
|
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:54---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Type SwXParagraph::getElementType(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
return ::getCppuType((uno::Reference<XTextRange>*)0);
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:54---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
sal_Bool SwXParagraph::hasElements(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
if(((SwXParagraph*)this)->GetCrsr())
|
|
|
|
return sal_True;
|
|
|
|
else
|
|
|
|
return sal_False;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:55---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Reference< XText > SwXParagraph::getText(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
return xParentText;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:55---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Reference< XTextRange > SwXParagraph::getStart(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
uno::Reference< XTextRange > xRet;
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if( pUnoCrsr)
|
|
|
|
{
|
|
|
|
SwPaM aPam(*pUnoCrsr->Start());
|
|
|
|
uno::Reference< XText > xParent = getText();
|
|
|
|
xRet = new SwXTextRange(aPam, xParent);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return xRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:56---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
uno::Reference< XTextRange > SwXParagraph::getEnd(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
uno::Reference< XTextRange > xRet;
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if( pUnoCrsr)
|
|
|
|
{
|
|
|
|
SwPaM aPam(*pUnoCrsr->End());
|
|
|
|
uno::Reference< XText > xParent = getText();
|
|
|
|
xRet = new SwXTextRange(aPam, xParent);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return xRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:56---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
OUString SwXParagraph::getString(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
OUString aRet;
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if( pUnoCrsr)
|
2001-03-08 09:13:14 +00:00
|
|
|
{
|
|
|
|
SwParaSelection aSelection(pUnoCrsr);
|
|
|
|
SwXTextCursor::getTextFromPam(*pUnoCrsr, aRet);
|
|
|
|
}
|
2000-12-15 11:23:15 +00:00
|
|
|
else if(IsDescriptor())
|
|
|
|
aRet = m_sText;
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
return aRet;
|
|
|
|
}
|
2000-12-21 13:52:16 +00:00
|
|
|
/*-- 11.12.98 08:12:57---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::setString(const OUString& aString) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
vos::OGuard aGuard(Application::GetSolarMutex());
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
|
|
|
|
if(pUnoCrsr)
|
|
|
|
{
|
|
|
|
if(!SwUnoCursorHelper::IsStartOfPara(*pUnoCrsr))
|
|
|
|
pUnoCrsr->MovePara(fnParaCurr, fnParaStart);
|
|
|
|
SwXTextCursor::SelectPam(*pUnoCrsr, sal_True);
|
|
|
|
if(pUnoCrsr->GetNode()->GetTxtNode()->GetTxt().Len())
|
|
|
|
pUnoCrsr->MovePara(fnParaCurr, fnParaEnd);
|
|
|
|
SwXTextCursor::SetString(*pUnoCrsr, aString);
|
|
|
|
SwXTextCursor::SelectPam(*pUnoCrsr, sal_False);
|
|
|
|
}
|
|
|
|
else if(IsDescriptor())
|
|
|
|
m_sText = aString;
|
|
|
|
else
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
|
|
|
|
}
|
|
|
|
/* -----------------23.03.99 12:49-------------------
|
|
|
|
*
|
|
|
|
* --------------------------------------------------*/
|
|
|
|
uno::Reference< container::XEnumeration > SwXParagraph::createContentEnumeration(const OUString& rServiceName)
|
|
|
|
throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
SwUnoCrsr* pUnoCrsr = GetCrsr();
|
|
|
|
if( !pUnoCrsr || COMPARE_EQUAL != rServiceName.compareToAscii("com.sun.star.text.TextContent") )
|
|
|
|
throw uno::RuntimeException();
|
|
|
|
|
|
|
|
uno::Reference< container::XEnumeration > xRet = new SwXParaFrameEnumeration(*pUnoCrsr, PARAFRAME_PORTION_PARAGRAPH);
|
|
|
|
return xRet;
|
|
|
|
}
|
|
|
|
/* -----------------23.03.99 12:49-------------------
|
|
|
|
*
|
|
|
|
* --------------------------------------------------*/
|
|
|
|
uno::Sequence< OUString > SwXParagraph::getAvailableServiceNames(void) throw( uno::RuntimeException )
|
|
|
|
{
|
|
|
|
uno::Sequence< OUString > aRet(1);
|
|
|
|
OUString* pArray = aRet.getArray();
|
|
|
|
pArray[0] = C2U("com.sun.star.text.TextContent");
|
|
|
|
return aRet;
|
|
|
|
}
|
|
|
|
/*-- 11.12.98 08:12:58---------------------------------------------------
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------*/
|
|
|
|
void SwXParagraph::Modify( SfxPoolItem *pOld, SfxPoolItem *pNew)
|
|
|
|
{
|
|
|
|
ClientModify(this, pOld, pNew);
|
|
|
|
if(!GetRegisteredIn())
|
|
|
|
aLstnrCntnr.Disposing();
|
|
|
|
}
|
2000-12-15 11:23:15 +00:00
|
|
|
|