1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #include "vbatextbox.hxx"
29*cdf0e10cSrcweir #include "vbanewfont.hxx"
30*cdf0e10cSrcweir #include <com/sun/star/text/XTextRange.hpp>
31*cdf0e10cSrcweir #include <ooo/vba/msforms/fmBorderStyle.hpp>
32*cdf0e10cSrcweir #include <ooo/vba/msforms/fmSpecialEffect.hpp>
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir using namespace com::sun::star;
35*cdf0e10cSrcweir using namespace ooo::vba;
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir ScVbaTextBox::ScVbaTextBox( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< uno::XInterface >& xControl, const uno::Reference< frame::XModel >& xModel, AbstractGeometryAttributes* pGeomHelper, bool bDialog ) : TextBoxImpl_BASE( xParent, xContext, xControl, xModel, pGeomHelper ), mbDialog( bDialog )
38*cdf0e10cSrcweir {
39*cdf0e10cSrcweir }
40*cdf0e10cSrcweir 
41*cdf0e10cSrcweir // Attributes
42*cdf0e10cSrcweir uno::Any SAL_CALL
43*cdf0e10cSrcweir ScVbaTextBox::getValue() throw (css::uno::RuntimeException)
44*cdf0e10cSrcweir {
45*cdf0e10cSrcweir 	return uno::makeAny( getText() );
46*cdf0e10cSrcweir }
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir void SAL_CALL
49*cdf0e10cSrcweir ScVbaTextBox::setValue( const uno::Any& _value ) throw (css::uno::RuntimeException)
50*cdf0e10cSrcweir {
51*cdf0e10cSrcweir     // booleans are converted to uppercase strings
52*cdf0e10cSrcweir 	rtl::OUString sVal = extractStringFromAny( _value, true );
53*cdf0e10cSrcweir 	setText( sVal );
54*cdf0e10cSrcweir }
55*cdf0e10cSrcweir 
56*cdf0e10cSrcweir //getString() will cause some imfo lose.
57*cdf0e10cSrcweir rtl::OUString SAL_CALL
58*cdf0e10cSrcweir ScVbaTextBox::getText() throw (css::uno::RuntimeException)
59*cdf0e10cSrcweir {
60*cdf0e10cSrcweir     uno::Any aValue;
61*cdf0e10cSrcweir     aValue = m_xProps->getPropertyValue
62*cdf0e10cSrcweir             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ) );
63*cdf0e10cSrcweir     rtl::OUString sString;
64*cdf0e10cSrcweir     aValue >>= sString;
65*cdf0e10cSrcweir     return sString;
66*cdf0e10cSrcweir }
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir void SAL_CALL
69*cdf0e10cSrcweir ScVbaTextBox::setText( const rtl::OUString& _text ) throw (css::uno::RuntimeException)
70*cdf0e10cSrcweir {
71*cdf0e10cSrcweir     if ( !mbDialog )
72*cdf0e10cSrcweir     {
73*cdf0e10cSrcweir     uno::Reference< text::XTextRange > xTextRange( m_xProps, uno::UNO_QUERY_THROW );
74*cdf0e10cSrcweir     xTextRange->setString( _text );
75*cdf0e10cSrcweir }
76*cdf0e10cSrcweir     else
77*cdf0e10cSrcweir         m_xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), uno::makeAny( _text ) );
78*cdf0e10cSrcweir }
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir sal_Int32 SAL_CALL
81*cdf0e10cSrcweir ScVbaTextBox::getMaxLength() throw (css::uno::RuntimeException)
82*cdf0e10cSrcweir {
83*cdf0e10cSrcweir     uno::Any aValue;
84*cdf0e10cSrcweir     aValue = m_xProps->getPropertyValue
85*cdf0e10cSrcweir             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MaxTextLen" ) ) );
86*cdf0e10cSrcweir     sal_Int32 nMaxLength = 0;
87*cdf0e10cSrcweir     aValue >>= nMaxLength;
88*cdf0e10cSrcweir     return nMaxLength;
89*cdf0e10cSrcweir }
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir void SAL_CALL
92*cdf0e10cSrcweir ScVbaTextBox::setMaxLength( sal_Int32 _maxlength ) throw (css::uno::RuntimeException)
93*cdf0e10cSrcweir {
94*cdf0e10cSrcweir     uno::Any aValue( _maxlength );
95*cdf0e10cSrcweir     m_xProps->setPropertyValue
96*cdf0e10cSrcweir             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MaxTextLen" ) ), aValue);
97*cdf0e10cSrcweir }
98*cdf0e10cSrcweir 
99*cdf0e10cSrcweir sal_Bool SAL_CALL
100*cdf0e10cSrcweir ScVbaTextBox::getMultiline() throw (css::uno::RuntimeException)
101*cdf0e10cSrcweir {
102*cdf0e10cSrcweir     uno::Any aValue;
103*cdf0e10cSrcweir     aValue = m_xProps->getPropertyValue
104*cdf0e10cSrcweir             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MultiLine" ) ) );
105*cdf0e10cSrcweir     sal_Bool bRet = false;
106*cdf0e10cSrcweir     aValue >>= bRet;
107*cdf0e10cSrcweir     return bRet;
108*cdf0e10cSrcweir }
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir void SAL_CALL
111*cdf0e10cSrcweir ScVbaTextBox::setMultiline( sal_Bool _multiline ) throw (css::uno::RuntimeException)
112*cdf0e10cSrcweir {
113*cdf0e10cSrcweir     uno::Any aValue( _multiline );
114*cdf0e10cSrcweir     m_xProps->setPropertyValue
115*cdf0e10cSrcweir             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MultiLine" ) ), aValue);
116*cdf0e10cSrcweir }
117*cdf0e10cSrcweir 
118*cdf0e10cSrcweir sal_Int32 SAL_CALL ScVbaTextBox::getSpecialEffect() throw (uno::RuntimeException)
119*cdf0e10cSrcweir {
120*cdf0e10cSrcweir     return msforms::fmSpecialEffect::fmSpecialEffectSunken;
121*cdf0e10cSrcweir }
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir void SAL_CALL ScVbaTextBox::setSpecialEffect( sal_Int32 /*nSpecialEffect*/ ) throw (uno::RuntimeException)
124*cdf0e10cSrcweir {
125*cdf0e10cSrcweir }
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir sal_Int32 SAL_CALL ScVbaTextBox::getBorderStyle() throw (uno::RuntimeException)
128*cdf0e10cSrcweir {
129*cdf0e10cSrcweir     return msforms::fmBorderStyle::fmBorderStyleNone;
130*cdf0e10cSrcweir }
131*cdf0e10cSrcweir 
132*cdf0e10cSrcweir void SAL_CALL ScVbaTextBox::setBorderStyle( sal_Int32 /*nBorderStyle*/ ) throw (uno::RuntimeException)
133*cdf0e10cSrcweir {
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir sal_Int32 SAL_CALL ScVbaTextBox::getTextLength() throw (uno::RuntimeException)
137*cdf0e10cSrcweir {
138*cdf0e10cSrcweir     return getText().getLength();
139*cdf0e10cSrcweir }
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir uno::Reference< msforms::XNewFont > SAL_CALL ScVbaTextBox::getFont() throw (uno::RuntimeException)
142*cdf0e10cSrcweir {
143*cdf0e10cSrcweir     return new VbaNewFont( this, mxContext, m_xProps );
144*cdf0e10cSrcweir }
145*cdf0e10cSrcweir 
146*cdf0e10cSrcweir rtl::OUString&
147*cdf0e10cSrcweir ScVbaTextBox::getServiceImplName()
148*cdf0e10cSrcweir {
149*cdf0e10cSrcweir 	static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaTextBox") );
150*cdf0e10cSrcweir 	return sImplName;
151*cdf0e10cSrcweir }
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir uno::Sequence< rtl::OUString >
154*cdf0e10cSrcweir ScVbaTextBox::getServiceNames()
155*cdf0e10cSrcweir {
156*cdf0e10cSrcweir 	static uno::Sequence< rtl::OUString > aServiceNames;
157*cdf0e10cSrcweir 	if ( aServiceNames.getLength() == 0 )
158*cdf0e10cSrcweir 	{
159*cdf0e10cSrcweir 		aServiceNames.realloc( 1 );
160*cdf0e10cSrcweir 		aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.msforms.TextBox" ) );
161*cdf0e10cSrcweir 	}
162*cdf0e10cSrcweir 	return aServiceNames;
163*cdf0e10cSrcweir }
164