diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2007-12-07 09:52:59 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2007-12-07 09:52:59 +0000 |
commit | c01006f623e7f569158daea5c3d3e6f3e40d01f2 (patch) | |
tree | d2d6bb1d5d8f60c8a2db99f7705386edd28bab60 /sc | |
parent | aeaba580a214c02dc9d279505e2893b67c9c60bf (diff) |
INTEGRATION: CWS npower8 (1.1.2); FILE ADDED
2007/07/18 22:40:43 npower 1.1.2.1: #i77189# sync ooo-build and this module
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/vba/vbacondition.cxx | 183 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaformat.hxx | 111 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaformatconditions.hxx | 73 |
3 files changed, 367 insertions, 0 deletions
diff --git a/sc/source/ui/vba/vbacondition.cxx b/sc/source/ui/vba/vbacondition.cxx new file mode 100644 index 000000000000..768b4217511c --- /dev/null +++ b/sc/source/ui/vba/vbacondition.cxx @@ -0,0 +1,183 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbacondition.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-12-07 10:49:31 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ + +#include "vbacondition.hxx" +#include <org/openoffice/excel/XlFormatConditionOperator.hpp> +#include <org/openoffice/excel/XFormatCondition.hpp> +#include <com/sun/star/table/XCellRange.hpp> +#include <com/sun/star/sheet/XCellRangeAddressable.hpp> + +using namespace ::org::openoffice; +using namespace ::com::sun::star; + +const sal_Int32 ISFORMULA = 98765432; + +template< typename Ifc1 > +ScVbaCondition< Ifc1 >::ScVbaCondition( const uno::Reference< vba::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< sheet::XSheetCondition >& _xSheetCondition ) : ScVbaCondition_BASE( xParent, xContext ), mxSheetCondition( _xSheetCondition ) +{ + mxAddressable.set( xParent, uno::UNO_QUERY_THROW ); +} + +template< typename Ifc1 > +sheet::ConditionOperator +ScVbaCondition< Ifc1 >::retrieveAPIOperator( const uno::Any& _aOperator) throw ( script::BasicErrorException ) +{ + sheet::ConditionOperator aRetAPIOperator = sheet::ConditionOperator_NONE; + sal_Int32 nOperator = 0; + if ( (_aOperator >>= nOperator ) ) + { + switch(nOperator) + { + case excel::XlFormatConditionOperator::xlBetween: + aRetAPIOperator = sheet::ConditionOperator_BETWEEN; + break; + case excel::XlFormatConditionOperator::xlNotBetween: + aRetAPIOperator = sheet::ConditionOperator_NOT_BETWEEN; + break; + case excel::XlFormatConditionOperator::xlEqual: + aRetAPIOperator = sheet::ConditionOperator_EQUAL; + break; + case excel::XlFormatConditionOperator::xlNotEqual: + aRetAPIOperator = sheet::ConditionOperator_NOT_EQUAL; + break; + case excel::XlFormatConditionOperator::xlGreater: + aRetAPIOperator = sheet::ConditionOperator_GREATER; + break; + case excel::XlFormatConditionOperator::xlLess: + aRetAPIOperator = sheet::ConditionOperator_LESS; + break; + case excel::XlFormatConditionOperator::xlGreaterEqual: + aRetAPIOperator = sheet::ConditionOperator_GREATER_EQUAL; + break; + case excel::XlFormatConditionOperator::xlLessEqual: + aRetAPIOperator = sheet::ConditionOperator_LESS_EQUAL; + break; + default: + aRetAPIOperator = sheet::ConditionOperator_NONE; + break; + } + } + return aRetAPIOperator; +} + +template< typename Ifc1 > +rtl::OUString +ScVbaCondition< Ifc1 >::Formula1( ) throw ( script::BasicErrorException, uno::RuntimeException ) +{ + return mxSheetCondition->getFormula1(); +} + +template< typename Ifc1 > +rtl::OUString +ScVbaCondition< Ifc1 >::Formula2( ) throw ( script::BasicErrorException, uno::RuntimeException ) +{ + return mxSheetCondition->getFormula2(); +} + +template< typename Ifc1 > +void +ScVbaCondition< Ifc1 >::setFormula1( const uno::Any& _aFormula1) throw ( script::BasicErrorException ) +{ + rtl::OUString sFormula; + if ( (_aFormula1 >>= sFormula )) + { + mxSheetCondition->setFormula1( sFormula ); + table::CellRangeAddress aCellRangeAddress = mxAddressable->getRangeAddress(); + table::CellAddress aCellAddress( aCellRangeAddress.Sheet, aCellRangeAddress.StartColumn, aCellRangeAddress.StartRow ); + mxSheetCondition->setSourcePosition(aCellAddress); + } +} + +template< typename Ifc1 > +void +ScVbaCondition< Ifc1 >::setFormula2( const uno::Any& _aFormula2) throw ( script::BasicErrorException ) +{ + rtl::OUString sFormula2; + // #TODO surely this can't be right? + // ( from helperapi/impl/.../calc/ConditionImpl.java + if ( (_aFormula2 >>= sFormula2 )) + mxSheetCondition->setFormula1(sFormula2); +} + +template< typename Ifc1 > +sal_Int32 +ScVbaCondition< Ifc1 >::Operator(sal_Bool _bIncludeFormulaValue) throw ( script::BasicErrorException ) +{ + sal_Int32 retvalue = -1; + sheet::ConditionOperator aConditionalOperator = mxSheetCondition->getOperator(); + switch (aConditionalOperator) + { + case sheet::ConditionOperator_EQUAL: + retvalue = excel::XlFormatConditionOperator::xlEqual; + break; + case sheet::ConditionOperator_NOT_EQUAL: + retvalue = excel::XlFormatConditionOperator::xlNotEqual; + break; + case sheet::ConditionOperator_GREATER: + retvalue = excel::XlFormatConditionOperator::xlGreater; + break; + case sheet::ConditionOperator_GREATER_EQUAL: + retvalue = excel::XlFormatConditionOperator::xlGreaterEqual; + break; + case sheet::ConditionOperator_LESS: + retvalue = excel::XlFormatConditionOperator::xlLess; + break; + case sheet::ConditionOperator_LESS_EQUAL: + retvalue = excel::XlFormatConditionOperator::xlLessEqual; + break; + case sheet::ConditionOperator_BETWEEN: + retvalue = excel::XlFormatConditionOperator::xlBetween; + break; + case sheet::ConditionOperator_NOT_BETWEEN: + retvalue = excel::XlFormatConditionOperator::xlNotBetween; + break; + case sheet::ConditionOperator_FORMULA: + if (_bIncludeFormulaValue) + { + //#FIXME huh what's this all about + // from helperapi/impl/.../calc/ConditionImpl + retvalue = ISFORMULA; + break; + } + case sheet::ConditionOperator_NONE: + default: + DebugHelper::exception(SbERR_METHOD_FAILED, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Operator not supported"))); + break; + } + return retvalue; +} + +template class ScVbaCondition< excel::XFormatCondition >; + diff --git a/sc/source/ui/vba/vbaformat.hxx b/sc/source/ui/vba/vbaformat.hxx new file mode 100644 index 000000000000..be4b93b51d92 --- /dev/null +++ b/sc/source/ui/vba/vbaformat.hxx @@ -0,0 +1,111 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaformat.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-12-07 10:51:57 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ +#ifndef SC_VBA_FORMAT_HXX +#define SC_VBA_FORMAT_HXX +#include <org/openoffice/excel/XFormat.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/util/XNumberFormatsSupplier.hpp> +#include <com/sun/star/util/XNumberFormats.hpp> +#include <com/sun/star/util/XNumberFormatTypes.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/lang/Locale.hpp> +#include <com/sun/star/beans/XPropertyState.hpp> +#include "vbahelperinterface.hxx" + +template< typename Ifc1 > +class ScVbaFormat : public InheritedHelperInterfaceImpl1< Ifc1 > +{ +typedef InheritedHelperInterfaceImpl1< Ifc1 > ScVbaFormat_BASE; + css::lang::Locale m_aDefaultLocale; +protected: + css::lang::Locale getDefaultLocale() { return m_aDefaultLocale; } + css::uno::Reference< css::beans::XPropertySet > mxPropertySet; + css::uno::Reference< css::util::XNumberFormatsSupplier > mxNumberFormatsSupplier; + css::uno::Reference< css::util::XNumberFormats > xNumberFormats; + css::uno::Reference< css::util::XNumberFormatTypes > xNumberFormatTypes; + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::lang::XServiceInfo > mxServiceInfo; + css::uno::Reference< css::beans::XPropertyState > xPropertyState; + sal_Bool mbCheckAmbiguoity; + sal_Bool mbAddIndent; + //NumberFormatter oNumberFormatter = null; + css::uno::Reference< css::lang::XMultiServiceFactory > xMultiServiceFactory; + bool isAmbiguous(const rtl::OUString& _sPropertyName) throw ( css::script::BasicErrorException ); + css::uno::Reference< css::beans::XPropertyState > getXPropertyState() throw ( css::uno::RuntimeException ); + void initializeNumberFormats() throw ( css::script::BasicErrorException ); + void setNumberFormat( css::lang::Locale _aLocale, const rtl::OUString& _sFormatString) throw( css::script::BasicErrorException ); +public: + ScVbaFormat( const css::uno::Reference< oo::vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::beans::XPropertySet >& _xPropertySet, const css::uno::Reference< css::frame::XModel >& xModel, bool bCheckAmbiguoity ) throw ( css::script::BasicErrorException ); + virtual ~ScVbaFormat() {} + virtual css::uno::Reference< oo::vba::XHelperInterface > thisHelperIface() = 0; + css::uno::Reference< css::lang::XServiceInfo > getXServiceInfo() { return mxServiceInfo; } + void SAL_CALL setAddIndent( const css::uno::Any& _BAddIndent) throw( css::uno::RuntimeException ) { _BAddIndent >>= mbAddIndent; } + css::uno::Any SAL_CALL getAddIndent() throw( css::uno::RuntimeException ) { return css::uno::makeAny( mbAddIndent ); } + // Interface Methods + virtual css::uno::Any SAL_CALL Borders( const css::uno::Any& Index ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Reference< ::org::openoffice::excel::XFont > SAL_CALL Font( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Reference< ::org::openoffice::excel::XInterior > SAL_CALL Interior( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setNumberFormat( const css::uno::Any& NumberFormat ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getNumberFormat( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setNumberFormatLocal( const css::uno::Any& NumberFormatLocal ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getNumberFormatLocal( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setIndentLevel( const css::uno::Any& IndentLevel ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getIndentLevel( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setHorizontalAlignment( const css::uno::Any& HorizontalAlignment ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getHorizontalAlignment( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setVerticalAlignment( const css::uno::Any& VerticalAlignment ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getVerticalAlignment( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setOrientation( const css::uno::Any& Orientation ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getOrientation( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setShrinkToFit( const css::uno::Any& ShrinkToFit ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getShrinkToFit( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setWrapText( const css::uno::Any& WrapText ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getWrapText( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setLocked( const css::uno::Any& Locked ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getLocked( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setFormulaHidden( const css::uno::Any& FormulaHidden ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getFormulaHidden( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual void SAL_CALL setMergeCells( const css::uno::Any& MergeCells ) throw (css::script::BasicErrorException, css::uno::RuntimeException) = 0; + virtual css::uno::Any SAL_CALL getMergeCells( ) throw (css::script::BasicErrorException, css::uno::RuntimeException) = 0; + virtual void SAL_CALL setReadingOrder( const css::uno::Any& ReadingOrder ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + virtual css::uno::Any SAL_CALL getReadingOrder( ) throw (css::script::BasicErrorException, css::uno::RuntimeException);; + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif diff --git a/sc/source/ui/vba/vbaformatconditions.hxx b/sc/source/ui/vba/vbaformatconditions.hxx new file mode 100644 index 000000000000..39078ce305c2 --- /dev/null +++ b/sc/source/ui/vba/vbaformatconditions.hxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaformatconditions.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-12-07 10:52:59 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 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 + * + ************************************************************************/ +#ifndef SC_VBA_FORMATCONDITIONS_HXX +#define SC_VBA_FORMATCONDITIONS_HXX +#include <org/openoffice/excel/XFormatConditions.hpp> +#include <org/openoffice/excel/XStyles.hpp> +#include <org/openoffice/excel/XRange.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/table/CellAddress.hpp> +#include <com/sun/star/sheet/XSheetConditionalEntries.hpp> +#include "vbacollectionimpl.hxx" + +typedef CollTestImplHelper< oo::excel::XFormatConditions > ScVbaFormatConditions_BASE; +class ScVbaFormatConditions: public ScVbaFormatConditions_BASE +{ + css::table::CellAddress maCellAddress; + css::uno::Reference< css::sheet::XSheetConditionalEntries > mxSheetConditionalEntries; + css::uno::Reference< oo::excel::XStyles > mxStyles; + css::uno::Reference< oo::excel::XRange > mxRangeParent; + css::uno::Reference< css::beans::XPropertySet > mxParentRangePropertySet; +public: + ScVbaFormatConditions( const css::uno::Reference< oo::vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::sheet::XSheetConditionalEntries >&, const css::uno::Reference< css::frame::XModel >& ); + void notifyRange() throw ( css::script::BasicErrorException ); + virtual css::uno::Reference< oo::excel::XFormatCondition > Add( ::sal_Int32 Type, const css::uno::Any& Operator, const css::uno::Any& Formula1, const css::uno::Any& Formula2, const css::uno::Reference< oo::excel::XStyle >& _xCalcStyle ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + rtl::OUString getA1Formula(const css::uno::Any& _aFormula) throw ( css::script::BasicErrorException ); + rtl::OUString getStyleName(); + void removeFormatCondition( const rtl::OUString& _sStyleName, sal_Bool _bRemoveStyle) throw ( css::script::BasicErrorException ); + css::uno::Reference< css::sheet::XSheetConditionalEntries > getSheetConditionalEntries() { return mxSheetConditionalEntries; } + // XFormatConditions + virtual void SAL_CALL Delete( ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + virtual css::uno::Reference< oo::excel::XFormatCondition > SAL_CALL Add( ::sal_Int32 Type, const css::uno::Any& Operator, const css::uno::Any& Formula1, const css::uno::Any& Formula2 ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + virtual css::uno::Any createCollectionObject(const css::uno::Any&); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif //SC_VBA_AXES_HXX |