xref: /AOO41X/main/dbaccess/source/ui/uno/ColumnControl.cxx (revision 96de54900b79e13b861fbc62cbf36018b54e21b7)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_dbaccess.hxx"
26 #ifndef DBAUI_COLUMNCONTROL_HXX
27 #include "ColumnControl.hxx"
28 #endif
29 #ifndef DBAUI_COLUMNPEER_HXX
30 #include "ColumnPeer.hxx"
31 #endif
32 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
33 #include "dbustrings.hrc"
34 #endif
35 #ifndef _DBASHARED_APITOOLS_HXX_
36 #include "apitools.hxx"
37 #endif
38 #ifndef _COM_SUN_STAR_AWT_POSSIZE_HPP_
39 #include <com/sun/star/awt/PosSize.hpp>
40 #endif
41 #ifndef _DBU_REGHELPER_HXX_
42 #include "dbu_reghelper.hxx"
43 #endif
44 
createRegistryInfo_OColumnControl()45 extern "C" void SAL_CALL createRegistryInfo_OColumnControl()
46 {
47     static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OColumnControl> aAutoRegistration;
48 }
49 //.........................................................................
50 namespace dbaui
51 {
52 //.........................................................................
53 using namespace ::com::sun::star::uno;
54 using namespace ::com::sun::star::awt;
55 using namespace ::com::sun::star::beans;
56 using namespace ::com::sun::star::lang;
57 using namespace ::com::sun::star::sdbc;
58 
OColumnControl(const Reference<XMultiServiceFactory> & _rxFactory)59 OColumnControl::OColumnControl(const Reference<XMultiServiceFactory>& _rxFactory)
60     :UnoControl( _rxFactory )
61 {
62 }
63 // -----------------------------------------------------------------------------
64 IMPLEMENT_SERVICE_INFO2_STATIC(OColumnControl,SERVICE_CONTROLDEFAULT,"com.sun.star.awt.UnoControl","com.sun.star.sdb.ColumnDescriptorControl")
65 // -----------------------------------------------------------------------------
GetComponentServiceName()66 ::rtl::OUString OColumnControl::GetComponentServiceName()
67 {
68     return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.ColumnDescriptorControl"));
69 }
70 // -----------------------------------------------------------------------------
createPeer(const Reference<XToolkit> &,const Reference<XWindowPeer> & rParentPeer)71 void SAL_CALL OColumnControl::createPeer(const Reference< XToolkit >& /*rToolkit*/, const Reference< XWindowPeer >& rParentPeer) throw( RuntimeException )
72 {
73     ::osl::ClearableMutexGuard aGuard( GetMutex() );
74     if ( !getPeer().is() )
75     {
76         mbCreatingPeer = sal_True;
77 
78         Window* pParentWin = NULL;
79         if (rParentPeer.is())
80         {
81             VCLXWindow* pParent = VCLXWindow::GetImplementation(rParentPeer);
82             if (pParent)
83                 pParentWin = pParent->GetWindow();
84         }
85 
86         OColumnPeer* pPeer = new OColumnPeer( pParentWin, maContext.getLegacyServiceFactory() );
87         OSL_ENSURE(pPeer != NULL, "FmXGridControl::createPeer : imp_CreatePeer didn't return a peer !");
88         setPeer( pPeer );
89 
90         UnoControlComponentInfos aComponentInfos(maComponentInfos);
91         Reference< XGraphics > xGraphics( mxGraphics );
92         Reference< XView >  xV(getPeer(), UNO_QUERY);
93         Reference< XWindow >    xW(getPeer(), UNO_QUERY);
94 
95         aGuard.clear();
96 
97         updateFromModel();
98 
99         xV->setZoom( aComponentInfos.nZoomX, aComponentInfos.nZoomY );
100         setPosSize( aComponentInfos.nX, aComponentInfos.nY, aComponentInfos.nWidth, aComponentInfos.nHeight, ::com::sun::star::awt::PosSize::POSSIZE );
101 
102         Reference<XPropertySet> xProp(getModel(), UNO_QUERY);
103         if ( xProp.is() )
104         {
105             Reference<XConnection> xCon(xProp->getPropertyValue(PROPERTY_ACTIVE_CONNECTION),UNO_QUERY);
106             pPeer->setConnection(xCon);
107             Reference<XPropertySet> xColumn(xProp->getPropertyValue(PROPERTY_COLUMN),UNO_QUERY);
108             pPeer->setColumn(xColumn);
109             sal_Int32 nWidth = 50;
110             xProp->getPropertyValue(PROPERTY_EDIT_WIDTH) >>= nWidth;
111             pPeer->setEditWidth(nWidth);
112         }
113 
114         if (aComponentInfos.bVisible)
115             xW->setVisible(sal_True);
116 
117         if (!aComponentInfos.bEnable)
118             xW->setEnable(sal_False);
119 
120         if (maWindowListeners.getLength())
121             xW->addWindowListener( &maWindowListeners );
122 
123         if (maFocusListeners.getLength())
124             xW->addFocusListener( &maFocusListeners );
125 
126         if (maKeyListeners.getLength())
127             xW->addKeyListener( &maKeyListeners );
128 
129         if (maMouseListeners.getLength())
130             xW->addMouseListener( &maMouseListeners );
131 
132         if (maMouseMotionListeners.getLength())
133             xW->addMouseMotionListener( &maMouseMotionListeners );
134 
135         if (maPaintListeners.getLength())
136             xW->addPaintListener( &maPaintListeners );
137 
138         Reference< ::com::sun::star::awt::XView >  xPeerView(getPeer(), UNO_QUERY);
139         xPeerView->setZoom( maComponentInfos.nZoomX, maComponentInfos.nZoomY );
140         xPeerView->setGraphics( xGraphics );
141 
142         mbCreatingPeer = sal_False;
143     }
144 }
145 //.........................................................................
146 }   // namespace dbaui
147 //.........................................................................
148