diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-01-28 20:52:45 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-01-28 20:52:45 +0100 |
commit | 2e626373db2412ac22e8c5c27a60d11cd29e875b (patch) | |
tree | 9e9f67205cd5b72f1031721273e1534a3a1e5b0f /extensions/source/propctrlr/standardcontrol.cxx | |
parent | f7ee7bbd5174b084f018c2ec94d8c70c98ee04da (diff) |
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'extensions/source/propctrlr/standardcontrol.cxx')
-rw-r--r-- | extensions/source/propctrlr/standardcontrol.cxx | 1438 |
1 files changed, 0 insertions, 1438 deletions
diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx deleted file mode 100644 index bb3cf6fa6..000000000 --- a/extensions/source/propctrlr/standardcontrol.cxx +++ /dev/null @@ -1,1438 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_extensions.hxx" -#include "standardcontrol.hxx" -#include "pcrcommon.hxx" - -/** === begin UNO includes === **/ -#include <com/sun/star/util/DateTime.hpp> -#include <com/sun/star/util/Date.hpp> -#include <com/sun/star/util/Time.hpp> -#include <com/sun/star/util/Color.hpp> -#include <com/sun/star/util/MeasureUnit.hpp> -#include <com/sun/star/inspection/PropertyControlType.hpp> -/** === end UNO includes === **/ -#include <rtl/math.hxx> -#include <sfx2/objsh.hxx> - -//================================================================== -// ugly dependencies for the OColorControl -#include <svx/svxids.hrc> -#include <svx/drawitem.hxx> -#include <svx/xtable.hxx> -//================================================================== -#include <vcl/floatwin.hxx> -#include <svtools/svmedit.hxx> -#include <svtools/colorcfg.hxx> -#include <unotools/syslocale.hxx> -#include <unotools/datetime.hxx> -#include <i18npool/mslangid.hxx> -#include <vcl/button.hxx> -#include <vcl/svapp.hxx> -//================================================================== - -#include <memory> -#include <limits> -#include <boost/bind.hpp> - -//............................................................................ -namespace pcr -{ -//............................................................................ - - using namespace ::com::sun::star; - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::awt; - using namespace ::com::sun::star::lang; - using namespace ::com::sun::star::util; - using namespace ::com::sun::star::beans; - using namespace ::com::sun::star::inspection; - - //================================================================== - //= OTimeControl - //================================================================== - //------------------------------------------------------------------ - OTimeControl::OTimeControl( Window* pParent, WinBits nWinStyle ) - :OTimeControl_Base( PropertyControlType::TimeField, pParent, nWinStyle ) - { - getTypedControlWindow()->SetStrictFormat( sal_True ); - getTypedControlWindow()->SetFormat( TIMEF_SEC ); - getTypedControlWindow()->EnableEmptyFieldValue( sal_True ); - } - - //------------------------------------------------------------------ - void SAL_CALL OTimeControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - util::Time aUNOTime; - if ( !( _rValue >>= aUNOTime ) ) - { - getTypedControlWindow()->SetText( String() ); - getTypedControlWindow()->SetEmptyTime(); - } - else - { - ::Time aTime( aUNOTime.Hours, aUNOTime.Minutes, aUNOTime.Seconds, aUNOTime.HundredthSeconds ); - getTypedControlWindow()->SetTime( aTime ); - } - } - - //------------------------------------------------------------------ - Any SAL_CALL OTimeControl::getValue() throw (RuntimeException) - { - Any aPropValue; - if ( getTypedControlWindow()->GetText().Len()>0 ) - { - ::Time aTime( getTypedControlWindow()->GetTime() ); - util::Time aUNOTime( aTime.Get100Sec(), aTime.GetSec(), aTime.GetMin(), aTime.GetHour() ); - aPropValue <<= aUNOTime; - } - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL OTimeControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< util::Time* >( NULL ) ); - } - - //================================================================== - //= ODateControl - //================================================================== - //------------------------------------------------------------------ - ODateControl::ODateControl( Window* pParent, WinBits nWinStyle ) - :ODateControl_Base( PropertyControlType::DateField, pParent, nWinStyle | WB_DROPDOWN ) - { - WindowType* pControlWindow = getTypedControlWindow(); - pControlWindow->SetStrictFormat(sal_True); - - pControlWindow->SetMin( ::Date( 1,1,1600 ) ); - pControlWindow->SetFirst( ::Date( 1,1,1600 ) ); - pControlWindow->SetLast( ::Date( 1, 1, 9999 ) ); - pControlWindow->SetMax( ::Date( 1, 1, 9999 ) ); - - pControlWindow->SetExtDateFormat( XTDATEF_SYSTEM_SHORT_YYYY ); - pControlWindow->EnableEmptyFieldValue( sal_True ); - } - - //------------------------------------------------------------------ - void SAL_CALL ODateControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - util::Date aUNODate; - if ( !( _rValue >>= aUNODate ) ) - { - getTypedControlWindow()->SetText( String() ); - getTypedControlWindow()->SetEmptyDate(); - } - else - { - ::Date aDate( aUNODate.Day, aUNODate.Month, aUNODate.Year ); - getTypedControlWindow()->SetDate( aDate ); - } - } - - //------------------------------------------------------------------ - Any SAL_CALL ODateControl::getValue() throw (RuntimeException) - { - Any aPropValue; - if ( getTypedControlWindow()->GetText().Len() > 0 ) - { - ::Date aDate( getTypedControlWindow()->GetDate() ); - util::Date aUNODate( aDate.GetDay(), aDate.GetMonth(), aDate.GetYear() ); - aPropValue <<= aUNODate; - } - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL ODateControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< util::Date* >( NULL ) ); - } - - //================================================================== - //= OEditControl - //================================================================== - //------------------------------------------------------------------ - OEditControl::OEditControl(Window* _pParent, sal_Bool _bPW, WinBits _nWinStyle) - :OEditControl_Base( _bPW ? PropertyControlType::CharacterField : PropertyControlType::TextField, _pParent, _nWinStyle ) - { - m_bIsPassword = _bPW; - - if ( m_bIsPassword ) - getTypedControlWindow()->SetMaxTextLen( 1 ); - } - - //------------------------------------------------------------------ - void SAL_CALL OEditControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - ::rtl::OUString sText; - if ( m_bIsPassword ) - { - sal_Int16 nValue = 0; - _rValue >>= nValue; - if ( nValue ) - { - sal_Unicode nCharacter = nValue; - sText = String( &nCharacter, 1 ); - } - } - else - _rValue >>= sText; - - getTypedControlWindow()->SetText( sText ); - } - - //------------------------------------------------------------------ - Any SAL_CALL OEditControl::getValue() throw (RuntimeException) - { - Any aPropValue; - - ::rtl::OUString sText( getTypedControlWindow()->GetText() ); - if ( m_bIsPassword ) - { - if ( sText.getLength() ) - aPropValue <<= (sal_Int16)sText.getStr()[0]; - } - else - aPropValue <<= sText; - - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL OEditControl::getValueType() throw (RuntimeException) - { - return m_bIsPassword ? ::getCppuType( static_cast< sal_Int16* >( NULL ) ) : ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); - } - - //------------------------------------------------------------------ - void OEditControl::modified() - { - OEditControl_Base::modified(); - - // for pasword controls, we fire a commit for every single change - if ( m_bIsPassword ) - m_aImplControl.notifyModifiedValue(); - } - - //------------------------------------------------------------------ - static long ImplCalcLongValue( double nValue, sal_uInt16 nDigits ) - { - double n = nValue; - for ( sal_uInt16 d = 0; d < nDigits; ++d ) - n *= 10; - - if ( n > ::std::numeric_limits< long >::max() ) - return ::std::numeric_limits< long >::max(); - return (long)n; - } - - //------------------------------------------------------------------ - static double ImplCalcDoubleValue( long nValue, sal_uInt16 nDigits ) - { - double n = nValue; - for ( sal_uInt16 d = 0; d < nDigits; ++d ) - n /= 10; - return n; - } - - //================================================================== - // class ODateTimeControl - //================================================================== - //------------------------------------------------------------------ - ODateTimeControl::ODateTimeControl( Window* _pParent, WinBits _nWinStyle) - :ODateTimeControl_Base( PropertyControlType::DateTimeField, _pParent, _nWinStyle ) - { - getTypedControlWindow()->EnableEmptyField( sal_True ); - - // determine a default format - Locale aSysLocale = SvtSysLocale().GetLocaleData().getLocale(); - LanguageType eSysLanguage = MsLangId::convertLocaleToLanguage( aSysLocale ); - - getTypedControlWindow()->SetFormatter( getTypedControlWindow()->StandardFormatter() ); - SvNumberFormatter* pFormatter = getTypedControlWindow()->GetFormatter(); - sal_uLong nStandardDateTimeFormat = pFormatter->GetStandardFormat( NUMBERFORMAT_DATETIME, eSysLanguage ); - - getTypedControlWindow()->SetFormatKey( nStandardDateTimeFormat ); - } - - //------------------------------------------------------------------ - void SAL_CALL ODateTimeControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - if ( !_rValue.hasValue() ) - { - getTypedControlWindow()->SetText( String() ); - } - else - { - util::DateTime aUNODateTime; - OSL_VERIFY( _rValue >>= aUNODateTime ); - - ::DateTime aDateTime; - ::utl::typeConvert( aUNODateTime, aDateTime ); - - double nValue = aDateTime - ::DateTime( *getTypedControlWindow()->GetFormatter()->GetNullDate() ); - getTypedControlWindow()->SetValue( nValue ); - } - } - - //------------------------------------------------------------------ - Any SAL_CALL ODateTimeControl::getValue() throw (RuntimeException) - { - Any aPropValue; - if ( getTypedControlWindow()->GetText().Len() ) - { - double nValue = getTypedControlWindow()->GetValue(); - - ::DateTime aDateTime( *getTypedControlWindow()->GetFormatter()->GetNullDate() ); - - // add the "days" part - double nDays = floor( nValue ); - aDateTime += nDays; - - // add the "time" part - double nTime = nValue - nDays; - nTime = ::rtl::math::round( nTime * 86400.0 ) / 86400.0; - // we're not interested in 100th seconds, and this here prevents rounding errors - aDateTime += nTime; - - util::DateTime aUNODateTime; - ::utl::typeConvert( aDateTime, aUNODateTime ); - - aPropValue <<= aUNODateTime; - } - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL ODateTimeControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< util::DateTime* >( NULL ) ); - } - - //======================================================================== - //= HyperlinkInput - //======================================================================== - //-------------------------------------------------------------------- - HyperlinkInput::HyperlinkInput( Window* _pParent, WinBits _nWinStyle ) - :Edit( _pParent, _nWinStyle ) - { - ::svtools::ColorConfig aColorConfig; - ::svtools::ColorConfigValue aLinkColor( aColorConfig.GetColorValue( ::svtools::LINKS ) ); - - AllSettings aAllSettings( GetSettings() ); - StyleSettings aStyleSettings( aAllSettings.GetStyleSettings() ); - - Font aFieldFont( aStyleSettings.GetFieldFont() ); - aFieldFont.SetUnderline( UNDERLINE_SINGLE ); - aFieldFont.SetColor( aLinkColor.nColor ); - aStyleSettings.SetFieldFont( aFieldFont ); - - aStyleSettings.SetFieldTextColor( aLinkColor.nColor ); - - aAllSettings.SetStyleSettings( aStyleSettings ); - SetSettings( aAllSettings ); - } - - //-------------------------------------------------------------------- - void HyperlinkInput::MouseMove( const ::MouseEvent& rMEvt ) - { - Edit::MouseMove( rMEvt ); - - PointerStyle ePointerStyle( POINTER_TEXT ); - - if ( !rMEvt.IsLeaveWindow() ) - { - if ( impl_textHitTest( rMEvt.GetPosPixel() ) ) - ePointerStyle = POINTER_REFHAND; - } - - SetPointer( Pointer( ePointerStyle ) ); - } - - //-------------------------------------------------------------------- - void HyperlinkInput::MouseButtonDown( const ::MouseEvent& rMEvt ) - { - Edit::MouseButtonDown( rMEvt ); - - if ( impl_textHitTest( rMEvt.GetPosPixel() ) ) - m_aMouseButtonDownPos = rMEvt.GetPosPixel(); - else - m_aMouseButtonDownPos.X() = m_aMouseButtonDownPos.Y() = -1; - } - - //-------------------------------------------------------------------- - void HyperlinkInput::MouseButtonUp( const ::MouseEvent& rMEvt ) - { - Edit::MouseButtonUp( rMEvt ); - - impl_checkEndClick( rMEvt ); - } - - //-------------------------------------------------------------------- - bool HyperlinkInput::impl_textHitTest( const ::Point& _rWindowPos ) - { - xub_StrLen nPos = GetCharPos( _rWindowPos ); - return ( ( nPos != STRING_LEN ) && ( nPos < GetText().Len() ) ); - } - - //-------------------------------------------------------------------- - void HyperlinkInput::impl_checkEndClick( const ::MouseEvent rMEvt ) - { - const MouseSettings& rMouseSettings( GetSettings().GetMouseSettings() ); - if ( ( abs( rMEvt.GetPosPixel().X() - m_aMouseButtonDownPos.X() ) < rMouseSettings.GetStartDragWidth() ) - && ( abs( rMEvt.GetPosPixel().Y() - m_aMouseButtonDownPos.Y() ) < rMouseSettings.GetStartDragHeight() ) - ) - Application::PostUserEvent( m_aClickHandler ); - } - - //-------------------------------------------------------------------- - void HyperlinkInput::Tracking( const TrackingEvent& rTEvt ) - { - Edit::Tracking( rTEvt ); - - if ( rTEvt.IsTrackingEnded() ) - impl_checkEndClick( rTEvt.GetMouseEvent() ); - } - - //======================================================================== - //= OHyperlinkControl - //======================================================================== - //-------------------------------------------------------------------- - OHyperlinkControl::OHyperlinkControl( Window* _pParent, WinBits _nWinStyle ) - :OHyperlinkControl_Base( PropertyControlType::HyperlinkField, _pParent, _nWinStyle ) - ,m_aActionListeners( m_aMutex ) - { - getTypedControlWindow()->SetClickHdl( LINK( this, OHyperlinkControl, OnHyperlinkClicked ) ); - } - - //-------------------------------------------------------------------- - Any SAL_CALL OHyperlinkControl::getValue() throw (RuntimeException) - { - ::rtl::OUString sText = getTypedControlWindow()->GetText(); - return makeAny( sText ); - } - - //-------------------------------------------------------------------- - void SAL_CALL OHyperlinkControl::setValue( const Any& _value ) throw (IllegalTypeException, RuntimeException) - { - ::rtl::OUString sText; - _value >>= sText; - getTypedControlWindow()->SetText( sText ); - } - - //-------------------------------------------------------------------- - Type SAL_CALL OHyperlinkControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); - } - - //-------------------------------------------------------------------- - void SAL_CALL OHyperlinkControl::addActionListener( const Reference< XActionListener >& listener ) throw (RuntimeException) - { - if ( listener.is() ) - m_aActionListeners.addInterface( listener ); - } - - //-------------------------------------------------------------------- - void SAL_CALL OHyperlinkControl::removeActionListener( const Reference< XActionListener >& listener ) throw (RuntimeException) - { - m_aActionListeners.removeInterface( listener ); - } - - //------------------------------------------------------------------ - void SAL_CALL OHyperlinkControl::disposing() - { - OHyperlinkControl_Base::disposing(); - - EventObject aEvent( *this ); - m_aActionListeners.disposeAndClear( aEvent ); - } - - //------------------------------------------------------------------ - IMPL_LINK( OHyperlinkControl, OnHyperlinkClicked, void*, /*_NotInterestedIn*/ ) - { - ActionEvent aEvent( *this, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "clicked" ) ) ); - m_aActionListeners.forEach< XActionListener >( - boost::bind( - &XActionListener::actionPerformed, - _1, boost::cref(aEvent) ) ); - - return 0; - } - - //================================================================== - //= ONumericControl - //================================================================== - //------------------------------------------------------------------ - ONumericControl::ONumericControl( Window* _pParent, WinBits _nWinStyle ) - :ONumericControl_Base( PropertyControlType::NumericField, _pParent, _nWinStyle ) - ,m_eValueUnit( FUNIT_NONE ) - ,m_nFieldToUNOValueFactor( 1 ) - { - getTypedControlWindow()->SetDefaultUnit( FUNIT_NONE ); - - getTypedControlWindow()->EnableEmptyFieldValue( sal_True ); - getTypedControlWindow()->SetStrictFormat( sal_True ); - Optional< double > value( getMaxValue() ); - value.Value = -value.Value; - setMinValue( value ); - } - - //-------------------------------------------------------------------- - ::sal_Int16 SAL_CALL ONumericControl::getDecimalDigits() throw (RuntimeException) - { - return getTypedControlWindow()->GetDecimalDigits(); - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setDecimalDigits( ::sal_Int16 _decimaldigits ) throw (RuntimeException) - { - getTypedControlWindow()->SetDecimalDigits( _decimaldigits ); - } - - //-------------------------------------------------------------------- - Optional< double > SAL_CALL ONumericControl::getMinValue() throw (RuntimeException) - { - Optional< double > aReturn( sal_True, 0 ); - - sal_Int64 minValue = getTypedControlWindow()->GetMin(); - if ( minValue == ::std::numeric_limits< sal_Int64 >::min() ) - aReturn.IsPresent = sal_False; - else - aReturn.Value = (double)minValue; - - return aReturn; - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setMinValue( const Optional< double >& _minvalue ) throw (RuntimeException) - { - if ( !_minvalue.IsPresent ) - getTypedControlWindow()->SetMin( ::std::numeric_limits< sal_Int64 >::min() ); - else - getTypedControlWindow()->SetMin( impl_apiValueToFieldValue_nothrow( _minvalue.Value ) , m_eValueUnit); - } - - //-------------------------------------------------------------------- - Optional< double > SAL_CALL ONumericControl::getMaxValue() throw (RuntimeException) - { - Optional< double > aReturn( sal_True, 0 ); - - sal_Int64 maxValue = getTypedControlWindow()->GetMax(); - if ( maxValue == ::std::numeric_limits< sal_Int64 >::max() ) - aReturn.IsPresent = sal_False; - else - aReturn.Value = (double)maxValue; - - return aReturn; - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setMaxValue( const Optional< double >& _maxvalue ) throw (RuntimeException) - { - if ( !_maxvalue.IsPresent ) - getTypedControlWindow()->SetMax( ::std::numeric_limits< sal_Int64 >::max() ); - else - getTypedControlWindow()->SetMax( impl_apiValueToFieldValue_nothrow( _maxvalue.Value ), m_eValueUnit ); - } - - //-------------------------------------------------------------------- - ::sal_Int16 SAL_CALL ONumericControl::getDisplayUnit() throw (RuntimeException) - { - return VCLUnoHelper::ConvertToMeasurementUnit( getTypedControlWindow()->GetUnit(), 1 ); - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setDisplayUnit( ::sal_Int16 _displayunit ) throw (IllegalArgumentException, RuntimeException) - { - if ( ( _displayunit < MeasureUnit::MM_100TH ) || ( _displayunit > MeasureUnit::PERCENT ) ) - throw IllegalArgumentException(); - if ( ( _displayunit == MeasureUnit::MM_100TH ) - || ( _displayunit == MeasureUnit::MM_10TH ) - || ( _displayunit == MeasureUnit::INCH_1000TH ) - || ( _displayunit == MeasureUnit::INCH_100TH ) - || ( _displayunit == MeasureUnit::INCH_10TH ) - || ( _displayunit == MeasureUnit::PERCENT ) - ) - throw IllegalArgumentException(); - - sal_Int16 nDummyFactor = 1; - FieldUnit eFieldUnit = VCLUnoHelper::ConvertToFieldUnit( _displayunit, nDummyFactor ); - if ( nDummyFactor != 1 ) - // everything which survived the checks above should result in a factor of 1, i.e., - // it should have a direct counterpart as FieldUnit - throw RuntimeException(); - getTypedControlWindow()->MetricFormatter::SetUnit( eFieldUnit ); - } - - //-------------------------------------------------------------------- - ::sal_Int16 SAL_CALL ONumericControl::getValueUnit() throw (RuntimeException) - { - return VCLUnoHelper::ConvertToMeasurementUnit( m_eValueUnit, m_nFieldToUNOValueFactor ); - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setValueUnit( ::sal_Int16 _valueunit ) throw (RuntimeException) - { - if ( ( _valueunit < MeasureUnit::MM_100TH ) || ( _valueunit > MeasureUnit::PERCENT ) ) - throw IllegalArgumentException(); - m_eValueUnit = VCLUnoHelper::ConvertToFieldUnit( _valueunit, m_nFieldToUNOValueFactor ); - } - - //-------------------------------------------------------------------- - void SAL_CALL ONumericControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - if ( !_rValue.hasValue() ) - { - getTypedControlWindow()->SetText( String() ); - getTypedControlWindow()->SetEmptyFieldValue(); - } - else - { - double nValue( 0 ); - OSL_VERIFY( _rValue >>= nValue ); - long nControlValue = impl_apiValueToFieldValue_nothrow( nValue ); - getTypedControlWindow()->SetValue( nControlValue, m_eValueUnit ); - } - } - - //------------------------------------------------------------------ - long ONumericControl::impl_apiValueToFieldValue_nothrow( double _nApiValue ) const - { - long nControlValue = ImplCalcLongValue( _nApiValue, getTypedControlWindow()->GetDecimalDigits() ); - nControlValue /= m_nFieldToUNOValueFactor; - return nControlValue; - } - - //------------------------------------------------------------------ - double ONumericControl::impl_fieldValueToApiValue_nothrow( sal_Int64 _nFieldValue ) const - { - double nApiValue = ImplCalcDoubleValue( (long)_nFieldValue, getTypedControlWindow()->GetDecimalDigits() ); - nApiValue *= m_nFieldToUNOValueFactor; - return nApiValue; - } - - //------------------------------------------------------------------ - Any SAL_CALL ONumericControl::getValue() throw (RuntimeException) - { - Any aPropValue; - if ( getTypedControlWindow()->GetText().Len() ) - { - double nValue = impl_fieldValueToApiValue_nothrow( getTypedControlWindow()->GetValue( m_eValueUnit ) ); - aPropValue <<= nValue; - } - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL ONumericControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< double* >( NULL ) ); - } - - //================================================================== - //= OColorControl - //================================================================== - #define LB_DEFAULT_COUNT 20 - //------------------------------------------------------------------ - String MakeHexStr(sal_uInt32 nVal, sal_uInt32 nLength) - { - String aStr; - while (nVal>0) - { - char c=char(nVal & 0x000F); - nVal>>=4; - if (c<=9) c+='0'; - else c+='A'-10; - aStr.Insert(c,0); - } - while (aStr.Len() < nLength) aStr.Insert('0',0); - return aStr; - } - - //------------------------------------------------------------------ - OColorControl::OColorControl(Window* pParent, WinBits nWinStyle) - :OColorControl_Base( PropertyControlType::ColorListBox, pParent, nWinStyle ) - { - // initialize the color listbox - XColorTable* pColorTable = NULL; - SfxObjectShell* pDocSh = SfxObjectShell::Current(); - const SfxPoolItem* pItem = pDocSh ? pDocSh->GetItem( SID_COLOR_TABLE ) : NULL; - if ( pItem ) - { - DBG_ASSERT(pItem->ISA(SvxColorTableItem), "OColorControl::OColorControl: invalid color item!"); - pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable(); - } - - if ( !pColorTable ) - pColorTable = &XColorTable::GetStdColorTable(); - - - DBG_ASSERT(pColorTable, "OColorControl::OColorControl: no color table!"); - - if (pColorTable) - { - for (sal_uInt16 i = 0; i < pColorTable->Count(); ++i) - { - XColorEntry* pEntry = pColorTable->GetColor( i ); - getTypedControlWindow()->InsertEntry( pEntry->GetColor(), pEntry->GetName() ); - } - } - - getTypedControlWindow()->SetDropDownLineCount( LB_DEFAULT_COUNT ); - if ( ( nWinStyle & WB_READONLY ) != 0 ) - { - getTypedControlWindow()->SetReadOnly( sal_True ); - getTypedControlWindow()->Enable( sal_True ); - } - } - - //------------------------------------------------------------------ - void SAL_CALL OColorControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - if ( _rValue.hasValue() ) - { - ::com::sun::star::util::Color nColor = COL_TRANSPARENT; - if ( _rValue >>= nColor ) - { - ::Color aRgbCol((ColorData)nColor); - - getTypedControlWindow()->SelectEntry( aRgbCol ); - if ( !getTypedControlWindow()->IsEntrySelected( aRgbCol ) ) - { // the given color is not part of the list -> insert a new entry with the hex code of the color - String aStr = String::CreateFromAscii("0x"); - aStr += MakeHexStr(nColor,8); - getTypedControlWindow()->InsertEntry( aRgbCol, aStr ); - getTypedControlWindow()->SelectEntry( aRgbCol ); - } - } - else - { - ::rtl::OUString sNonColorValue; - if ( !( _rValue >>= sNonColorValue ) ) - throw IllegalTypeException(); - getTypedControlWindow()->SelectEntry( sNonColorValue ); - if ( !getTypedControlWindow()->IsEntrySelected( sNonColorValue ) ) - getTypedControlWindow()->SetNoSelection(); - } - } - else - getTypedControlWindow()->SetNoSelection(); - } - - //------------------------------------------------------------------ - Any SAL_CALL OColorControl::getValue() throw (RuntimeException) - { - Any aPropValue; - if ( getTypedControlWindow()->GetSelectEntryCount() > 0 ) - { - ::rtl::OUString sSelectedEntry = getTypedControlWindow()->GetSelectEntry(); - if ( m_aNonColorEntries.find( sSelectedEntry ) != m_aNonColorEntries.end() ) - aPropValue <<= sSelectedEntry; - else - { - ::Color aRgbCol = getTypedControlWindow()->GetSelectEntryColor(); - aPropValue <<= (::com::sun::star::util::Color)aRgbCol.GetColor(); - } - } - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL OColorControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< sal_Int32* >( NULL ) ); - } - - //------------------------------------------------------------------ - void SAL_CALL OColorControl::clearList() throw (RuntimeException) - { - getTypedControlWindow()->Clear(); - } - - //------------------------------------------------------------------ - void SAL_CALL OColorControl::prependListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry, 0 ); - m_aNonColorEntries.insert( NewEntry ); - } - - //------------------------------------------------------------------ - void SAL_CALL OColorControl::appendListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry ); - m_aNonColorEntries.insert( NewEntry ); - } - //------------------------------------------------------------------ - Sequence< ::rtl::OUString > SAL_CALL OColorControl::getListEntries( ) throw (RuntimeException) - { - if ( !m_aNonColorEntries.empty() ) - return Sequence< ::rtl::OUString >(&(*m_aNonColorEntries.begin()),m_aNonColorEntries.size()); - return Sequence< ::rtl::OUString >(); - } - - //------------------------------------------------------------------ - void OColorControl::modified() - { - OColorControl_Base::modified(); - - if ( !getTypedControlWindow()->IsTravelSelect() ) - // fire a commit - m_aImplControl.notifyModifiedValue(); - } - - //================================================================== - //= OListboxControl - //================================================================== - //------------------------------------------------------------------ - OListboxControl::OListboxControl( Window* pParent, WinBits nWinStyle) - :OListboxControl_Base( PropertyControlType::ListBox, pParent, nWinStyle ) - { - getTypedControlWindow()->SetDropDownLineCount( LB_DEFAULT_COUNT ); - if ( ( nWinStyle & WB_READONLY ) != 0 ) - { - getTypedControlWindow()->SetReadOnly( sal_True ); - getTypedControlWindow()->Enable( sal_True ); - } - } - - //------------------------------------------------------------------ - Any SAL_CALL OListboxControl::getValue() throw (RuntimeException) - { - ::rtl::OUString sControlValue( getTypedControlWindow()->GetSelectEntry() ); - - Any aPropValue; - if ( sControlValue.getLength() ) - aPropValue <<= sControlValue; - return aPropValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL OListboxControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); - } - - //------------------------------------------------------------------ - void SAL_CALL OListboxControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - if ( !_rValue.hasValue() ) - getTypedControlWindow()->SetNoSelection(); - else - { - ::rtl::OUString sSelection; - _rValue >>= sSelection; - - if ( !sSelection.equals( getTypedControlWindow()->GetSelectEntry() ) ) - getTypedControlWindow()->SelectEntry( sSelection ); - - if ( !getTypedControlWindow()->IsEntrySelected( sSelection ) ) - { - getTypedControlWindow()->InsertEntry( sSelection, 0 ); - getTypedControlWindow()->SelectEntry( sSelection ); - } - } - } - - //------------------------------------------------------------------ - void SAL_CALL OListboxControl::clearList() throw (RuntimeException) - { - getTypedControlWindow()->Clear(); - } - - //------------------------------------------------------------------ - void SAL_CALL OListboxControl::prependListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry, 0 ); - } - - //------------------------------------------------------------------ - void SAL_CALL OListboxControl::appendListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry ); - } - //------------------------------------------------------------------ - Sequence< ::rtl::OUString > SAL_CALL OListboxControl::getListEntries( ) throw (RuntimeException) - { - const sal_uInt16 nCount = getTypedControlWindow()->GetEntryCount(); - Sequence< ::rtl::OUString > aRet(nCount); - ::rtl::OUString* pIter = aRet.getArray(); - for (sal_uInt16 i = 0; i < nCount ; ++i,++pIter) - *pIter = getTypedControlWindow()->GetEntry(i); - - return aRet; - } - - //------------------------------------------------------------------ - void OListboxControl::modified() - { - OListboxControl_Base::modified(); - - if ( !getTypedControlWindow()->IsTravelSelect() ) - // fire a commit - m_aImplControl.notifyModifiedValue(); - } - - //================================================================== - //= OComboboxControl - //================================================================== - //------------------------------------------------------------------ - OComboboxControl::OComboboxControl( Window* pParent, WinBits nWinStyle) - :OComboboxControl_Base( PropertyControlType::ComboBox, pParent, nWinStyle ) - { - getTypedControlWindow()->SetDropDownLineCount( LB_DEFAULT_COUNT ); - getTypedControlWindow()->SetSelectHdl( LINK( this, OComboboxControl, OnEntrySelected ) ); - } - - //------------------------------------------------------------------ - void SAL_CALL OComboboxControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - ::rtl::OUString sText; - _rValue >>= sText; - getTypedControlWindow()->SetText( sText ); - } - - //------------------------------------------------------------------ - Any SAL_CALL OComboboxControl::getValue() throw (RuntimeException) - { - return makeAny( ::rtl::OUString( getTypedControlWindow()->GetText() ) ); - } - - //------------------------------------------------------------------ - Type SAL_CALL OComboboxControl::getValueType() throw (RuntimeException) - { - return ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); - } - - //------------------------------------------------------------------ - void SAL_CALL OComboboxControl::clearList() throw (RuntimeException) - { - getTypedControlWindow()->Clear(); - } - - //------------------------------------------------------------------ - void SAL_CALL OComboboxControl::prependListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry, 0 ); - } - - //------------------------------------------------------------------ - void SAL_CALL OComboboxControl::appendListEntry( const ::rtl::OUString& NewEntry ) throw (RuntimeException) - { - getTypedControlWindow()->InsertEntry( NewEntry ); - } - //------------------------------------------------------------------ - Sequence< ::rtl::OUString > SAL_CALL OComboboxControl::getListEntries( ) throw (RuntimeException) - { - const sal_uInt16 nCount = getTypedControlWindow()->GetEntryCount(); - Sequence< ::rtl::OUString > aRet(nCount); - ::rtl::OUString* pIter = aRet.getArray(); - for (sal_uInt16 i = 0; i < nCount ; ++i,++pIter) - *pIter = getTypedControlWindow()->GetEntry(i); - - return aRet; - } - - //------------------------------------------------------------------ - IMPL_LINK( OComboboxControl, OnEntrySelected, void*, /*_pNothing*/ ) - { - if ( !getTypedControlWindow()->IsTravelSelect() ) - // fire a commit - m_aImplControl.notifyModifiedValue(); - return 0L; - } - - //================================================================== - //= OMultilineFloatingEdit - //================================================================== - class OMultilineFloatingEdit : public FloatingWindow - { - private: - MultiLineEdit m_aImplEdit; - - protected: - virtual void Resize(); - - public: - OMultilineFloatingEdit(Window* _pParen); - MultiLineEdit* getEdit() { return &m_aImplEdit; } - - protected: - virtual long PreNotify(NotifyEvent& _rNEvt); - }; - - //------------------------------------------------------------------ - OMultilineFloatingEdit::OMultilineFloatingEdit(Window* _pParent) - :FloatingWindow(_pParent, WB_BORDER) - ,m_aImplEdit(this, WB_VSCROLL|WB_IGNORETAB|WB_NOBORDER) - { - m_aImplEdit.Show(); - } - - //------------------------------------------------------------------ - void OMultilineFloatingEdit::Resize() - { - m_aImplEdit.SetSizePixel(GetOutputSizePixel()); - } - - //------------------------------------------------------------------ - long OMultilineFloatingEdit::PreNotify(NotifyEvent& _rNEvt) - { - long nResult = sal_True; - - sal_uInt16 nSwitch = _rNEvt.GetType(); - if (EVENT_KEYINPUT == nSwitch) - { - const KeyCode& aKeyCode = _rNEvt.GetKeyEvent()->GetKeyCode(); - sal_uInt16 nKey = aKeyCode.GetCode(); - - if ( ( (KEY_RETURN == nKey) - && !aKeyCode.IsShift() - ) - || ( (KEY_UP == nKey) - && aKeyCode.IsMod2() - ) - ) - { - EndPopupMode(); - } - else - nResult=FloatingWindow::PreNotify(_rNEvt); - } - else - nResult=FloatingWindow::PreNotify(_rNEvt); - - return nResult; - } - - //================================================================== - //= DropDownEditControl_Base - //================================================================== - //------------------------------------------------------------------ - DropDownEditControl::DropDownEditControl( Window* _pParent, WinBits _nStyle ) - :DropDownEditControl_Base( _pParent, _nStyle ) - ,m_pFloatingEdit( NULL ) - ,m_pImplEdit( NULL ) - ,m_pDropdownButton( NULL ) - ,m_nOperationMode( eStringList ) - ,m_bDropdown( sal_False ) - { - SetCompoundControl( sal_True ); - - m_pImplEdit = new MultiLineEdit( this, WB_TABSTOP | WB_IGNORETAB | WB_NOBORDER | (_nStyle & WB_READONLY) ); - SetSubEdit( m_pImplEdit ); - m_pImplEdit->Show(); - - if ( _nStyle & WB_DROPDOWN ) - { - m_pDropdownButton = new PushButton( this, WB_NOLIGHTBORDER | WB_RECTSTYLE | WB_NOTABSTOP); - m_pDropdownButton->SetSymbol(SYMBOL_SPIN_DOWN); - m_pDropdownButton->SetClickHdl( LINK( this, DropDownEditControl, DropDownHdl ) ); - m_pDropdownButton->Show(); - } - - m_pFloatingEdit = new OMultilineFloatingEdit(this); //FloatingWindow - - m_pFloatingEdit->SetPopupModeEndHdl( LINK( this, DropDownEditControl, ReturnHdl ) ); - m_pFloatingEdit->getEdit()->SetReadOnly( ( _nStyle & WB_READONLY ) != 0 ); - } - - //------------------------------------------------------------------ - void DropDownEditControl::setControlHelper( ControlHelper& _rControlHelper ) - { - DropDownEditControl_Base::setControlHelper( _rControlHelper ); - m_pFloatingEdit->getEdit()->SetModifyHdl( LINK( &_rControlHelper, ControlHelper, ModifiedHdl ) ); - m_pImplEdit->SetGetFocusHdl( LINK( &_rControlHelper, ControlHelper, GetFocusHdl ) ); - m_pImplEdit->SetModifyHdl( LINK( &_rControlHelper, ControlHelper, ModifiedHdl ) ); - m_pImplEdit->SetLoseFocusHdl( LINK( &_rControlHelper, ControlHelper, LoseFocusHdl ) ); - } - - //------------------------------------------------------------------ - DropDownEditControl::~DropDownEditControl() - { - { - ::std::auto_ptr<Window> aTemp(m_pFloatingEdit); - m_pFloatingEdit = NULL; - } - { - ::std::auto_ptr<Window> aTemp(m_pImplEdit); - SetSubEdit( NULL ); - m_pImplEdit = NULL; - } - { - ::std::auto_ptr<Window> aTemp(m_pDropdownButton); - m_pDropdownButton = NULL; - } - } - - //------------------------------------------------------------------ - void DropDownEditControl::Resize() - { - ::Size aOutSz = GetOutputSizePixel(); - - if (m_pDropdownButton!=NULL) - { - long nSBWidth = GetSettings().GetStyleSettings().GetScrollBarSize(); - nSBWidth = CalcZoom( nSBWidth ); - m_pImplEdit->SetPosSizePixel( 0, 1, aOutSz.Width() - nSBWidth, aOutSz.Height()-2 ); - m_pDropdownButton->SetPosSizePixel( aOutSz.Width() - nSBWidth, 0, nSBWidth, aOutSz.Height() ); - } - else - m_pImplEdit->SetPosSizePixel( 0, 1, aOutSz.Width(), aOutSz.Height()-2 ); - } - - //------------------------------------------------------------------ - long DropDownEditControl::PreNotify( NotifyEvent& rNEvt ) - { - long nResult = 1; - - if (rNEvt.GetType() == EVENT_KEYINPUT) - { - const KeyCode& aKeyCode = rNEvt.GetKeyEvent()->GetKeyCode(); - sal_uInt16 nKey = aKeyCode.GetCode(); - - if ( nKey == KEY_RETURN && !aKeyCode.IsShift() ) - { - if ( m_pHelper ) - { - m_pHelper->LoseFocusHdl( m_pImplEdit ); - m_pHelper->activateNextControl(); - } - } - else if ( nKey == KEY_DOWN && aKeyCode.IsMod2() ) - { - Invalidate(); - ShowDropDown( sal_True ); - } - else if ( KEYGROUP_CURSOR == aKeyCode.GetGroup() - || nKey == KEY_HELP - || KEYGROUP_FKEYS == aKeyCode.GetGroup() - || m_nOperationMode == eMultiLineText - ) - { - nResult = DropDownEditControl_Base::PreNotify( rNEvt ); - } - else if ( m_nOperationMode == eStringList ) - { - Selection aSel = m_pImplEdit->GetSelection(); - if ( aSel.Min() != aSel.Max() ) - { - aSel.Min() = FindPos( aSel.Min() ); - aSel.Max() = FindPos( aSel.Max() ); - } - else - { - aSel.Min() = FindPos( aSel.Min() ); - aSel.Max() = aSel.Min(); - } - Invalidate(); - ShowDropDown( sal_True ); - m_pFloatingEdit->getEdit()->GrabFocus(); - m_pFloatingEdit->getEdit()->SetSelection( aSel ); - Window* pFocusWin = Application::GetFocusWindow(); - pFocusWin->KeyInput( *rNEvt.GetKeyEvent() ); - } - } - else - nResult = DropDownEditControl_Base::PreNotify(rNEvt); - - return nResult; - } - - //------------------------------------------------------------------ - namespace - { - //.............................................................. - StlSyntaxSequence< ::rtl::OUString > lcl_convertMultiLineToList( const String& _rCompsedTextWithLineBreaks ) - { - xub_StrLen nLines( _rCompsedTextWithLineBreaks.GetTokenCount( '\n' ) ); - StlSyntaxSequence< ::rtl::OUString > aStrings( nLines ); - StlSyntaxSequence< ::rtl::OUString >::iterator stringItem = aStrings.begin(); - for ( xub_StrLen token = 0; token < nLines; ++token, ++stringItem ) - *stringItem = _rCompsedTextWithLineBreaks.GetToken( token, '\n' ); - return aStrings; - } - - String lcl_convertListToMultiLine( const StlSyntaxSequence< ::rtl::OUString >& _rStrings ) - { - String sMultiLineText; - for ( StlSyntaxSequence< ::rtl::OUString >::const_iterator item = _rStrings.begin(); - item != _rStrings.end(); - ) - { - sMultiLineText += String( *item ); - if ( ++item != _rStrings.end() ) - sMultiLineText += '\n'; - } - return sMultiLineText; - } - - //.............................................................. - String lcl_convertListToDisplayText( const StlSyntaxSequence< ::rtl::OUString >& _rStrings ) - { - ::rtl::OUStringBuffer aComposed; - for ( StlSyntaxSequence< ::rtl::OUString >::const_iterator strings = _rStrings.begin(); - strings != _rStrings.end(); - ++strings - ) - { - if ( strings != _rStrings.begin() ) - aComposed.append( (sal_Unicode)';' ); - aComposed.append( (sal_Unicode)'\"' ); - aComposed.append( *strings ); - aComposed.append( (sal_Unicode)'\"' ); - } - return aComposed.makeStringAndClear(); - } - } - - //------------------------------------------------------------------ - #define STD_HEIGHT 100 - sal_Bool DropDownEditControl::ShowDropDown( sal_Bool bShow ) - { - if (bShow) - { - ::Point aMePos= GetPosPixel(); - aMePos = GetParent()->OutputToScreenPixel( aMePos ); - ::Size aSize=GetSizePixel(); - ::Rectangle aRect(aMePos,aSize); - aSize.Height() = STD_HEIGHT; - m_pFloatingEdit->SetOutputSizePixel(aSize); - m_pFloatingEdit->StartPopupMode( aRect, FLOATWIN_POPUPMODE_DOWN ); - - m_pFloatingEdit->Show(); - m_pFloatingEdit->getEdit()->GrabFocus(); - m_pFloatingEdit->getEdit()->SetSelection(Selection(m_pFloatingEdit->getEdit()->GetText().Len())); - m_bDropdown=sal_True; - if ( m_nOperationMode == eMultiLineText ) - m_pFloatingEdit->getEdit()->SetText( m_pImplEdit->GetText() ); - m_pImplEdit->SetText(String()); - } - else - { - m_pFloatingEdit->Hide(); - m_pFloatingEdit->Invalidate(); - m_pFloatingEdit->Update(); - - // transfer the text from the floating edit to our own edit - String sDisplayText( m_pFloatingEdit->getEdit()->GetText() ); - if ( m_nOperationMode == eStringList ) - sDisplayText = lcl_convertListToDisplayText( lcl_convertMultiLineToList( sDisplayText ) ); - - m_pImplEdit->SetText( sDisplayText ); - GetParent()->Invalidate( INVALIDATE_CHILDREN ); - m_bDropdown = sal_False; - m_pImplEdit->GrabFocus(); - } - return m_bDropdown; - - } - - //------------------------------------------------------------------ - long DropDownEditControl::FindPos(long nSinglePos) - { - long nPos=0; - long nDiff=0; - String aOutput; - String aStr=m_pFloatingEdit->getEdit()->GetText(); - String aStr1 = GetText(); - - if ((nSinglePos == 0) || (nSinglePos == aStr1.Len())) - { - return nSinglePos; - } - - if (aStr.Len()>0) - { - sal_Int32 nCount = aStr.GetTokenCount('\n'); - - String aInput = aStr.GetToken(0,'\n' ); - - if (aInput.Len()>0) - { - aOutput+='\"'; - nDiff++; - aOutput+=aInput; - aOutput+='\"'; - } - - if (nSinglePos <= aOutput.Len()) - { - nPos=nSinglePos-nDiff; - } - else - { - for (sal_Int32 i=1; i<nCount; ++i) - { - aInput=aStr.GetToken((sal_uInt16)i, '\n'); - if (aInput.Len()>0) - { - aOutput += ';'; - aOutput += '\"'; - nDiff += 2; - aOutput += aInput; - aOutput += '\"'; - - if (nSinglePos <= aOutput.Len()) - { - nPos=nSinglePos-nDiff; - break; - } - } - } - } - } - return nPos; - } - - //------------------------------------------------------------------ - IMPL_LINK( DropDownEditControl, ReturnHdl, OMultilineFloatingEdit*, /*pMEd*/) - { - - String aStr = m_pFloatingEdit->getEdit()->GetText(); - String aStr2 = GetText(); - ShowDropDown(sal_False); - - if (aStr!=aStr2 || ( m_nOperationMode == eStringList ) ) - { - if ( m_pHelper ) - m_pHelper->notifyModifiedValue(); - } - - return 0; - } - - //------------------------------------------------------------------ - IMPL_LINK( DropDownEditControl, DropDownHdl, PushButton*, /*pPb*/ ) - { - ShowDropDown(!m_bDropdown); - return 0; - } - - //------------------------------------------------------------------ - void DropDownEditControl::SetStringListValue( const StlSyntaxSequence< ::rtl::OUString >& _rStrings ) - { - SetText( lcl_convertListToDisplayText( _rStrings ) ); - m_pFloatingEdit->getEdit()->SetText( lcl_convertListToMultiLine( _rStrings ) ); - } - - //------------------------------------------------------------------ - StlSyntaxSequence< ::rtl::OUString > DropDownEditControl::GetStringListValue() const - { - return lcl_convertMultiLineToList( m_pFloatingEdit->getEdit()->GetText() ); - } - - //------------------------------------------------------------------ - void DropDownEditControl::SetTextValue( const ::rtl::OUString& _rText ) - { - OSL_PRECOND( m_nOperationMode == eMultiLineText, "DropDownEditControl::SetTextValue: illegal call!" ); - - m_pFloatingEdit->getEdit()->SetText( _rText ); - SetText( _rText ); - } - - //------------------------------------------------------------------ - ::rtl::OUString DropDownEditControl::GetTextValue() const - { - OSL_PRECOND( m_nOperationMode == eMultiLineText, "DropDownEditControl::GetTextValue: illegal call!" ); - return GetText(); - } - - //================================================================== - //= OMultilineEditControl - //================================================================== - //------------------------------------------------------------------ - OMultilineEditControl::OMultilineEditControl( Window* pParent, MultiLineOperationMode _eMode, WinBits nWinStyle ) - :OMultilineEditControl_Base( _eMode == eMultiLineText ? PropertyControlType::MultiLineTextField : PropertyControlType::StringListField - , pParent - , ( nWinStyle | WB_DIALOGCONTROL ) & ( ~WB_READONLY | ~WB_DROPDOWN ) - , false ) - { - getTypedControlWindow()->setOperationMode( _eMode ); - } - - //------------------------------------------------------------------ - void SAL_CALL OMultilineEditControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) - { - impl_checkDisposed_throw(); - - switch ( getTypedControlWindow()->getOperationMode() ) - { - case eMultiLineText: - { - ::rtl::OUString sText; - if ( !( _rValue >>= sText ) && _rValue.hasValue() ) - throw IllegalTypeException(); - getTypedControlWindow()->SetTextValue( sText ); - } - break; - case eStringList: - { - Sequence< ::rtl::OUString > aStringLines; - if ( !( _rValue >>= aStringLines ) && _rValue.hasValue() ) - throw IllegalTypeException(); - getTypedControlWindow()->SetStringListValue( aStringLines ); - } - break; - } - } - - //------------------------------------------------------------------ - Any SAL_CALL OMultilineEditControl::getValue() throw (RuntimeException) - { - impl_checkDisposed_throw(); - - Any aValue; - switch ( getTypedControlWindow()->getOperationMode() ) - { - case eMultiLineText: - aValue <<= getTypedControlWindow()->GetTextValue(); - break; - case eStringList: - aValue <<= getTypedControlWindow()->GetStringListValue(); - break; - } - return aValue; - } - - //------------------------------------------------------------------ - Type SAL_CALL OMultilineEditControl::getValueType() throw (RuntimeException) - { - if ( getTypedControlWindow()->getOperationMode() == eMultiLineText ) - return ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); - return ::getCppuType( static_cast< Sequence< ::rtl::OUString >* >( NULL ) ); - } - -//............................................................................ -} // namespace pcr -//............................................................................ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |