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