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_dbui.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