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