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