summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/control/FieldDescControl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/control/FieldDescControl.cxx')
-rw-r--r--dbaccess/source/ui/control/FieldDescControl.cxx1900
1 files changed, 0 insertions, 1900 deletions
diff --git a/dbaccess/source/ui/control/FieldDescControl.cxx b/dbaccess/source/ui/control/FieldDescControl.cxx
deleted file mode 100644
index 30d22b96e..000000000
--- a/dbaccess/source/ui/control/FieldDescControl.cxx
+++ /dev/null
@@ -1,1900 +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_dbaccess.hxx"
-
-#define ITEMID_HORJUSTIFY SID_ATTR_ALIGN_HOR_JUSTIFY
-#define ITEMID_VERJUSTIFY SID_ATTR_ALIGN_VER_JUSTIFY
-#define ITEMID_LINEBREAK SID_ATTR_ALIGN_LINEBREAK
-#define ITEMID_MARGIN SID_ATTR_ALIGN_MARGIN
-
-#include "FieldDescControl.hxx"
-#include "FieldControls.hxx"
-#include <tools/diagnose_ex.h>
-#include "TableDesignHelpBar.hxx"
-#include <vcl/scrbar.hxx>
-#include <vcl/button.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/msgbox.hxx>
-#include <vector>
-#include "FieldDescriptions.hxx"
-#include "dlgattr.hxx"
-#include <svx/numfmtsh.hxx>
-#include <svx/svxids.hrc>
-#include <svx/algitem.hxx>
-#include <svl/itempool.hxx>
-#define _ZFORLIST_DECLARE_TABLE // ohne das bekomme ich einen Compiler-Fehler in <svl/zforlist.hxx>
-#include <svl/zforlist.hxx>
-#include <svl/rngitem.hxx>
-#include <svl/intitem.hxx>
-#include <svl/numuno.hxx>
-#include <svtools/transfer.hxx>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/util/NumberFormat.hpp>
-#include <com/sun/star/util/XNumberFormatPreviewer.hpp>
-#include <com/sun/star/util/XNumberFormatTypes.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include "QEnumTypes.hxx"
-#include "dbaccess_helpid.hrc"
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbconversion.hxx>
-#include <comphelper/numbers.hxx>
-#include "UITools.hxx"
-#include <memory>
-#include "dbu_control.hrc"
-#include "dbu_tbl.hrc"
-#include <osl/diagnose.h>
-
-
-using namespace dbaui;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::util;
-
-//==================================================================
-
-// fuer die Controls auf der OFieldDescGenPage
-#define CONTROL_SPACING_X 18 // 6
-#define CONTROL_SPACING_Y 4
-#define CONTROL_WIDTH_1 160 // 100
-#define CONTROL_WIDTH_2 100 // 60
-#define CONTROL_WIDTH_3 250
-#define CONTROL_WIDTH_4 (CONTROL_WIDTH_3 - 20 - 5)
-
-#define SBA_DEF_RANGEFORMAT (100 + 143) // RangeItem
-#define SBA_DEF_FMTVALUE (100 + 144) // SfxULONG, Format
-#define SBA_ATTR_ALIGN_HOR_JUSTIFY (100 + 145) // SvxHorJustifyItem
-
-#define HSCROLL_STEP 20
-
-
-namespace
-{
-
- template< typename T1, typename T2> void lcl_HideAndDeleteControl(short& _nPos,T1** _pControl,T2** _pControlText)
- {
- if ( *_pControl )
- {
- --_nPos;
- (*_pControl)->Hide();
- (*_pControlText)->Hide();
- delete *_pControl;
- delete *_pControlText;
- (*_pControl) = NULL;
- (*_pControlText) = NULL;
- }
- }
-
-}
-
-//==================================================================
-// class OFieldDescControl
-//==================================================================
-
-DBG_NAME(OFieldDescControl)
-
-//==================================================================
-OFieldDescControl::OFieldDescControl( Window* pParent, const ResId& rResId, OTableDesignHelpBar* pHelpBar)
- :TabPage( pParent, rResId )
- ,pHelp( pHelpBar )
- ,pLastFocusWindow(NULL)
- ,m_pActFocusWindow(NULL)
- ,pDefaultText(NULL)
- ,pRequiredText(NULL)
- ,pAutoIncrementText(NULL)
- ,pTextLenText(NULL)
- ,pNumTypeText(NULL)
- ,pLengthText(NULL)
- ,pScaleText(NULL)
- ,pFormatText(NULL)
- ,pBoolDefaultText(NULL)
- ,m_pColumnNameText(NULL)
- ,m_pTypeText(NULL)
- ,m_pAutoIncrementValueText(NULL)
- ,pRequired(NULL)
- ,pNumType(NULL)
- ,pAutoIncrement(NULL)
- ,pDefault(NULL)
- ,pTextLen(NULL)
- ,pLength(NULL)
- ,pScale(NULL)
- ,pFormatSample(NULL)
- ,pBoolDefault(NULL)
- ,m_pColumnName(NULL)
- ,m_pType(NULL)
- ,m_pAutoIncrementValue(NULL)
- ,pFormat(NULL)
- ,m_pVertScroll( NULL )
- ,m_pHorzScroll( NULL )
- ,m_pPreviousType()
- ,nCurChildId(1)
- ,m_nPos(-1)
- ,aYes(ModuleRes(STR_VALUE_YES))
- ,aNo(ModuleRes(STR_VALUE_NO))
- ,m_nOldVThumb( 0 )
- ,m_nOldHThumb( 0 )
- ,m_nWidth(50)
- ,nDelayedGrabFocusEvent(0)
- ,m_bAdded(sal_False)
- ,m_bRightAligned(false)
- ,pActFieldDescr(NULL)
-{
- DBG_CTOR(OFieldDescControl,NULL);
-
- Contruct();
-}
-//------------------------------------------------------------------------------
-OFieldDescControl::OFieldDescControl( Window* pParent, OTableDesignHelpBar* pHelpBar )
- :TabPage( pParent, WB_3DLOOK | WB_DIALOGCONTROL )
- ,pHelp( pHelpBar )
- ,pLastFocusWindow(NULL)
- ,m_pActFocusWindow(NULL)
- ,pDefaultText(NULL)
- ,pRequiredText(NULL)
- ,pAutoIncrementText(NULL)
- ,pTextLenText(NULL)
- ,pNumTypeText(NULL)
- ,pLengthText(NULL)
- ,pScaleText(NULL)
- ,pFormatText(NULL)
- ,pBoolDefaultText(NULL)
- ,m_pColumnNameText(NULL)
- ,m_pTypeText(NULL)
- ,m_pAutoIncrementValueText(NULL)
- ,pRequired(NULL)
- ,pNumType(NULL)
- ,pAutoIncrement(NULL)
- ,pDefault(NULL)
- ,pTextLen(NULL)
- ,pLength(NULL)
- ,pScale(NULL)
- ,pFormatSample(NULL)
- ,pBoolDefault(NULL)
- ,m_pColumnName(NULL)
- ,m_pType(NULL)
- ,m_pAutoIncrementValue(NULL)
- ,pFormat(NULL)
- ,m_pVertScroll( NULL )
- ,m_pHorzScroll( NULL )
- ,m_pPreviousType()
- ,nCurChildId(1)
- ,m_nPos(-1)
- ,aYes(ModuleRes(STR_VALUE_YES))
- ,aNo(ModuleRes(STR_VALUE_NO))
- ,m_nOldVThumb( 0 )
- ,m_nOldHThumb( 0 )
- ,m_nWidth(50)
- ,nDelayedGrabFocusEvent(0)
- ,m_bAdded(sal_False)
- ,m_bRightAligned(false)
- ,pActFieldDescr(NULL)
-{
- DBG_CTOR(OFieldDescControl,NULL);
- Contruct();
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::Contruct()
-{
- m_pVertScroll = new ScrollBar(this, WB_VSCROLL | WB_REPEAT | WB_DRAG);
- m_pHorzScroll = new ScrollBar(this, WB_HSCROLL | WB_REPEAT | WB_DRAG);
- m_pVertScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pHorzScroll->SetScrollHdl(LINK(this, OFieldDescControl, OnScroll));
- m_pVertScroll->Show();
- m_pHorzScroll->Show();
-
- m_pVertScroll->EnableClipSiblings();
- m_pHorzScroll->EnableClipSiblings();
-
- m_pVertScroll->SetLineSize(1);
- m_pVertScroll->SetPageSize(1);
- m_pHorzScroll->SetLineSize(1);
- m_pHorzScroll->SetPageSize(1);
-
- m_nOldVThumb = m_nOldHThumb = 0;
-}
-
-//------------------------------------------------------------------------------
-OFieldDescControl::~OFieldDescControl()
-{
- DBG_DTOR(OFieldDescControl,NULL);
-
- {
- ::std::auto_ptr<Window> aTemp(m_pVertScroll);
- m_pVertScroll = NULL;
- }
- {
- ::std::auto_ptr<Window> aTemp(m_pHorzScroll);
- m_pHorzScroll = NULL;
- }
- if ( m_bAdded )
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
- pLastFocusWindow = NULL;
-
- //////////////////////////////////////////////////////////////////////
- // Childs zerstoeren
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpNumType );
- DeactivateAggregate( tpScale );
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpBoolDefault );
- DeactivateAggregate( tpColumnName );
- DeactivateAggregate( tpType );
- DeactivateAggregate( tpAutoIncrementValue );
-
- if(nDelayedGrabFocusEvent)
- Application::RemoveUserEvent(nDelayedGrabFocusEvent);
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::BoolStringPersistent(const String& rUIString) const
-{
- static String aZero('0');
- static String aOne('1');
-
- if (rUIString == aNo)
- return aZero;
- if (rUIString == aYes)
- return aOne;
- return String();
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::BoolStringUI(const String& rPersistentString) const
-{
- static String aZero('0');
- static String aOne('1');
- static String aNone(ModuleRes(STR_VALUE_NONE));
-
- // aeltere Versionen haben eventuell einen sprachabhaengigen String als Default gespeichert
- if (rPersistentString.Equals(aYes) || rPersistentString.Equals(aNo))
- return rPersistentString;
-
- if (rPersistentString == aZero)
- return aNo;
- if (rPersistentString == aOne)
- return aYes;
-
- return aNone;
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::Init()
-{
- Reference< ::com::sun::star::util::XNumberFormatter > xFormatter = GetFormatter();
- ::dbaui::setEvalDateFormatForFormatter(xFormatter);
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnScroll, ScrollBar*, /*pBar*/)
-{
- ScrollAllAggregates();
- return 0;
-}
-// -----------------------------------------------------------------------------
-namespace
-{
- void getMaxXPosition(Window* _pWindow,long& _rnMaxXPosition)
- {
- if (_pWindow)
- {
- long nTemp = _pWindow->GetSizePixel().Width() + _pWindow->GetPosPixel().X();
- _rnMaxXPosition = ::std::max(_rnMaxXPosition, nTemp);
- }
- }
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::CheckScrollBars()
-{
- // ein paar Berechnungen zur neuen Position der ScrollBars
- Size szOverallSize = GetSizePixel();
- long nHScrollHeight = m_pHorzScroll->GetSizePixel().Height();
- long nVScrollWidth = m_pVertScroll->GetSizePixel().Width();
-
- long nNewHWidth = szOverallSize.Width() - nVScrollWidth;
- long nNewVHeight = szOverallSize.Height() - nHScrollHeight;
-
- sal_Bool bNeedHScrollBar(sal_False), bNeedVScrollBar(sal_False);
-
- // die Bereiche anpassen
- // brauche ich ScrollBars eigentlich ?
- // horizontal :
- long lMaxXPosition = 0;
- Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue};
- for (sal_uInt16 i=0; i < SAL_N_ELEMENTS(ppAggregates); ++i)
- getMaxXPosition(ppAggregates[i],lMaxXPosition);
-
- if (m_pHorzScroll)
- lMaxXPosition += m_pHorzScroll->GetThumbPos() * HSCROLL_STEP;
-
- long lMaxXAvailable = szOverallSize.Width();
- bNeedHScrollBar = lMaxXPosition > lMaxXAvailable;
- // aendert sich vielleicht noch
-
- // vertikal
- // wieviel Controls habe ich
- sal_uInt16 nActive = CountActiveAggregates();
- // welches ist das letzte, was ganz drauf passt ?
- sal_uInt16 nLastVisible;
- const sal_Int32 nControlHeight = GetMaxControlHeight();
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- if (bNeedHScrollBar)
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight));
- else
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y) / (nControl_Spacing_y + nControlHeight));
- bNeedVScrollBar = nActive>nLastVisible;
-
- if (bNeedVScrollBar)
- {
- // in die urspruengliche Berechnung von lMaxXAvailable ist nicht mit eingegangen, dass ich eine VScrollBar habe, also muss ich
- // das nachholen
- lMaxXAvailable -= nVScrollWidth;
- if (!bNeedHScrollBar && (lMaxXPosition > lMaxXAvailable))
- {
- // durch die vertikale brauche ich jetzt ploetzlich doch eine horizontale
- bNeedHScrollBar = sal_True;
- // nLastVisible anpassen
- nLastVisible = static_cast<sal_uInt16>((szOverallSize.Height() - nControl_Spacing_y - nHScrollHeight) / (nControl_Spacing_y + nControlHeight));
- // bNeedVScrollBar aendert sich nicht : es ist schon auf sal_True und nLastVisible wird hoechstens kleiner
- }
- }
-
- // jetzt kann ich sie wirklich positionieren und ihre Parameter setzen
- if (bNeedVScrollBar)
- {
- m_pVertScroll->Show();
- m_pVertScroll->SetRangeMax(nActive - nLastVisible);
-
- m_pVertScroll->SetPosSizePixel( Point(nNewHWidth, 0), Size(nVScrollWidth, szOverallSize.Height()) );
- }
- else
- {
- m_pVertScroll->Hide();
- m_pVertScroll->SetRangeMax(0);
- m_pVertScroll->SetThumbPos(0);
- }
-
- if (bNeedHScrollBar)
- {
- m_pHorzScroll->Show();
- m_pHorzScroll->SetRangeMax((lMaxXPosition - lMaxXAvailable + HSCROLL_STEP - 1 )/HSCROLL_STEP);
-
- m_pHorzScroll->SetPosSizePixel( Point(0, nNewVHeight), Size(bNeedVScrollBar ? nNewHWidth : szOverallSize.Width(), nHScrollHeight) );
- }
- else
- {
- m_pHorzScroll->Hide();
- m_pHorzScroll->SetRangeMax(0);
- m_pHorzScroll->SetThumbPos(0);
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::Resize()
-{
- CheckScrollBars();
- ScrollAllAggregates();
-}
-
-//------------------------------------------------------------------------------
-inline void OFieldDescControl::ScrollAggregate(Control* pText, Control* pInput, Control* pButton, long nDeltaX, long nDeltaY)
-{
- if (!pText)
- return;
- pText->SetPosPixel(pText->GetPosPixel() + Point(nDeltaX, nDeltaY));
- pInput->SetPosPixel(pInput->GetPosPixel() + Point(nDeltaX, nDeltaY));
- if (pButton)
- pButton->SetPosPixel(pButton->GetPosPixel() + Point(nDeltaX, nDeltaY));
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::ScrollAllAggregates()
-{
- long nDeltaX = 0, nDeltaY = 0;
- if (m_nOldHThumb != m_pHorzScroll->GetThumbPos())
- {
- nDeltaX = (m_nOldHThumb - m_pHorzScroll->GetThumbPos()) * HSCROLL_STEP;
- m_nOldHThumb = m_pHorzScroll->GetThumbPos();
- }
-
- if (m_nOldVThumb != m_pVertScroll->GetThumbPos())
- {
- const sal_Int32 nControlHeight = GetMaxControlHeight();
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- nDeltaY = (m_nOldVThumb - m_pVertScroll->GetThumbPos()) * (nControl_Spacing_y + nControlHeight);
- m_nOldVThumb = m_pVertScroll->GetThumbPos();
- }
-
- if (nDeltaX || nDeltaY)
- {
- Control* ppAggregates[] = { pRequired, pNumType
- , pAutoIncrement, pDefault
- , pTextLen, pLength
- , pScale, m_pColumnName
- , m_pType, m_pAutoIncrementValue};
- Control* ppAggregatesText[] = { pRequiredText, pNumTypeText
- , pAutoIncrementText, pDefaultText
- , pTextLenText, pLengthText
- , pScaleText, m_pColumnNameText
- , m_pTypeText, m_pAutoIncrementValueText};
- OSL_ENSURE(SAL_N_ELEMENTS(ppAggregates) == SAL_N_ELEMENTS(ppAggregatesText),"Lists are not identical!");
-
- for (sal_uInt16 i=0; i < SAL_N_ELEMENTS(ppAggregates); ++i)
- ScrollAggregate(ppAggregatesText[i],ppAggregates[i],NULL,nDeltaX, nDeltaY);
-
- ScrollAggregate(pFormatText,pFormatSample,pFormat,nDeltaX, nDeltaY);
- }
-}
-
-//------------------------------------------------------------------------------
-sal_uInt16 OFieldDescControl::CountActiveAggregates() const
-{
- Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue};
- sal_uInt16 nVisibleAggregates = 0;
- for (sal_uInt16 i=0; i < SAL_N_ELEMENTS(ppAggregates); ++i)
- if (ppAggregates[i])
- ++nVisibleAggregates;
- return nVisibleAggregates;
-}
-//------------------------------------------------------------------------------
-sal_Int32 OFieldDescControl::GetMaxControlHeight() const
-{
- Size aHeight;
- Control* ppAggregates[] = { pRequired, pNumType, pAutoIncrement, pDefault, pTextLen, pLength, pScale, pFormat, m_pColumnName, m_pType,m_pAutoIncrementValue};
- for (sal_uInt16 i=0; i < SAL_N_ELEMENTS(ppAggregates); ++i)
- {
- if ( ppAggregates[i] )
- {
- const Size aTemp( ppAggregates[i]->GetOptimalSize(WINDOWSIZE_PREFERRED) );
- if ( aTemp.Height() > aHeight.Height() )
- aHeight.Height() = aTemp.Height();
- }
- }
-
- return aHeight.Height();
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetReadOnly( sal_Bool bReadOnly )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Controls enablen/disablen
- Control* ppAggregates[] = { pRequired, pNumType
- , pAutoIncrement, pDefault
- , pTextLen, pLength
- , pScale, m_pColumnName
- , m_pType, m_pAutoIncrementValue
- , pFormat};
- Control* ppAggregatesText[] = { pRequiredText, pNumTypeText
- , pAutoIncrementText, pDefaultText
- , pTextLenText, pLengthText
- , pScaleText, m_pColumnNameText
- , m_pTypeText, m_pAutoIncrementValueText
- , pFormatText};
-
- OSL_ENSURE(SAL_N_ELEMENTS(ppAggregates) == SAL_N_ELEMENTS(ppAggregatesText),"Lists are not identical!");
-
- for (sal_uInt16 i=0; i < SAL_N_ELEMENTS(ppAggregates); ++i)
- {
- if ( ppAggregatesText[i] )
- ppAggregatesText[i]->Enable( !bReadOnly );
- if ( ppAggregates[i] )
- ppAggregates[i]->Enable( !bReadOnly );
- }
-}
-
-//------------------------------------------------------------------------------
-String OFieldDescControl::GetControlText( sal_uInt16 nControlId )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Texte der Controls auslesen
- switch( nControlId )
- {
- case FIELD_PROPERTY_BOOL_DEFAULT:
- if (pBoolDefault)
- return pBoolDefault->GetSelectEntry();
- break;
- case FIELD_PROPERTY_DEFAULT:
- if (pDefault)
- return pDefault->GetText();
- break;
- case FIELD_PROPERTY_REQUIRED:
- if (pRequired)
- return pRequired->GetSelectEntry();
- break;
- case FIELD_PROPERTY_TEXTLEN:
- if (pTextLen)
- return String::CreateFromInt64(pTextLen->GetValue());
- case FIELD_PROPERTY_NUMTYPE:
- if (pNumType)
- return pNumType->GetSelectEntry();
- break;
- case FIELD_PROPERTY_AUTOINC:
- if (pAutoIncrement)
- return pAutoIncrement->GetSelectEntry();
- break;
- case FIELD_PROPERTY_LENGTH:
- if (pLength)
- return pLength->GetText();
- break;
- case FIELD_PROPERTY_SCALE:
- if (pScale)
- return pScale->GetText();
- break;
- case FIELD_PROPERTY_FORMAT:
- if (pFormatSample)
- return pFormatSample->GetText();
- break;
- case FIELD_PRPOERTY_COLUMNNAME:
- if(m_pColumnName)
- return m_pColumnName->GetText();
- case FIELD_PRPOERTY_TYPE:
- if(m_pType)
- return m_pType->GetSelectEntry();
- break;
- case FIELD_PRPOERTY_AUTOINCREMENT:
- if(m_pAutoIncrementValue)
- return m_pAutoIncrementValue->GetText();
- }
-
- return String();
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetControlText( sal_uInt16 nControlId, const String& rText )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Texte der Controls setzen
- switch( nControlId )
- {
- case FIELD_PROPERTY_BOOL_DEFAULT:
- if (pBoolDefault)
- {
- String sOld = pBoolDefault->GetSelectEntry();
- pBoolDefault->SelectEntry(rText);
- if (!sOld.Equals(rText))
- LINK(this, OFieldDescControl, ChangeHdl).Call(pBoolDefault);
- }
- break;
- case FIELD_PROPERTY_DEFAULT:
- if (pDefault)
- {
- pDefault->SetText(rText);
- UpdateFormatSample(pActFieldDescr);
- }
- break;
-
- case FIELD_PROPERTY_REQUIRED:
- if (pRequired)
- pRequired->SelectEntry(rText);
- break;
-
-
- case FIELD_PROPERTY_TEXTLEN:
- if (pTextLen)
- pTextLen->SetText(rText);
- break;
-
- case FIELD_PROPERTY_NUMTYPE:
- if (pNumType)
- pNumType->SelectEntry(rText);
- break;
-
- case FIELD_PROPERTY_AUTOINC:
- if (pAutoIncrement)
- {
- String sOld = pAutoIncrement->GetSelectEntry();
- pAutoIncrement->SelectEntry(rText);
- if (!sOld.Equals(rText))
- LINK(this, OFieldDescControl, ChangeHdl).Call(pAutoIncrement);
- }
- break;
-
- case FIELD_PROPERTY_LENGTH:
- if (pLength)
- pLength->SetText(rText);
- break;
-
- case FIELD_PROPERTY_SCALE:
- if (pScale)
- pScale->SetText(rText);
- break;
-
- case FIELD_PROPERTY_FORMAT:
- if (pActFieldDescr)
- UpdateFormatSample(pActFieldDescr);
- break;
- case FIELD_PRPOERTY_COLUMNNAME:
- if(m_pColumnName)
- m_pColumnName->SetText(rText);
- break;
- case FIELD_PRPOERTY_TYPE:
- if(m_pType)
- m_pType->SelectEntry(rText);
- break;
- case FIELD_PRPOERTY_AUTOINCREMENT:
- if(m_pAutoIncrementValue)
- m_pAutoIncrementValue->SetText(rText);
- break;
- }
-}
-
-//------------------------------------------------------------------------
-IMPL_LINK( OFieldDescControl, FormatClickHdl, Button *, /*pButton*/ )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Temporaere Column erzeugen, mit der Datenaustausch mit Dialog erfolgt
- if( !pActFieldDescr )
- return 0;
-
- sal_Int32 nOldFormatKey(pActFieldDescr->GetFormatKey());
- SvxCellHorJustify rOldJustify = pActFieldDescr->GetHorJustify();
- Reference< XNumberFormatsSupplier > xSupplier = GetFormatter()->getNumberFormatsSupplier();
- SvNumberFormatsSupplierObj* pSupplierImpl = SvNumberFormatsSupplierObj::getImplementation( xSupplier );
-
- SvNumberFormatter* pFormatter = pSupplierImpl->GetNumberFormatter();
- sal_uInt16 nFlags;
- if(::dbaui::callColumnFormatDialog(this,pFormatter,pActFieldDescr->GetType(),nOldFormatKey,rOldJustify,nFlags,sal_True))
- {
- sal_Bool bModified = sal_False;
- if(nOldFormatKey != pActFieldDescr->GetFormatKey())
- {
- pActFieldDescr->SetFormatKey( nOldFormatKey );
- bModified = sal_True;
- }
- if(rOldJustify != pActFieldDescr->GetHorJustify())
- {
- pActFieldDescr->SetHorJustify( rOldJustify );
- bModified = sal_True;
- }
-
- if(bModified)
- {
- SetModified(sal_True);
- UpdateFormatSample(pActFieldDescr);
- }
- }
- return 0;
-}
-
-// -----------------------------------------------------------------------
-void OFieldDescControl::SetModified(sal_Bool /*bModified*/)
-{
-}
-//------------------------------------------------------------------------
-IMPL_LINK( OFieldDescControl, ChangeHdl, ListBox *, pListBox )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- if ( !pActFieldDescr )
- return 0;
-
- if ( pListBox->GetSavedValue() != pListBox->GetSelectEntryPos() )
- SetModified(sal_True);
-
- // Sonderbehandlund f"ur Bool Felder
- if(pListBox == pRequired && pBoolDefault )
- {
- // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen
- String sDef = BoolStringUI(::comphelper::getString(pActFieldDescr->GetControlDefault()));
-
- if(pRequired->GetSelectEntryPos() == 0) // JA
- {
- pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE)));
- if (!sDef.Equals(aYes) && !sDef.Equals(aNo))
- pBoolDefault->SelectEntryPos(1); // nein als Default
- else
- pBoolDefault->SelectEntry(sDef);
- }
- else if(pBoolDefault->GetEntryCount() < 3)
- {
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->SelectEntry(sDef);
- }
- }
-
- // nur fuer AutoIncrement eine Sonderbehandlung
- if (pListBox == pAutoIncrement)
- {
- if(pListBox->GetSelectEntryPos() == 1)
- { // no
- DeactivateAggregate( tpAutoIncrementValue );
- if(pActFieldDescr->IsPrimaryKey())
- DeactivateAggregate( tpRequired );
- else if( pActFieldDescr->getTypeInfo()->bNullable )
- {
- ActivateAggregate( tpRequired );
- if(pRequired)
- {
- if( pActFieldDescr->IsNullable() )
- pRequired->SelectEntryPos( 1 ); // no
- else
- pRequired->SelectEntryPos( 0 ); // yes
- }
- }
- ActivateAggregate( tpDefault );
- }
- else
- {
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- ActivateAggregate( tpAutoIncrementValue );
- }
- // und jetzt alle nach oben schieben
- ArrangeAggregates();
- }
-
- if(pListBox == m_pType)
- {
- TOTypeInfoSP pTypeInfo = getTypeInfo(m_pType->GetSelectEntryPos());
- pActFieldDescr->FillFromTypeInfo(pTypeInfo,sal_True,sal_False); // SetType(pTypeInfo);
-
- DisplayData(pActFieldDescr);
- CellModified(-1, m_pType->GetPos());
- }
-
- return 0;
-}
-//------------------------------------------------------------------------------
-// alle Control neu anordnen, so dass sie in fester Reihenfolge und wirklich
-// OBEN auf der DescriptionPage stehen
-void OFieldDescControl::ArrangeAggregates()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- // die Beschreibung eines Controls
- struct AGGREGATE_DESCRIPTION
- {
- Control* pctrlInputControl; // das eigentliche Control zur Eingabe
- Control* pctrlTextControl; // das Label dazu
- sal_uInt16 nPosSizeArgument; // das zweite Argument fuer SetPosSize
- };
- AGGREGATE_DESCRIPTION adAggregates[] = {
- { m_pColumnName, m_pColumnNameText, 1},
- { m_pType, m_pTypeText, 1},
- { pAutoIncrement, pAutoIncrementText, 1 },
- { m_pAutoIncrementValue, m_pAutoIncrementValueText, 3 },
- { pNumType, pNumTypeText, 1 },
- { pRequired, pRequiredText, 1 },
- { pTextLen, pTextLenText, 1 },
- { pLength, pLengthText, 1 },
- { pScale, pScaleText, 1 },
- { pDefault, pDefaultText, 3 },
- { pFormatSample, pFormatText, 4 },
- { pBoolDefault, pBoolDefaultText, 1 },
- };
-
- long nMaxWidth = 0;
- for (size_t i=0; i < SAL_N_ELEMENTS(adAggregates); i++)
- {
- if (adAggregates[i].pctrlTextControl)
- {
- nMaxWidth = ::std::max<long>(OutputDevice::GetTextWidth(adAggregates[i].pctrlTextControl->GetText()),nMaxWidth);
- }
- }
-
- OSL_ENSURE(nMaxWidth != 0,"Invalid width!");
-
- // und los ...
- int nCurrentControlPos = 0;
- Control* pZOrderPredecessor = NULL;
- for (size_t i=0; i < SAL_N_ELEMENTS(adAggregates); i++)
- {
- if (adAggregates[i].pctrlInputControl)
- {
- SetPosSize(&adAggregates[i].pctrlTextControl, nCurrentControlPos, 0);
- SetPosSize(&adAggregates[i].pctrlInputControl, nCurrentControlPos, adAggregates[i].nPosSizeArgument);
-
- // die Z-Order so, dass die Controls auch wirklich in derselben Reihenfolge durchwandert werden koennen, in der sie
- // hier angeordnet wurden
- adAggregates[i].pctrlTextControl->SetZOrder(pZOrderPredecessor, pZOrderPredecessor ? WINDOW_ZORDER_BEHIND : WINDOW_ZORDER_FIRST);
- adAggregates[i].pctrlInputControl->SetZOrder(adAggregates[i].pctrlTextControl, WINDOW_ZORDER_BEHIND );
- pZOrderPredecessor = adAggregates[i].pctrlInputControl;
-
- if (adAggregates[i].pctrlInputControl == pFormatSample)
- {
- pFormat->SetZOrder(pZOrderPredecessor, WINDOW_ZORDER_BEHIND);
- pZOrderPredecessor = pFormat;
- }
-
- ++nCurrentControlPos;
- }
- }
-
- // eine Sonderbehandlung fuer die Format-Controls
- if (pFormat)
- {
- Point ptSamplePos(pFormatSample->GetPosPixel());
- Size szSampleSize(pFormatSample->GetSizePixel());
- pFormat->SetPosPixel(Point(ptSamplePos.X() + szSampleSize.Width() + 5, ptSamplePos.Y()));
- }
-
- // als letztes noch die ScrollBars in der ZOrder ganz nach oben
- m_pVertScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST);
- m_pHorzScroll->SetZOrder(NULL, WINDOW_ZORDER_FIRST);
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::ActivateAggregate( EControlType eType )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Controls erzeugen
- switch( eType )
- {
- case tpDefault:
- if( pDefault )
- return;
- m_nPos++;
- pDefaultText = CreateText(STR_DEFAULT_VALUE);
- pDefault = new OPropEditCtrl( this, STR_HELP_DEFAULT_VALUE, FIELD_PROPERTY_DEFAULT, WB_BORDER );
- InitializeControl(pDefault,HID_TAB_ENT_DEFAULT,false);
- break;
- case tpAutoIncrementValue:
- if( m_pAutoIncrementValue || !isAutoIncrementValueEnabled() )
- return;
- m_nPos++;
- m_pAutoIncrementValueText = CreateText(STR_AUTOINCREMENT_VALUE);
- m_pAutoIncrementValue = new OPropEditCtrl( this, STR_HELP_AUTOINCREMENT_VALUE, FIELD_PRPOERTY_AUTOINCREMENT, WB_BORDER );
- m_pAutoIncrementValue->SetText( getAutoIncrementValue() );
- InitializeControl(m_pAutoIncrementValue,HID_TAB_AUTOINCREMENTVALUE,false);
- break;
-
- case tpRequired:
- {
- if( pRequired )
- return;
- Reference< XDatabaseMetaData> xMetaData = getMetaData();
-
- if(xMetaData.is() && xMetaData->supportsNonNullableColumns())
- {
- m_nPos++;
- pRequiredText = CreateText(STR_FIELD_REQUIRED);
- pRequired = new OPropListBoxCtrl( this, STR_HELP_FIELD_REQUIRED, FIELD_PROPERTY_REQUIRED, WB_DROPDOWN);
-
- pRequired->InsertEntry( aYes );
- pRequired->InsertEntry( aNo );
- pRequired->SelectEntryPos(1);
-
- InitializeControl(pRequired,HID_TAB_ENT_REQUIRED,true);
- }
- }
- break;
- case tpAutoIncrement:
- {
- if( pAutoIncrement )
- return;
- m_nPos++;
- pAutoIncrementText = CreateText(STR_FIELD_AUTOINCREMENT);
- pAutoIncrement = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PROPERTY_AUTOINC, WB_DROPDOWN );
- pAutoIncrement->InsertEntry( aYes );
- pAutoIncrement->InsertEntry( aNo );
- pAutoIncrement->SelectEntryPos(0);
- InitializeControl(pAutoIncrement,HID_TAB_ENT_AUTOINCREMENT,true);
- }
- break;
- case tpTextLen:
- if( pTextLen )
- return;
- m_nPos++;
- pTextLenText = CreateText(STR_TEXT_LENGTH);
- pTextLen = CreateNumericControl(STR_HELP_TEXT_LENGTH, FIELD_PROPERTY_TEXTLEN,HID_TAB_ENT_TEXT_LEN);
- break;
-
- case tpType:
- if( m_pType)
- return;
- m_nPos++;
- m_pTypeText = CreateText(STR_TAB_FIELD_DATATYPE);
- m_pType = new OPropListBoxCtrl( this, STR_HELP_AUTOINCREMENT, FIELD_PRPOERTY_TYPE, WB_DROPDOWN );
- m_pType->SetDropDownLineCount(20);
- {
- const OTypeInfoMap* pTypeInfo = getTypeInfo();
- OTypeInfoMap::const_iterator aIter = pTypeInfo->begin();
- OTypeInfoMap::const_iterator aEnd = pTypeInfo->end();
- for(;aIter != aEnd;++aIter)
- m_pType->InsertEntry( aIter->second->aUIName );
- }
- m_pType->SelectEntryPos(0);
- InitializeControl(m_pType,HID_TAB_ENT_TYPE,true);
- break;
- case tpColumnName:
- if( m_pColumnName )
- return;
- m_nPos++;
- {
- sal_uInt32 nMax = EDIT_NOLIMIT;
- ::rtl::OUString aTmpString;
- try
- {
- Reference< XDatabaseMetaData> xMetaData = getMetaData();
- if ( xMetaData.is() )
- {
- nMax = xMetaData->getMaxColumnNameLength();
- aTmpString = xMetaData->getExtraNameCharacters();
- }
- }
- catch(Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_pColumnNameText = CreateText(STR_TAB_FIELD_NAME);
- m_pColumnName = new OPropColumnEditCtrl( this,
- aTmpString,
- STR_HELP_DEFAULT_VALUE,
- FIELD_PRPOERTY_COLUMNNAME,
- WB_BORDER );
- m_pColumnName->SetMaxTextLen(xub_StrLen( nMax ? nMax : EDIT_NOLIMIT));
- m_pColumnName->setCheck( isSQL92CheckEnabled(getConnection()) );
- }
-
- InitializeControl(m_pColumnName,HID_TAB_ENT_COLUMNNAME,false);
- break;
- case tpNumType:
- if( pNumType )
- return;
- m_nPos++;
- pNumTypeText = CreateText(STR_NUMERIC_TYPE);
-
- pNumType = new OPropListBoxCtrl( this, STR_HELP_NUMERIC_TYPE, FIELD_PROPERTY_NUMTYPE, WB_DROPDOWN );
- pNumType->SetDropDownLineCount(5);
-
- pNumType->InsertEntry( String::CreateFromAscii("Byte") );
- pNumType->InsertEntry( String::CreateFromAscii("SmallInt") );
- pNumType->InsertEntry( String::CreateFromAscii("Integer") );
- pNumType->InsertEntry( String::CreateFromAscii("Single") );
- pNumType->InsertEntry( String::CreateFromAscii("Double") );
- pNumType->SelectEntryPos(2);
- InitializeControl(pNumType,HID_TAB_ENT_NUMTYP,true);
- break;
-
- case tpLength:
- if( pLength )
- return;
- m_nPos++;
- pLengthText = CreateText(STR_LENGTH);
- pLength = CreateNumericControl(STR_HELP_LENGTH, FIELD_PROPERTY_LENGTH,HID_TAB_ENT_LEN);
- break;
-
- case tpScale:
- if( pScale )
- return;
- m_nPos++;
- pScaleText = CreateText(STR_SCALE);
- pScale = CreateNumericControl(STR_HELP_SCALE, FIELD_PROPERTY_SCALE,HID_TAB_ENT_SCALE);
- break;
-
- case tpFormat:
- if (!pFormat)
- {
- m_nPos++;
- pFormatText = CreateText(STR_FORMAT);
-
- pFormatSample = new OPropEditCtrl( this, STR_HELP_FORMAT_CODE, -1, WB_BORDER );
- pFormatSample->SetReadOnly(sal_True);
- pFormatSample->Enable(sal_False);
- InitializeControl(pFormatSample,HID_TAB_ENT_FORMAT_SAMPLE,false);
-
- pFormat = new PushButton( this, ModuleRes(PB_FORMAT) );
- const sal_Int32 nControlHeight = GetMaxControlHeight();
- pFormat->SetSizePixel(Size(nControlHeight, nControlHeight));
- pFormat->SetClickHdl( LINK( this, OFieldDescControl, FormatClickHdl ) );
- InitializeControl(pFormat,HID_TAB_ENT_FORMAT,false);
- }
-
- UpdateFormatSample(pActFieldDescr);
- break;
- case tpBoolDefault:
- if (pBoolDefault)
- return;
-
- m_nPos++;
- pBoolDefaultText = CreateText(STR_DEFAULT_VALUE);
- pBoolDefault = new OPropListBoxCtrl( this, STR_HELP_BOOL_DEFAULT, FIELD_PROPERTY_BOOL_DEFAULT, WB_DROPDOWN );
- pBoolDefault->SetDropDownLineCount(3);
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->InsertEntry(aYes);
- pBoolDefault->InsertEntry(aNo);
-
- InitializeControl(pBoolDefault,HID_TAB_ENT_BOOL_DEFAULT,false);
- break;
- }
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::InitializeControl(Control* _pControl,const ::rtl::OString& _sHelpId,bool _bAddChangeHandler)
-{
- _pControl->SetHelpId(_sHelpId);
- if ( _bAddChangeHandler )
- ((OPropListBoxCtrl*)_pControl)->SetSelectHdl(LINK(this,OFieldDescControl,ChangeHdl));
-
- _pControl->SetGetFocusHdl(LINK(this, OFieldDescControl, OnControlFocusGot));
- _pControl->SetLoseFocusHdl(LINK(this, OFieldDescControl, OnControlFocusLost));
- _pControl->EnableClipSiblings();
-}
-// -----------------------------------------------------------------------------
-FixedText* OFieldDescControl::CreateText(sal_uInt16 _nTextRes)
-{
- FixedText* pFixedText = new FixedText( this );
- pFixedText->SetText( ModuleRes(_nTextRes) );
- pFixedText->EnableClipSiblings();
- return pFixedText;
-}
-// -----------------------------------------------------------------------------
-OPropNumericEditCtrl* OFieldDescControl::CreateNumericControl(sal_uInt16 _nHelpStr,short _nProperty,const rtl::OString& _sHelpId)
-{
- OPropNumericEditCtrl* pControl = new OPropNumericEditCtrl( this, _nHelpStr, _nProperty, WB_BORDER );
- pControl->SetDecimalDigits(0);
- pControl->SetMin(0);
- pControl->SetMax(0x7FFFFFFF); // soll draussen geaendert werden, wenn noetig
- pControl->SetStrictFormat(sal_True);
-
- InitializeControl(pControl,_sHelpId,false);
-
- return pControl;
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::DeactivateAggregate( EControlType eType )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- pLastFocusWindow = NULL;
- //////////////////////////////////////////////////////////////////////
- // Controls zerstoeren
- switch( eType )
- {
- case tpDefault:
- lcl_HideAndDeleteControl(m_nPos,&pDefault,&pDefaultText);
- break;
-
- case tpAutoIncrementValue:
- lcl_HideAndDeleteControl(m_nPos,&m_pAutoIncrementValue,&m_pAutoIncrementValueText);
- break;
-
- case tpColumnName:
- lcl_HideAndDeleteControl(m_nPos,&m_pColumnName,&m_pColumnNameText);
- break;
-
- case tpType:
- lcl_HideAndDeleteControl(m_nPos,&m_pType,&m_pTypeText);
- break;
-
- case tpAutoIncrement:
- lcl_HideAndDeleteControl(m_nPos,&pAutoIncrement,&pAutoIncrementText);
- break;
-
- case tpRequired:
- lcl_HideAndDeleteControl(m_nPos,&pRequired,&pRequiredText);
- break;
-
- case tpTextLen:
- lcl_HideAndDeleteControl(m_nPos,&pTextLen,&pTextLenText);
- break;
-
- case tpNumType:
- lcl_HideAndDeleteControl(m_nPos,&pNumType,&pNumTypeText);
- break;
-
- case tpLength:
- lcl_HideAndDeleteControl(m_nPos,&pLength,&pLengthText);
- break;
-
- case tpScale:
- lcl_HideAndDeleteControl(m_nPos,&pScale,&pScaleText);
- break;
-
- case tpFormat:
- // TODO: we have to check if we have to increment m_nPos again
- lcl_HideAndDeleteControl(m_nPos,&pFormat,&pFormatText);
- if ( pFormatSample )
- {
- pFormatSample->Hide();
- delete pFormatSample;
- pFormatSample = NULL;
- }
- break;
- case tpBoolDefault:
- lcl_HideAndDeleteControl(m_nPos,&pBoolDefault,&pBoolDefaultText);
- break;
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::SetPosSize( Control** ppControl, long nRow, sal_uInt16 nCol )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
-
- //////////////////////////////////////////////////////////////////////
- // Groesse ermitteln
- const sal_Int32 nControlHeight = GetMaxControlHeight();
- Size aSize(0,nControlHeight);
- if ( isRightAligned() && nCol )
- aSize.Width() = LogicToPixel(Size(m_nWidth, 0),MAP_APPFONT).Width();
- else
- {
- switch( nCol )
- {
- case 0:
- default:
- aSize.Width() = CONTROL_WIDTH_1;
- break;
- case 1:
- aSize.Width() = CONTROL_WIDTH_2;
- break;
- case 3:
- aSize.Width() = CONTROL_WIDTH_3;
- break;
- case 4:
- aSize.Width() = CONTROL_WIDTH_4;
- break;
- }
- }
-
-
- //////////////////////////////////////////////////////////////////////
- // Position ermitteln
- Point aPosition;
- switch( nCol )
- {
- case 0:
- aPosition.X() = 0;
- aPosition.Y() = 1;
- break;
- case 1:
- case 3:
- case 4:
- if ( isRightAligned() )
- {
- Size aOwnSize = GetSizePixel();
- aPosition.X() = aOwnSize.Width() - aSize.Width();
- }
- else
- aPosition.X() = CONTROL_WIDTH_1 + CONTROL_SPACING_X;
- break;
- default:
- aPosition.X() = 0;
- }
-
- (*ppControl)->SetSizePixel( aSize );
- aSize = (*ppControl)->GetSizePixel( );
-
- const sal_Int32 nControl_Spacing_y = LogicToPixel(Size(0, CONTROL_SPACING_Y),MAP_APPFONT).Height();
- aPosition.Y() += ((nRow+1)*nControl_Spacing_y) +
- (nRow*nControlHeight);
-
- //////////////////////////////////////////////////////////////////////
- // Control anzeigen
- (*ppControl)->SetPosSizePixel( aPosition, aSize );
- aSize = (*ppControl)->GetSizePixel();
-
- (*ppControl)->Show();
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::DisplayData(OFieldDescription* pFieldDescr )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- pActFieldDescr = pFieldDescr;
- if(!pFieldDescr)
- {
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpNumType );
- DeactivateAggregate( tpScale );
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpBoolDefault );
- DeactivateAggregate( tpColumnName );
- DeactivateAggregate( tpType );
- DeactivateAggregate( tpAutoIncrementValue );
- m_pPreviousType = TOTypeInfoSP();
- //////////////////////////////////////////////////////////////////////
- // Zeiger des gespeicherten Focus zuruecksetzen
- pLastFocusWindow = NULL;
- if ( m_bAdded )
- {
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
- m_bAdded = sal_False;
- }
- return;
- }
-
- if ( !m_bAdded )
- {
- ::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::AddWindow));
- m_bAdded = sal_True;
- }
-
- TOTypeInfoSP pFieldType;
- if( pFieldDescr )
- pFieldType = pFieldDescr->getTypeInfo();
-
- ActivateAggregate( tpColumnName );
- ActivateAggregate( tpType );
-
- OSL_ENSURE(pFieldType.get(),"We need a type information here!");
- //////////////////////////////////////////////////////////////////////
- // Wenn sich der Typ geaendert hat, Controls austauschen
- if( m_pPreviousType != pFieldType )
- {
- //////////////////////////////////////////////////////////////////////
- // Zeiger des gespeicherten Focus zuruecksetzen
- pLastFocusWindow = NULL;
-
- //////////////////////////////////////////////////////////////////////
- // Controls, die nicht mehr angezeigt werden duerfen
- DeactivateAggregate( tpNumType );
-
- //////////////////////////////////////////////////////////////////////
- // determine which controls we should show and which not
-
- // 1. the required control
- if ( pFieldType->bNullable )
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
-
- // 2. the autoincrement
- if ( pFieldType->bAutoIncrement )
- {
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- ActivateAggregate( tpAutoIncrement );
- ActivateAggregate( tpAutoIncrementValue );
- }
- else
- {
- DeactivateAggregate( tpAutoIncrement );
- DeactivateAggregate( tpAutoIncrementValue );
- if(pFieldType->bNullable)
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
- ActivateAggregate( tpDefault );
- }
- // 3. the scale and precision
- if (pFieldType->nPrecision)
- {
- ActivateAggregate( tpLength );
- pLength->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision()));
- pLength->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0);
- }
- else
- DeactivateAggregate( tpLength );
-
- if (pFieldType->nMaximumScale)
- {
- ActivateAggregate( tpScale );
- pScale->SetMax(::std::max<sal_Int32>(pFieldType->nMaximumScale,pFieldDescr->GetScale()));
- pScale->SetMin(pFieldType->nMinimumScale);
- static const ::rtl::OUString s_sPRECISION(RTL_CONSTASCII_USTRINGPARAM("PRECISION"));
- pScale->SetSpecialReadOnly(pFieldType->aCreateParams.getLength() == 0 || pFieldType->aCreateParams == s_sPRECISION);
- }
- else
- DeactivateAggregate( tpScale );
-
- // and now look for type specific things
- switch( pFieldType->nType )
- {
- case DataType::CHAR:
- case DataType::VARCHAR:
- case DataType::LONGVARCHAR:
- DeactivateAggregate( tpLength );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpDefault );
- ActivateAggregate( tpFormat );
- if (pFieldType->nPrecision)
- {
- ActivateAggregate( tpTextLen );
- pTextLen->SetMax(::std::max<sal_Int32>(pFieldType->nPrecision,pFieldDescr->GetPrecision()));
- pTextLen->SetSpecialReadOnly(pFieldType->aCreateParams.getLength()==0);
- }
- else
- DeactivateAggregate( tpTextLen );
- break;
- case DataType::DATE:
- case DataType::TIME:
- case DataType::TIMESTAMP:
- DeactivateAggregate( tpLength ); // we don't need a length for date types
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpDefault );
- ActivateAggregate( tpFormat );
- break;
- case DataType::BIT:
- if ( pFieldType->aCreateParams.getLength() )
- {
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
- break;
- }
- // run through
- case DataType::BOOLEAN:
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpDefault );
-
- ActivateAggregate( tpBoolDefault );
- break;
- case DataType::DECIMAL:
- case DataType::NUMERIC:
- case DataType::BIGINT:
- case DataType::FLOAT:
- case DataType::DOUBLE:
- case DataType::TINYINT:
- case DataType::SMALLINT:
- case DataType::INTEGER:
- case DataType::REAL:
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpFormat );
- break;
- case DataType::BINARY:
- case DataType::VARBINARY:
- DeactivateAggregate( tpDefault );
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- ActivateAggregate( tpFormat );
- break;
- case DataType::LONGVARBINARY:
- case DataType::SQLNULL:
- case DataType::OBJECT:
- case DataType::DISTINCT:
- case DataType::STRUCT:
- case DataType::ARRAY:
- case DataType::BLOB:
- case DataType::CLOB:
- case DataType::REF:
- case DataType::OTHER:
- DeactivateAggregate( tpFormat );
- DeactivateAggregate( tpTextLen );
- DeactivateAggregate( tpBoolDefault );
-
- break;
- default:
- OSL_FAIL("Unknown type");
- }
- m_pPreviousType = pFieldType;
- }
- if(pFieldDescr)
- {
- if(pFieldDescr->IsPrimaryKey())
- {
- DeactivateAggregate( tpRequired );
- }
- else if ( !pAutoIncrement && pFieldType.get() )
- {
- if ( pFieldType->bNullable )
- ActivateAggregate( tpRequired );
- else
- DeactivateAggregate( tpRequired );
- }
- }
- //////////////////////////////////////////////////////////////////////
- // Controls initialisieren
- if( pAutoIncrement )
- {
- if ( pFieldDescr->IsAutoIncrement() )
- {
- pAutoIncrement->SelectEntryPos( 0 ); // yes
- ActivateAggregate( tpAutoIncrementValue );
- if ( m_pAutoIncrementValue )
- m_pAutoIncrementValue->SetText(pFieldDescr->GetAutoIncrementValue());
- DeactivateAggregate( tpRequired );
- DeactivateAggregate( tpDefault );
- }
- else
- {
- // disable autoincrement value because it should only be visible when autoincrement is to true
- DeactivateAggregate( tpAutoIncrementValue );
- pAutoIncrement->SelectEntryPos( 1 ); // no
- ActivateAggregate( tpDefault );
- // hat Auswirkungen auf pRequired
- if(!pFieldDescr->IsPrimaryKey())
- ActivateAggregate( tpRequired );
- }
- }
-
- if( pDefault )
- {
- pDefault->SetText( getControlDefault(pFieldDescr) );
- pDefault->ClearModifyFlag();
- }
-
- if( pBoolDefault )
- {
- // wenn pRequired auf sal_True gesetzt ist, dann darf das sal_Bool Feld nicht den Eintrag <<keiner>> besitzen
- ::rtl::OUString sValue;
- pFieldDescr->GetControlDefault() >>= sValue;
- String sDef = BoolStringUI(sValue);
-
- // sicher stellen das <<keiner>> nur vorhanden ist, wenn das Feld NULL sein darf
- if ( ( pFieldType.get() && !pFieldType->bNullable ) || !pFieldDescr->IsNullable() )
- {
- pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS); // der Typ sagt das
-
- pBoolDefault->RemoveEntry(String(ModuleRes(STR_VALUE_NONE)));
- if ( !sDef.Equals(aYes) && !sDef.Equals(aNo) )
- pBoolDefault->SelectEntryPos(1); // nein als Default
- else
- pBoolDefault->SelectEntry(sDef);
-
- pFieldDescr->SetControlDefault(makeAny(::rtl::OUString(BoolStringPersistent(pBoolDefault->GetSelectEntry()))));
- }
- else if(pBoolDefault->GetEntryCount() < 3)
- {
- pBoolDefault->InsertEntry(String(ModuleRes(STR_VALUE_NONE)));
- pBoolDefault->SelectEntry(sDef);
- }
- else
- pBoolDefault->SelectEntry(sDef);
- }
-
- if( pRequired )
- {
- if( pFieldDescr->IsNullable() )
- pRequired->SelectEntryPos( 1 ); // no
- else
- pRequired->SelectEntryPos( 0 ); // yes
- }
-
- if( pTextLen )
- {
- pTextLen->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) );
- pTextLen->ClearModifyFlag();
- }
-
- if( pNumType )
- {
- OSL_FAIL("OFieldDescControl::DisplayData: invalid num type!");
- }
-
- if( pLength )
- pLength->SetText( String::CreateFromInt32(pFieldDescr->GetPrecision()) );
-
- if( pScale )
- pScale->SetText( String::CreateFromInt32(pFieldDescr->GetScale()) );
-
- if( pFormat )
- UpdateFormatSample(pFieldDescr);
-
- if(m_pColumnName)
- m_pColumnName->SetText(pFieldDescr->GetName());
-
- if(m_pType)
- {
- sal_uInt16 nPos = pFieldType.get() ? m_pType->GetEntryPos(String(pFieldDescr->getTypeInfo()->aUIName)) : LISTBOX_ENTRY_NOTFOUND;
- if(nPos == LISTBOX_ENTRY_NOTFOUND)
- {
- const OTypeInfoMap* pMap = getTypeInfo();
- OTypeInfoMap::const_iterator aIter = pMap->find(pFieldType.get() ? pFieldDescr->getTypeInfo()->nType : pFieldDescr->GetType());
- if(aIter == pMap->end() && !pMap->empty())
- {
- aIter = pMap->begin();
- if(pFieldDescr->GetPrecision() > aIter->second->nPrecision)
- pFieldDescr->SetPrecision(aIter->second->nPrecision);
- if(pFieldDescr->GetScale() > aIter->second->nMaximumScale)
- pFieldDescr->SetScale(0);
- if(!aIter->second->bNullable && pFieldDescr->IsNullable())
- pFieldDescr->SetIsNullable(ColumnValue::NO_NULLS);
- if(!aIter->second->bAutoIncrement && pFieldDescr->IsAutoIncrement())
- pFieldDescr->SetAutoIncrement(sal_False);
- }
- if ( aIter != pMap->end() )
- {
- pFieldDescr->SetType(aIter->second);
- }
- }
- m_pType->SelectEntry(pFieldDescr->getTypeInfo()->aUIName);
- }
-
-
- //////////////////////////////////////////////////////////////////////
- // Controls Enablen/Disablen
- sal_Bool bRead(IsReadOnly());
-
-
- ArrangeAggregates();
- CheckScrollBars();
- ScrollAllAggregates();
-
- SetReadOnly( bRead );
-}
-//------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, DelayedGrabFocus, Control**, ppControl)
-{
- nDelayedGrabFocusEvent = 0;
- if (*ppControl)
- (*ppControl)->GrabFocus();
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnControlFocusGot, Control*, pControl )
-{
- String strHelpText;
- OPropNumericEditCtrl* pNumeric = dynamic_cast< OPropNumericEditCtrl* >( pControl );
- if ( pNumeric )
- {
- pNumeric->SaveValue();
- strHelpText = pNumeric->GetHelp();
- }
-
- OPropColumnEditCtrl* pColumn = dynamic_cast< OPropColumnEditCtrl* >( pControl );
- if ( pColumn )
- {
- pColumn->SaveValue();
- strHelpText = pColumn->GetHelp();
- }
-
- OPropEditCtrl* pEdit = dynamic_cast< OPropEditCtrl* >( pControl );
- if ( pEdit )
- {
- pEdit->SaveValue();
- strHelpText = pEdit->GetHelp();
- }
-
- OPropListBoxCtrl* pListBox = dynamic_cast< OPropListBoxCtrl* >( pControl );
- if ( pListBox )
- {
- pListBox->SaveValue();
- strHelpText = pListBox->GetHelp();
- }
-
- if (pControl == pFormat)
- strHelpText =String(ModuleRes(STR_HELP_FORMAT_BUTTON));
-
- if (strHelpText.Len() && (pHelp != NULL))
- pHelp->SetHelpText(strHelpText);
-
- m_pActFocusWindow = pControl;
-
- return 0L;
-}
-
-//------------------------------------------------------------------------------
-IMPL_LINK(OFieldDescControl, OnControlFocusLost, Control*, pControl )
-{
- if ((pControl == pLength) || (pControl == pTextLen) || (pControl == pScale))
- {
- OPropNumericEditCtrl* pConverted = (OPropNumericEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- if(pControl == m_pColumnName)
- {
- OPropColumnEditCtrl* pConverted = (OPropColumnEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- else if ((pControl == pDefault) || (pControl == pFormatSample) || (pControl == m_pAutoIncrementValue) )
- {
- OPropEditCtrl* pConverted = (OPropEditCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
- else if ((pControl == pRequired) || (pControl == pNumType) || (pControl == pAutoIncrement) || (pControl == pBoolDefault) || (pControl == m_pType))
- {
- OPropListBoxCtrl* pConverted = (OPropListBoxCtrl*)pControl;
- if (pConverted->IsModified())
- CellModified(-1, pConverted->GetPos());
- }
-
- if (pControl == pDefault)
- UpdateFormatSample(pActFieldDescr);
-
- implFocusLost(pControl);
-
- return 0L;
-}
-//------------------------------------------------------------------------------
-void OFieldDescControl::SaveData( OFieldDescription* pFieldDescr )
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- if( !pFieldDescr )
- return;
-
- //////////////////////////////////////////////////////////////////////
- // Controls auslesen
- ::rtl::OUString sDefault;
- if (pDefault)
- {
- sDefault = pDefault->GetText();
- }
- else if (pBoolDefault)
- {
- sDefault = BoolStringPersistent(pBoolDefault->GetSelectEntry());
- }
-
- if ( sDefault.getLength() )
- pFieldDescr->SetControlDefault(makeAny(sDefault));
- else
- pFieldDescr->SetControlDefault(Any());
-
- if((pRequired && pRequired->GetSelectEntryPos() == 0) || pFieldDescr->IsPrimaryKey() || (pBoolDefault && pBoolDefault->GetEntryCount() == 2)) // yes
- pFieldDescr->SetIsNullable( ColumnValue::NO_NULLS );
- else
- pFieldDescr->SetIsNullable( ColumnValue::NULLABLE );
-
- if ( pAutoIncrement )
- pFieldDescr->SetAutoIncrement( pAutoIncrement->GetSelectEntryPos() == 0 );
-
- if( pTextLen )
- pFieldDescr->SetPrecision( static_cast<sal_Int32>(pTextLen->GetValue()) );
- else if( pLength )
- pFieldDescr->SetPrecision( static_cast<sal_Int32>(pLength->GetValue()) );
- if( pScale )
- pFieldDescr->SetScale( static_cast<sal_Int32>(pScale->GetValue()) );
-
- if(m_pColumnName)
- pFieldDescr->SetName(m_pColumnName->GetText());
-
- if ( m_pAutoIncrementValue && isAutoIncrementValueEnabled() )
- pFieldDescr->SetAutoIncrementValue(m_pAutoIncrementValue->GetText());
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::UpdateFormatSample(OFieldDescription* pFieldDescr)
-{
- if ( pFieldDescr && pFormatSample )
- pFormatSample->SetText(getControlDefault(pFieldDescr,sal_False));
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::GetFocus()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- //////////////////////////////////////////////////////////////////////
- // Setzt den Focus auf das zuletzt aktive Control
- TabPage::GetFocus();
- if( pLastFocusWindow )
- {
- pLastFocusWindow->GrabFocus();
- pLastFocusWindow = NULL;
- }
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::implFocusLost(Window* _pWhich)
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
- OSL_ENSURE(!_pWhich || IsChild(_pWhich), "OFieldDescControl::implFocusLost : invalid window !");
-
- //////////////////////////////////////////////////////////////////////
- // Das aktive Control merken
- if (!pLastFocusWindow)
- pLastFocusWindow = _pWhich;
-
- //////////////////////////////////////////////////////////////////////
- // HelpText zuruecksetzen
- if (pHelp && !pHelp->HasChildPathFocus())
- pHelp->SetHelpText( String() );
-}
-
-//------------------------------------------------------------------------------
-void OFieldDescControl::LoseFocus()
-{
- DBG_CHKTHIS(OFieldDescControl,NULL);
-
- implFocusLost(NULL);
-
- TabPage::LoseFocus();
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isCopyAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue) &&
- static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0;
-
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isCutAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue) &&
- static_cast<Edit*>(m_pActFocusWindow)->GetSelected().Len() != 0;
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isPasteAllowed()
-{
- sal_Bool bAllowed = (m_pActFocusWindow != NULL) &&
- (m_pActFocusWindow == pDefault || m_pActFocusWindow == pFormatSample ||
- m_pActFocusWindow == pTextLen || m_pActFocusWindow == pLength ||
- m_pActFocusWindow == pScale || m_pActFocusWindow == m_pColumnName ||
- m_pActFocusWindow == m_pAutoIncrementValue);
- if ( bAllowed )
- {
- TransferableDataHelper aTransferData(TransferableDataHelper::CreateFromSystemClipboard(GetParent()));
- bAllowed = aTransferData.HasFormat(SOT_FORMAT_STRING);
- }
- return bAllowed;
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::cut()
-{
- if(isCutAllowed())
- static_cast<Edit*>(m_pActFocusWindow)->Cut();
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::copy()
-{
- if(isCopyAllowed()) // this only checks if the focus window is valid
- static_cast<Edit*>(m_pActFocusWindow)->Copy();
-}
-// -----------------------------------------------------------------------------
-void OFieldDescControl::paste()
-{
- if(m_pActFocusWindow) // this only checks if the focus window is valid
- static_cast<Edit*>(m_pActFocusWindow)->Paste();
-}
-// -----------------------------------------------------------------------------
-sal_Bool OFieldDescControl::isTextFormat(const OFieldDescription* _pFieldDescr,sal_uInt32& _nFormatKey) const
-{
- _nFormatKey = _pFieldDescr->GetFormatKey();
- sal_Bool bTextFormat = sal_True;
-
- try
- {
- if (!_nFormatKey)
- {
- Reference< ::com::sun::star::util::XNumberFormatTypes> xNumberTypes(GetFormatter()->getNumberFormatsSupplier()->getNumberFormats(),UNO_QUERY);
- OSL_ENSURE(xNumberTypes.is(),"XNumberFormatTypes is null!");
-
- _nFormatKey = ::dbtools::getDefaultNumberFormat( _pFieldDescr->GetType(),
- _pFieldDescr->GetScale(),
- _pFieldDescr->IsCurrency(),
- xNumberTypes,
- GetLocale());
- }
- sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(GetFormatter(),_nFormatKey);
- bTextFormat = (nNumberFormat == ::com::sun::star::util::NumberFormat::TEXT);
- }
- catch(const Exception&)
- {
-
- }
-
- return bTextFormat;
-}
-// -----------------------------------------------------------------------------
-String OFieldDescControl::getControlDefault( const OFieldDescription* _pFieldDescr ,sal_Bool _bCheck) const
-{
- ::rtl::OUString sDefault;
- sal_Bool bCheck = !_bCheck || _pFieldDescr->GetControlDefault().hasValue();
- if ( bCheck )
- {
- sal_uInt32 nFormatKey;
- sal_Bool bTextFormat = sal_False;
- double nValue = 0.0;
-
- try
- {
- bTextFormat = isTextFormat(_pFieldDescr,nFormatKey);
- if ( _pFieldDescr->GetControlDefault() >>= sDefault )
- {
- if ( !bTextFormat )
- {
- if ( sDefault.getLength() )
- {
- try
- {
- nValue = GetFormatter()->convertStringToNumber(nFormatKey,sDefault);
- }
- catch(const Exception&)
- {
- return ::rtl::OUString(); // return empty string for format example
- }
- }
- }
- }
- else
- _pFieldDescr->GetControlDefault() >>= nValue;
-
-
- Reference< ::com::sun::star::util::XNumberFormatter> xNumberFormatter = GetFormatter();
- Reference<XPropertySet> xFormSet = xNumberFormatter->getNumberFormatsSupplier()->getNumberFormats()->getByKey(nFormatKey);
- OSL_ENSURE(xFormSet.is(),"XPropertySet is null!");
- ::rtl::OUString sFormat;
- xFormSet->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FormatString"))) >>= sFormat;
-
- if ( !bTextFormat )
- {
- Locale aLocale;
- ::comphelper::getNumberFormatProperty(xNumberFormatter,nFormatKey,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Locale"))) >>= aLocale;
-
- sal_Int32 nNumberFormat = ::comphelper::getNumberFormatType(xNumberFormatter,nFormatKey);
- if( (nNumberFormat & ::com::sun::star::util::NumberFormat::DATE) == ::com::sun::star::util::NumberFormat::DATE
- || (nNumberFormat & ::com::sun::star::util::NumberFormat::DATETIME) == ::com::sun::star::util::NumberFormat::DATETIME )
- {
- nValue = DBTypeConversion::toNullDate(DBTypeConversion::getNULLDate(xNumberFormatter->getNumberFormatsSupplier()),nValue);
- }
-
-
-
- Reference< ::com::sun::star::util::XNumberFormatPreviewer> xPreViewer(xNumberFormatter,UNO_QUERY);
- OSL_ENSURE(xPreViewer.is(),"XNumberFormatPreviewer is null!");
- sDefault = xPreViewer->convertNumberToPreviewString(sFormat,nValue,aLocale,sal_True);
- }
- else if ( !_bCheck || (sDefault.getLength() != 0) )
- sDefault = xNumberFormatter->formatString(nFormatKey,(sDefault.getLength() != 0 )? sDefault : sFormat);
- }
- catch(const Exception&)
- {
-
- }
- }
-
- return sDefault;
-}
-// -----------------------------------------------------------------------------
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */