1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #include "vbatextbox.hxx"
25*b1cdbd2cSJim Jagielski #include "vbanewfont.hxx"
26*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextRange.hpp>
27*b1cdbd2cSJim Jagielski #include <ooo/vba/msforms/fmBorderStyle.hpp>
28*b1cdbd2cSJim Jagielski #include <ooo/vba/msforms/fmSpecialEffect.hpp>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski using namespace com::sun::star;
31*b1cdbd2cSJim Jagielski using namespace ooo::vba;
32*b1cdbd2cSJim Jagielski 
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)33*b1cdbd2cSJim Jagielski 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 )
34*b1cdbd2cSJim Jagielski {
35*b1cdbd2cSJim Jagielski }
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski // Attributes
38*b1cdbd2cSJim Jagielski uno::Any SAL_CALL
getValue()39*b1cdbd2cSJim Jagielski ScVbaTextBox::getValue() throw (css::uno::RuntimeException)
40*b1cdbd2cSJim Jagielski {
41*b1cdbd2cSJim Jagielski 	return uno::makeAny( getText() );
42*b1cdbd2cSJim Jagielski }
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski void SAL_CALL
setValue(const uno::Any & _value)45*b1cdbd2cSJim Jagielski ScVbaTextBox::setValue( const uno::Any& _value ) throw (css::uno::RuntimeException)
46*b1cdbd2cSJim Jagielski {
47*b1cdbd2cSJim Jagielski     // booleans are converted to uppercase strings
48*b1cdbd2cSJim Jagielski 	rtl::OUString sVal = extractStringFromAny( _value, true );
49*b1cdbd2cSJim Jagielski 	setText( sVal );
50*b1cdbd2cSJim Jagielski }
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski //getString() will cause some imfo lose.
53*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL
getText()54*b1cdbd2cSJim Jagielski ScVbaTextBox::getText() throw (css::uno::RuntimeException)
55*b1cdbd2cSJim Jagielski {
56*b1cdbd2cSJim Jagielski     uno::Any aValue;
57*b1cdbd2cSJim Jagielski     aValue = m_xProps->getPropertyValue
58*b1cdbd2cSJim Jagielski             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ) );
59*b1cdbd2cSJim Jagielski     rtl::OUString sString;
60*b1cdbd2cSJim Jagielski     aValue >>= sString;
61*b1cdbd2cSJim Jagielski     return sString;
62*b1cdbd2cSJim Jagielski }
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski void SAL_CALL
setText(const rtl::OUString & _text)65*b1cdbd2cSJim Jagielski ScVbaTextBox::setText( const rtl::OUString& _text ) throw (css::uno::RuntimeException)
66*b1cdbd2cSJim Jagielski {
67*b1cdbd2cSJim Jagielski     if ( !mbDialog )
68*b1cdbd2cSJim Jagielski     {
69*b1cdbd2cSJim Jagielski     uno::Reference< text::XTextRange > xTextRange( m_xProps, uno::UNO_QUERY_THROW );
70*b1cdbd2cSJim Jagielski     xTextRange->setString( _text );
71*b1cdbd2cSJim Jagielski }
72*b1cdbd2cSJim Jagielski     else
73*b1cdbd2cSJim Jagielski         m_xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Text") ), uno::makeAny( _text ) );
74*b1cdbd2cSJim Jagielski }
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL
getMaxLength()77*b1cdbd2cSJim Jagielski ScVbaTextBox::getMaxLength() throw (css::uno::RuntimeException)
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski     uno::Any aValue;
80*b1cdbd2cSJim Jagielski     aValue = m_xProps->getPropertyValue
81*b1cdbd2cSJim Jagielski             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MaxTextLen" ) ) );
82*b1cdbd2cSJim Jagielski     sal_Int32 nMaxLength = 0;
83*b1cdbd2cSJim Jagielski     aValue >>= nMaxLength;
84*b1cdbd2cSJim Jagielski     return nMaxLength;
85*b1cdbd2cSJim Jagielski }
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski void SAL_CALL
setMaxLength(sal_Int32 _maxlength)88*b1cdbd2cSJim Jagielski ScVbaTextBox::setMaxLength( sal_Int32 _maxlength ) throw (css::uno::RuntimeException)
89*b1cdbd2cSJim Jagielski {
90*b1cdbd2cSJim Jagielski     uno::Any aValue( _maxlength );
91*b1cdbd2cSJim Jagielski     m_xProps->setPropertyValue
92*b1cdbd2cSJim Jagielski             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MaxTextLen" ) ), aValue);
93*b1cdbd2cSJim Jagielski }
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski sal_Bool SAL_CALL
getMultiline()96*b1cdbd2cSJim Jagielski ScVbaTextBox::getMultiline() throw (css::uno::RuntimeException)
97*b1cdbd2cSJim Jagielski {
98*b1cdbd2cSJim Jagielski     uno::Any aValue;
99*b1cdbd2cSJim Jagielski     aValue = m_xProps->getPropertyValue
100*b1cdbd2cSJim Jagielski             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MultiLine" ) ) );
101*b1cdbd2cSJim Jagielski     sal_Bool bRet = false;
102*b1cdbd2cSJim Jagielski     aValue >>= bRet;
103*b1cdbd2cSJim Jagielski     return bRet;
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski void SAL_CALL
setMultiline(sal_Bool _multiline)107*b1cdbd2cSJim Jagielski ScVbaTextBox::setMultiline( sal_Bool _multiline ) throw (css::uno::RuntimeException)
108*b1cdbd2cSJim Jagielski {
109*b1cdbd2cSJim Jagielski     uno::Any aValue( _multiline );
110*b1cdbd2cSJim Jagielski     m_xProps->setPropertyValue
111*b1cdbd2cSJim Jagielski             (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MultiLine" ) ), aValue);
112*b1cdbd2cSJim Jagielski }
113*b1cdbd2cSJim Jagielski 
getSpecialEffect()114*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScVbaTextBox::getSpecialEffect() throw (uno::RuntimeException)
115*b1cdbd2cSJim Jagielski {
116*b1cdbd2cSJim Jagielski     return msforms::fmSpecialEffect::fmSpecialEffectSunken;
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski 
setSpecialEffect(sal_Int32)119*b1cdbd2cSJim Jagielski void SAL_CALL ScVbaTextBox::setSpecialEffect( sal_Int32 /*nSpecialEffect*/ ) throw (uno::RuntimeException)
120*b1cdbd2cSJim Jagielski {
121*b1cdbd2cSJim Jagielski }
122*b1cdbd2cSJim Jagielski 
getBorderStyle()123*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScVbaTextBox::getBorderStyle() throw (uno::RuntimeException)
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski     return msforms::fmBorderStyle::fmBorderStyleNone;
126*b1cdbd2cSJim Jagielski }
127*b1cdbd2cSJim Jagielski 
setBorderStyle(sal_Int32)128*b1cdbd2cSJim Jagielski void SAL_CALL ScVbaTextBox::setBorderStyle( sal_Int32 /*nBorderStyle*/ ) throw (uno::RuntimeException)
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
getTextLength()132*b1cdbd2cSJim Jagielski sal_Int32 SAL_CALL ScVbaTextBox::getTextLength() throw (uno::RuntimeException)
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski     return getText().getLength();
135*b1cdbd2cSJim Jagielski }
136*b1cdbd2cSJim Jagielski 
getFont()137*b1cdbd2cSJim Jagielski uno::Reference< msforms::XNewFont > SAL_CALL ScVbaTextBox::getFont() throw (uno::RuntimeException)
138*b1cdbd2cSJim Jagielski {
139*b1cdbd2cSJim Jagielski     return new VbaNewFont( this, mxContext, m_xProps );
140*b1cdbd2cSJim Jagielski }
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski rtl::OUString&
getServiceImplName()143*b1cdbd2cSJim Jagielski ScVbaTextBox::getServiceImplName()
144*b1cdbd2cSJim Jagielski {
145*b1cdbd2cSJim Jagielski 	static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaTextBox") );
146*b1cdbd2cSJim Jagielski 	return sImplName;
147*b1cdbd2cSJim Jagielski }
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski uno::Sequence< rtl::OUString >
getServiceNames()150*b1cdbd2cSJim Jagielski ScVbaTextBox::getServiceNames()
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski 	static uno::Sequence< rtl::OUString > aServiceNames;
153*b1cdbd2cSJim Jagielski 	if ( aServiceNames.getLength() == 0 )
154*b1cdbd2cSJim Jagielski 	{
155*b1cdbd2cSJim Jagielski 		aServiceNames.realloc( 1 );
156*b1cdbd2cSJim Jagielski 		aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.msforms.TextBox" ) );
157*b1cdbd2cSJim Jagielski 	}
158*b1cdbd2cSJim Jagielski 	return aServiceNames;
159*b1cdbd2cSJim Jagielski }
160