1*96de5490SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*96de5490SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*96de5490SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*96de5490SAndrew Rist  * distributed with this work for additional information
6*96de5490SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*96de5490SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*96de5490SAndrew Rist  * "License"); you may not use this file except in compliance
9*96de5490SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*96de5490SAndrew Rist  *
11*96de5490SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*96de5490SAndrew Rist  *
13*96de5490SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*96de5490SAndrew Rist  * software distributed under the License is distributed on an
15*96de5490SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*96de5490SAndrew Rist  * KIND, either express or implied.  See the License for the
17*96de5490SAndrew Rist  * specific language governing permissions and limitations
18*96de5490SAndrew Rist  * under the License.
19*96de5490SAndrew Rist  *
20*96de5490SAndrew Rist  *************************************************************/
21*96de5490SAndrew Rist 
22*96de5490SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
26cdf0e10cSrcweir #ifndef DBAUI_COLUMNCONTROLWINDOW_HXX
27cdf0e10cSrcweir #include "ColumnControlWindow.hxx"
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir #ifndef DBAUI_FIELDCONTROLS_HXX
30cdf0e10cSrcweir #include "FieldControls.hxx"
31cdf0e10cSrcweir #endif
32cdf0e10cSrcweir #ifndef INCLUDED_SVTOOLS_SYSLOCALE_HXX
33cdf0e10cSrcweir #include <unotools/syslocale.hxx>
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #ifndef _CONNECTIVITY_DBTOOLS_HXX_
36cdf0e10cSrcweir #include <connectivity/dbtools.hxx>
37cdf0e10cSrcweir #endif
38cdf0e10cSrcweir #ifndef DBAUI_TOOLS_HXX
39cdf0e10cSrcweir #include "UITools.hxx"
40cdf0e10cSrcweir #endif
41cdf0e10cSrcweir #ifndef _DBU_RESOURCE_HRC_
42cdf0e10cSrcweir #include "dbu_resource.hrc"
43cdf0e10cSrcweir #endif
44cdf0e10cSrcweir 
45cdf0e10cSrcweir 
46cdf0e10cSrcweir using namespace ::dbaui;
47cdf0e10cSrcweir using namespace ::com::sun::star::uno;
48cdf0e10cSrcweir using namespace ::com::sun::star::beans;
49cdf0e10cSrcweir using namespace ::com::sun::star::container;
50cdf0e10cSrcweir using namespace ::com::sun::star::util;
51cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
52cdf0e10cSrcweir using namespace ::com::sun::star::lang;
53cdf0e10cSrcweir 
54cdf0e10cSrcweir //========================================================================
55cdf0e10cSrcweir // OColumnControlWindow
DBG_NAME(OColumnControlWindow)56cdf0e10cSrcweir DBG_NAME(OColumnControlWindow)
57cdf0e10cSrcweir //========================================================================
58cdf0e10cSrcweir OColumnControlWindow::OColumnControlWindow(Window* pParent
59cdf0e10cSrcweir 										   ,const Reference<XMultiServiceFactory>& _rxFactory)
60cdf0e10cSrcweir 			: OFieldDescControl(pParent,NULL)
61cdf0e10cSrcweir 			, m_xORB(_rxFactory)
62cdf0e10cSrcweir 			, m_sTypeNames(ModuleRes(STR_TABLEDESIGN_DBFIELDTYPES))
63cdf0e10cSrcweir 			, m_bAutoIncrementEnabled(sal_True)
64cdf0e10cSrcweir {
65cdf0e10cSrcweir     DBG_CTOR(OColumnControlWindow,NULL);
66cdf0e10cSrcweir 
67cdf0e10cSrcweir 	setRightAligned();
68cdf0e10cSrcweir 	m_aLocale = SvtSysLocale().GetLocaleData().getLocale();
69cdf0e10cSrcweir }
70cdf0e10cSrcweir // -----------------------------------------------------------------------------
~OColumnControlWindow()71cdf0e10cSrcweir OColumnControlWindow::~OColumnControlWindow()
72cdf0e10cSrcweir {
73cdf0e10cSrcweir 
74cdf0e10cSrcweir     DBG_DTOR(OColumnControlWindow,NULL);
75cdf0e10cSrcweir }
76cdf0e10cSrcweir // -----------------------------------------------------------------------
ActivateAggregate(EControlType eType)77cdf0e10cSrcweir void OColumnControlWindow::ActivateAggregate( EControlType eType )
78cdf0e10cSrcweir {
79cdf0e10cSrcweir 	switch(eType )
80cdf0e10cSrcweir 	{
81cdf0e10cSrcweir 		case tpFormat:
82cdf0e10cSrcweir 		case tpDefault:
83cdf0e10cSrcweir //		case tpAutoIncrement:
84cdf0e10cSrcweir 		case tpColumnName:
85cdf0e10cSrcweir 			break;
86cdf0e10cSrcweir 		default:
87cdf0e10cSrcweir 			OFieldDescControl::ActivateAggregate( eType );
88cdf0e10cSrcweir 	}
89cdf0e10cSrcweir }
90cdf0e10cSrcweir // -----------------------------------------------------------------------
DeactivateAggregate(EControlType eType)91cdf0e10cSrcweir void OColumnControlWindow::DeactivateAggregate( EControlType eType )
92cdf0e10cSrcweir {
93cdf0e10cSrcweir 	switch(eType )
94cdf0e10cSrcweir 	{
95cdf0e10cSrcweir 		case tpFormat:
96cdf0e10cSrcweir 		case tpDefault:
97cdf0e10cSrcweir //		case tpAutoIncrement:
98cdf0e10cSrcweir 		case tpColumnName:
99cdf0e10cSrcweir 			break;
100cdf0e10cSrcweir 		default:
101cdf0e10cSrcweir 			OFieldDescControl::DeactivateAggregate( eType );
102cdf0e10cSrcweir 	}
103cdf0e10cSrcweir }
104cdf0e10cSrcweir // -----------------------------------------------------------------------------
CellModified(long,sal_uInt16)105cdf0e10cSrcweir void OColumnControlWindow::CellModified(long /*nRow*/, sal_uInt16 /*nColId*/ )
106cdf0e10cSrcweir {
107cdf0e10cSrcweir 	saveCurrentFieldDescData();
108cdf0e10cSrcweir }
109cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetLocale() const110cdf0e10cSrcweir ::com::sun::star::lang::Locale	OColumnControlWindow::GetLocale() const
111cdf0e10cSrcweir {
112cdf0e10cSrcweir 	return m_aLocale;
113cdf0e10cSrcweir }
114cdf0e10cSrcweir // -----------------------------------------------------------------------------
GetFormatter() const115cdf0e10cSrcweir Reference< XNumberFormatter > OColumnControlWindow::GetFormatter() const
116cdf0e10cSrcweir {
117cdf0e10cSrcweir 	if ( !m_xFormatter.is() )
118cdf0e10cSrcweir 		try
119cdf0e10cSrcweir 		{
120cdf0e10cSrcweir 			Reference< XNumberFormatsSupplier >  xSupplier(::dbtools::getNumberFormats(m_xConnection, sal_True,m_xORB));
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 			if ( xSupplier.is() )
123cdf0e10cSrcweir 			{
124cdf0e10cSrcweir 				// create a new formatter
125cdf0e10cSrcweir 				m_xFormatter.set( m_xORB->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.util.NumberFormatter"))), UNO_QUERY);
126cdf0e10cSrcweir 				if (m_xFormatter.is())
127cdf0e10cSrcweir 					m_xFormatter->attachNumberFormatsSupplier(xSupplier);
128cdf0e10cSrcweir 			}
129cdf0e10cSrcweir 		}
130cdf0e10cSrcweir 		catch(Exception&)
131cdf0e10cSrcweir 		{
132cdf0e10cSrcweir 		}
133cdf0e10cSrcweir 	return m_xFormatter;
134cdf0e10cSrcweir }
135cdf0e10cSrcweir // -----------------------------------------------------------------------------
getTypeInfo(sal_Int32 _nPos)136cdf0e10cSrcweir TOTypeInfoSP OColumnControlWindow::getTypeInfo(sal_Int32 _nPos)
137cdf0e10cSrcweir {
138cdf0e10cSrcweir 	return ( _nPos >= 0 && _nPos < static_cast<sal_Int32>(m_aDestTypeInfoIndex.size())) ? m_aDestTypeInfoIndex[_nPos]->second : TOTypeInfoSP();
139cdf0e10cSrcweir }
140cdf0e10cSrcweir // -----------------------------------------------------------------------------
getTypeInfo() const141cdf0e10cSrcweir const OTypeInfoMap*	OColumnControlWindow::getTypeInfo() const
142cdf0e10cSrcweir {
143cdf0e10cSrcweir 	return &m_aDestTypeInfo;
144cdf0e10cSrcweir }
145cdf0e10cSrcweir // -----------------------------------------------------------------------------
getMetaData()146cdf0e10cSrcweir Reference< XDatabaseMetaData> OColumnControlWindow::getMetaData()
147cdf0e10cSrcweir {
148cdf0e10cSrcweir 	if ( m_xConnection.is() )
149cdf0e10cSrcweir 		return m_xConnection->getMetaData();
150cdf0e10cSrcweir 	return Reference< XDatabaseMetaData>();
151cdf0e10cSrcweir }
152cdf0e10cSrcweir // -----------------------------------------------------------------------------
getConnection()153cdf0e10cSrcweir Reference< XConnection> OColumnControlWindow::getConnection()
154cdf0e10cSrcweir {
155cdf0e10cSrcweir 	return m_xConnection;
156cdf0e10cSrcweir }
157cdf0e10cSrcweir // -----------------------------------------------------------------------------
setConnection(const Reference<XConnection> & _xCon)158cdf0e10cSrcweir void OColumnControlWindow::setConnection(const Reference< XConnection>& _xCon)
159cdf0e10cSrcweir {
160cdf0e10cSrcweir 	m_xConnection = _xCon;
161cdf0e10cSrcweir 	m_xFormatter = NULL;
162cdf0e10cSrcweir 	m_aDestTypeInfoIndex.clear();
163cdf0e10cSrcweir 	m_aDestTypeInfo.clear();
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 	if ( m_xConnection.is() )
166cdf0e10cSrcweir 	{
167cdf0e10cSrcweir 		Init();
168cdf0e10cSrcweir 
169cdf0e10cSrcweir 		::dbaui::fillTypeInfo(m_xConnection,m_sTypeNames,m_aDestTypeInfo,m_aDestTypeInfoIndex);
170cdf0e10cSrcweir         // read autoincrement value set in the datasource
171cdf0e10cSrcweir 		::dbaui::fillAutoIncrementValue(m_xConnection,m_bAutoIncrementEnabled,m_sAutoIncrementValue);
172cdf0e10cSrcweir 	}
173cdf0e10cSrcweir }
174cdf0e10cSrcweir // -----------------------------------------------------------------------------
isAutoIncrementValueEnabled() const175cdf0e10cSrcweir sal_Bool OColumnControlWindow::isAutoIncrementValueEnabled() const
176cdf0e10cSrcweir {
177cdf0e10cSrcweir 	return m_bAutoIncrementEnabled;
178cdf0e10cSrcweir }
179cdf0e10cSrcweir // -----------------------------------------------------------------------------
getAutoIncrementValue() const180cdf0e10cSrcweir ::rtl::OUString OColumnControlWindow::getAutoIncrementValue() const
181cdf0e10cSrcweir {
182cdf0e10cSrcweir 	return m_sAutoIncrementValue;
183cdf0e10cSrcweir }
184cdf0e10cSrcweir // -----------------------------------------------------------------------------
getDefaultTyp() const185cdf0e10cSrcweir TOTypeInfoSP OColumnControlWindow::getDefaultTyp() const
186cdf0e10cSrcweir {
187cdf0e10cSrcweir 	if ( !m_pTypeInfo.get() )
188cdf0e10cSrcweir 	{
189cdf0e10cSrcweir 		m_pTypeInfo = TOTypeInfoSP(new OTypeInfo());
190cdf0e10cSrcweir 		m_pTypeInfo->aUIName = m_sTypeNames.GetToken(TYPE_OTHER);
191cdf0e10cSrcweir 	}
192cdf0e10cSrcweir 	return m_pTypeInfo;
193cdf0e10cSrcweir }
194cdf0e10cSrcweir // -----------------------------------------------------------------------------
195