xref: /AOO41X/main/dbaccess/source/ui/querydesign/TableWindowTitle.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_TABLEWINDOWTITLE_HXX
27 #include "TableWindowTitle.hxx"
28 #endif
29 #ifndef DBAUI_TABLEWINDOW_HXX
30 #include "TableWindow.hxx"
31 #endif
32 #ifndef DBAUI_QUERYTABLEVIEW_HXX
33 #include "QueryTableView.hxx"
34 #endif
35 #ifndef _SV_SVAPP_HXX
36 #include <vcl/svapp.hxx>
37 #endif
38 #ifndef _SV_HELP_HXX
39 #include <vcl/help.hxx>
40 #endif
41 #ifndef _SV_MENU_HXX
42 #include <vcl/menu.hxx>
43 #endif
44 #ifndef _TOOLS_DEBUG_HXX
45 #include <tools/debug.hxx>
46 #endif
47 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
48 #include "dbustrings.hrc"
49 #endif
50 #ifndef _CNTIDS_HRC
51 #include <sfx2/cntids.hrc>
52 #endif
53 #ifndef DBAUI_TABLEWINDOWLISTBOX_HXX
54 #include "TableWindowListBox.hxx"
55 #endif
56 #ifndef DBAUI_TABLECONNECTION_HXX
57 #include "TableConnection.hxx"
58 #endif
59 #ifndef _DBU_QRY_HRC_
60 #include "dbu_qry.hrc"
61 #endif
62 #ifndef DBAUI_QUERYDESIGNVIEW_HXX
63 #include "QueryDesignView.hxx"
64 #endif
65 #ifndef DBAUI_JOINCONTROLLER_HXX
66 #include "JoinController.hxx"
67 #endif
68 
69 #include <algorithm>
70 
71 using namespace dbaui;
72 using namespace ::com::sun::star::beans;
73 using namespace ::com::sun::star::uno;
74 //==================================================================
75 // class OTableWindowTitle
76 //==================================================================
DBG_NAME(OTableWindowTitle)77 DBG_NAME(OTableWindowTitle)
78 //------------------------------------------------------------------------------
79 OTableWindowTitle::OTableWindowTitle( OTableWindow* pParent ) :
80      FixedText( pParent, WB_3DLOOK|WB_LEFT|WB_NOLABEL|WB_VCENTER )
81     ,m_pTabWin( pParent )
82 {
83     DBG_CTOR(OTableWindowTitle,NULL);
84     // Hintergrund- und Textfarbe setzen
85     StyleSettings aSystemStyle = Application::GetSettings().GetStyleSettings();
86     SetBackground(Wallpaper(Color(aSystemStyle.GetFaceColor())));
87     SetTextColor(aSystemStyle.GetButtonTextColor());
88 
89     Font aFont( GetFont() );
90     aFont.SetTransparent( sal_True );
91     SetFont( aFont );
92 }
93 
94 //------------------------------------------------------------------------------
~OTableWindowTitle()95 OTableWindowTitle::~OTableWindowTitle()
96 {
97     DBG_DTOR(OTableWindowTitle,NULL);
98     m_pTabWin = NULL;
99 }
100 
101 //------------------------------------------------------------------------------
GetFocus()102 void OTableWindowTitle::GetFocus()
103 {
104     if(m_pTabWin)
105         m_pTabWin->GetFocus();
106 }
107 
108 //------------------------------------------------------------------------------
LoseFocus()109 void OTableWindowTitle::LoseFocus()
110 {
111     m_pTabWin->LoseFocus();
112 }
113 //------------------------------------------------------------------------------
RequestHelp(const HelpEvent & rHEvt)114 void OTableWindowTitle::RequestHelp( const HelpEvent& rHEvt )
115 {
116     if(m_pTabWin)
117     {
118         String aHelpText = m_pTabWin->GetComposedName();
119         if( aHelpText.Len())
120         {
121             // Hilfe anzeigen
122             Rectangle aItemRect(Point(0,0),GetSizePixel());
123             aItemRect = LogicToPixel( aItemRect );
124             Point aPt = OutputToScreenPixel( aItemRect.TopLeft() );
125             aItemRect.Left()   = aPt.X();
126             aItemRect.Top()    = aPt.Y();
127             aPt = OutputToScreenPixel( aItemRect.BottomRight() );
128             aItemRect.Right()  = aPt.X();
129             aItemRect.Bottom() = aPt.Y();
130             if( rHEvt.GetMode() == HELPMODE_BALLOON )
131                 Help::ShowBalloon( this, aItemRect.Center(), aItemRect, aHelpText);
132             else
133                 Help::ShowQuickHelp( this, aItemRect, aHelpText );
134         }
135     }
136 }
137 
138 //------------------------------------------------------------------------------
Command(const CommandEvent & rEvt)139 void OTableWindowTitle::Command( const CommandEvent& rEvt )
140 {
141     switch( rEvt.GetCommand() )
142     {
143         case COMMAND_CONTEXTMENU:
144         {
145             GrabFocus();
146             if ( m_pTabWin )
147                 m_pTabWin->Command( rEvt );
148             else
149                 Control::Command(rEvt);
150         }
151     }
152 }
153 
154 //------------------------------------------------------------------------------
155 //void OTableWindowTitle::Paint( const Rectangle& rRect )
156 //{
157 //  //////////////////////////////////////////////////////////////////////
158 //  // Ausgabe des Textes in der Titelzeile
159 //  Rectangle aWinRect( Point(0,0), GetSizePixel() );
160 //  DrawText( aWinRect, GetText(), TEXT_DRAW_CENTER|TEXT_DRAW_VCENTER|TEXT_DRAW_ENDELLIPSIS );
161 //}
162 
163 //------------------------------------------------------------------------------
KeyInput(const KeyEvent & rEvt)164 void OTableWindowTitle::KeyInput( const KeyEvent& rEvt )
165 {
166     if ( m_pTabWin )
167         m_pTabWin->KeyInput( rEvt );
168 }
169 
170 //------------------------------------------------------------------------------
MouseButtonDown(const MouseEvent & rEvt)171 void OTableWindowTitle::MouseButtonDown( const MouseEvent& rEvt )
172 {
173     if( rEvt.IsLeft() )
174     {
175         if( rEvt.GetClicks() == 2)
176         {
177             Size aSize(GetTextWidth(GetText()) + 20,
178                         m_pTabWin->GetSizePixel().Height() - m_pTabWin->GetListBox()->GetSizePixel().Height());
179 
180             aSize.Height() += (m_pTabWin->GetListBox()->GetEntryCount() + 2) * m_pTabWin->GetListBox()->GetEntryHeight();
181             if(m_pTabWin->GetSizePixel() != aSize)
182             {
183                 m_pTabWin->SetSizePixel(aSize);
184 
185                 OJoinTableView* pView = static_cast<OJoinTableView*>(m_pTabWin->getTableView());
186                 OSL_ENSURE(pView,"No OJoinTableView!");
187                 const ::std::vector<OTableConnection*>* pConns = pView->getTableConnections();
188                 ::std::for_each(pConns->begin(),
189                                 pConns->end(),
190                                 ::std::mem_fun(&OTableConnection::RecalcLines));
191 
192                 pView->InvalidateConnections();
193                 pView->getDesignView()->getController().setModified(sal_True);
194                 pView->Invalidate(INVALIDATE_NOCHILDREN);
195             }
196         }
197         else
198         {
199             Point aPos = rEvt.GetPosPixel();
200             aPos = OutputToScreenPixel( aPos );
201             OJoinTableView* pView = static_cast<OJoinTableView*>(m_pTabWin->getTableView());
202             OSL_ENSURE(pView,"No OJoinTableView!");
203             pView->NotifyTitleClicked( static_cast<OTableWindow*>(GetParent()), aPos );
204         }
205         GrabFocus();
206     }
207     else
208         Control::MouseButtonDown( rEvt );
209 }
210 
211 
212 //------------------------------------------------------------------------------
DataChanged(const DataChangedEvent & rDCEvt)213 void OTableWindowTitle::DataChanged(const DataChangedEvent& rDCEvt)
214 {
215     if (rDCEvt.GetType() == DATACHANGED_SETTINGS)
216     {
217         // nehmen wir den worst-case an : die Farben haben sich geaendert, also
218         // mich anpassen
219         StyleSettings aSystemStyle = Application::GetSettings().GetStyleSettings();
220         SetBackground(Wallpaper(Color(aSystemStyle.GetFaceColor())));
221         SetTextColor(aSystemStyle.GetButtonTextColor());
222     }
223 }
224 // -----------------------------------------------------------------------------
StateChanged(StateChangedType nType)225 void OTableWindowTitle::StateChanged( StateChangedType nType )
226 {
227     Window::StateChanged( nType );
228 
229     if ( nType == STATE_CHANGE_ZOOM )
230     {
231         const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
232 
233         Font aFont = rStyleSettings.GetGroupFont();
234         if ( IsControlFont() )
235             aFont.Merge( GetControlFont() );
236         SetZoomedPointFont( aFont );
237 
238         Resize();
239     }
240 }
241 
242 
243 
244 
245