1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #ifndef BIB_HRC
28*b1cdbd2cSJim Jagielski #include "bib.hrc"
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski #include "bibcont.hxx"
31*b1cdbd2cSJim Jagielski #include "bibbeam.hxx"
32*b1cdbd2cSJim Jagielski #include "bibmod.hxx"
33*b1cdbd2cSJim Jagielski #include "general.hxx"
34*b1cdbd2cSJim Jagielski #include "bibview.hxx"
35*b1cdbd2cSJim Jagielski #include "datman.hxx"
36*b1cdbd2cSJim Jagielski #include "bibresid.hxx"
37*b1cdbd2cSJim Jagielski #include "bibmod.hxx"
38*b1cdbd2cSJim Jagielski #include "sections.hrc"
39*b1cdbd2cSJim Jagielski #include "bibconfig.hxx"
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XResultSetUpdate.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XLoadable.hpp>
45*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
46*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
49*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::form;
50*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
51*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
52*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski #define C2U( cChar ) ::rtl::OUString::createFromAscii( cChar )
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski //.........................................................................
57*b1cdbd2cSJim Jagielski namespace bib
58*b1cdbd2cSJim Jagielski {
59*b1cdbd2cSJim Jagielski //.........................................................................
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------
BibView(Window * _pParent,BibDataManager * _pManager,WinBits _nStyle)62*b1cdbd2cSJim Jagielski 	BibView::BibView( Window* _pParent, BibDataManager* _pManager, WinBits _nStyle )
63*b1cdbd2cSJim Jagielski 		:BibWindow( _pParent, _nStyle )
64*b1cdbd2cSJim Jagielski 		,m_pDatMan( _pManager )
65*b1cdbd2cSJim Jagielski 		,m_xDatMan( _pManager )
66*b1cdbd2cSJim Jagielski 		,m_pGeneralPage( NULL )
67*b1cdbd2cSJim Jagielski 	{
68*b1cdbd2cSJim Jagielski 		if ( m_xDatMan.is() )
69*b1cdbd2cSJim Jagielski 			connectForm( m_xDatMan );
70*b1cdbd2cSJim Jagielski 	}
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski 	// -----------------------------------------------------------------------
~BibView()73*b1cdbd2cSJim Jagielski 	BibView::~BibView()
74*b1cdbd2cSJim Jagielski 	{
75*b1cdbd2cSJim Jagielski 		BibGeneralPage* pGeneralPage = m_pGeneralPage;
76*b1cdbd2cSJim Jagielski 		m_pGeneralPage = NULL;
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 		pGeneralPage->CommitActiveControl();
79*b1cdbd2cSJim Jagielski 		Reference< XForm > xForm = m_pDatMan->getForm();
80*b1cdbd2cSJim Jagielski 		Reference< XPropertySet > xProps( xForm, UNO_QUERY );
81*b1cdbd2cSJim Jagielski 		Reference< sdbc::XResultSetUpdate > xResUpd( xProps, UNO_QUERY );
82*b1cdbd2cSJim Jagielski 		DBG_ASSERT( xResUpd.is(), "BibView::~BibView: invalid form!" );
83*b1cdbd2cSJim Jagielski 
84*b1cdbd2cSJim Jagielski 		if ( xResUpd.is() )
85*b1cdbd2cSJim Jagielski 		{
86*b1cdbd2cSJim Jagielski 			Any aModified = xProps->getPropertyValue( C2U( "IsModified" ) );
87*b1cdbd2cSJim Jagielski 			sal_Bool bFlag = sal_False;
88*b1cdbd2cSJim Jagielski 			if ( ( aModified >>= bFlag ) && bFlag )
89*b1cdbd2cSJim Jagielski 			{
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski                 try
92*b1cdbd2cSJim Jagielski                 {
93*b1cdbd2cSJim Jagielski                     Any aNew = xProps->getPropertyValue( C2U( "IsNew" ) );
94*b1cdbd2cSJim Jagielski                     aNew >>= bFlag;
95*b1cdbd2cSJim Jagielski                     if ( bFlag )
96*b1cdbd2cSJim Jagielski                         xResUpd->insertRow();
97*b1cdbd2cSJim Jagielski                     else
98*b1cdbd2cSJim Jagielski                         xResUpd->updateRow();
99*b1cdbd2cSJim Jagielski                 }
100*b1cdbd2cSJim Jagielski                 catch( const uno::Exception& rEx)
101*b1cdbd2cSJim Jagielski                 {
102*b1cdbd2cSJim Jagielski                    (void) rEx;
103*b1cdbd2cSJim Jagielski                 }
104*b1cdbd2cSJim Jagielski 			}
105*b1cdbd2cSJim Jagielski 		}
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski 		if ( isFormConnected() )
108*b1cdbd2cSJim Jagielski 			disconnectForm();
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 		pGeneralPage->RemoveListeners();
111*b1cdbd2cSJim Jagielski 		m_xGeneralPage = NULL;
112*b1cdbd2cSJim Jagielski 	}
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	/* -----------------16.11.99 13:13-------------------
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 	 --------------------------------------------------*/
UpdatePages()117*b1cdbd2cSJim Jagielski 	void BibView::UpdatePages()
118*b1cdbd2cSJim Jagielski 	{
119*b1cdbd2cSJim Jagielski 		// TODO:
120*b1cdbd2cSJim Jagielski 		// this is _strange_: Why not updating the existent general page?
121*b1cdbd2cSJim Jagielski 		// I consider the current behaviour a HACK.
122*b1cdbd2cSJim Jagielski 		// frank.schoenheit@sun.com
123*b1cdbd2cSJim Jagielski 		if ( m_pGeneralPage )
124*b1cdbd2cSJim Jagielski 		{
125*b1cdbd2cSJim Jagielski 			m_pGeneralPage->Hide();
126*b1cdbd2cSJim Jagielski 			m_pGeneralPage->RemoveListeners();
127*b1cdbd2cSJim Jagielski 			m_xGeneralPage = 0;
128*b1cdbd2cSJim Jagielski 		}
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski 		m_xGeneralPage = m_pGeneralPage = new BibGeneralPage( this, m_pDatMan );
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 		Resize();
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski 		if( HasFocus() )
135*b1cdbd2cSJim Jagielski 			// "delayed" GetFocus() because GetFocus() is initially called before GeneralPage is created
136*b1cdbd2cSJim Jagielski 			m_pGeneralPage->GrabFocus();
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 		String sErrorString( m_pGeneralPage->GetErrorString() );
139*b1cdbd2cSJim Jagielski 		if ( sErrorString.Len() )
140*b1cdbd2cSJim Jagielski 		{
141*b1cdbd2cSJim Jagielski             sal_Bool bExecute = BibModul::GetConfig()->IsShowColumnAssignmentWarning();
142*b1cdbd2cSJim Jagielski             if(!m_pDatMan->HasActiveConnection())
143*b1cdbd2cSJim Jagielski             {
144*b1cdbd2cSJim Jagielski                 //no connection is available -> the data base has to be assigned
145*b1cdbd2cSJim Jagielski                 m_pDatMan->DispatchDBChangeDialog();
146*b1cdbd2cSJim Jagielski                 bExecute = sal_False;
147*b1cdbd2cSJim Jagielski             }
148*b1cdbd2cSJim Jagielski             else if(bExecute)
149*b1cdbd2cSJim Jagielski             {
150*b1cdbd2cSJim Jagielski                 sErrorString += '\n';
151*b1cdbd2cSJim Jagielski                 sErrorString += String( BibResId( RID_MAP_QUESTION ) );
152*b1cdbd2cSJim Jagielski                 QueryBox aQuery( this, WB_YES_NO, sErrorString );
153*b1cdbd2cSJim Jagielski                 aQuery.SetDefaultCheckBoxText();
154*b1cdbd2cSJim Jagielski                 short nResult = aQuery.Execute();
155*b1cdbd2cSJim Jagielski                 BibModul::GetConfig()->SetShowColumnAssignmentWarning(
156*b1cdbd2cSJim Jagielski                     !aQuery.GetCheckBoxState());
157*b1cdbd2cSJim Jagielski                 if( RET_YES != nResult )
158*b1cdbd2cSJim Jagielski                 {
159*b1cdbd2cSJim Jagielski                     bExecute = sal_False;
160*b1cdbd2cSJim Jagielski                 }
161*b1cdbd2cSJim Jagielski             }
162*b1cdbd2cSJim Jagielski             if(bExecute)
163*b1cdbd2cSJim Jagielski 			{
164*b1cdbd2cSJim Jagielski 				Application::PostUserEvent( STATIC_LINK( this, BibView, CallMappingHdl ) );
165*b1cdbd2cSJim Jagielski 			}
166*b1cdbd2cSJim Jagielski 		}
167*b1cdbd2cSJim Jagielski 	}
168*b1cdbd2cSJim Jagielski 	//---------------------------------------------------------------------
169*b1cdbd2cSJim Jagielski 	//--- 19.10.01 16:55:49 -----------------------------------------------
170*b1cdbd2cSJim Jagielski 
_loaded(const EventObject & _rEvent)171*b1cdbd2cSJim Jagielski 	void BibView::_loaded( const EventObject& _rEvent )
172*b1cdbd2cSJim Jagielski 	{
173*b1cdbd2cSJim Jagielski 		UpdatePages();
174*b1cdbd2cSJim Jagielski 		FormControlContainer::_loaded( _rEvent );
175*b1cdbd2cSJim Jagielski 	}
176*b1cdbd2cSJim Jagielski 
_reloaded(const EventObject & _rEvent)177*b1cdbd2cSJim Jagielski 	void BibView::_reloaded( const EventObject& _rEvent )
178*b1cdbd2cSJim Jagielski 	{
179*b1cdbd2cSJim Jagielski 		UpdatePages();
180*b1cdbd2cSJim Jagielski 		FormControlContainer::_loaded( _rEvent );
181*b1cdbd2cSJim Jagielski 	}
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski 	/* -----------------------------02.02.00 16:49--------------------------------
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski 	 ---------------------------------------------------------------------------*/
IMPL_STATIC_LINK(BibView,CallMappingHdl,BibView *,EMPTYARG)186*b1cdbd2cSJim Jagielski 	IMPL_STATIC_LINK( BibView, CallMappingHdl, BibView*, EMPTYARG )
187*b1cdbd2cSJim Jagielski 	{
188*b1cdbd2cSJim Jagielski 		pThis->m_pDatMan->CreateMappingDialog( pThis );
189*b1cdbd2cSJim Jagielski 		return 0;
190*b1cdbd2cSJim Jagielski 	}
191*b1cdbd2cSJim Jagielski 	/* -----------------------------13.04.00 16:12--------------------------------
192*b1cdbd2cSJim Jagielski 
193*b1cdbd2cSJim Jagielski 	 ---------------------------------------------------------------------------*/
Resize()194*b1cdbd2cSJim Jagielski 	void BibView::Resize()
195*b1cdbd2cSJim Jagielski 	{
196*b1cdbd2cSJim Jagielski 		if ( m_pGeneralPage )
197*b1cdbd2cSJim Jagielski 		{
198*b1cdbd2cSJim Jagielski 			::Size aSz( GetOutputSizePixel() );
199*b1cdbd2cSJim Jagielski 			m_pGeneralPage->SetSizePixel( aSz );
200*b1cdbd2cSJim Jagielski 		}
201*b1cdbd2cSJim Jagielski 		Window::Resize();
202*b1cdbd2cSJim Jagielski 	}
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 	//---------------------------------------------------------------------
205*b1cdbd2cSJim Jagielski 	//--- 18.10.01 18:52:45 -----------------------------------------------
206*b1cdbd2cSJim Jagielski 
getControlContainer()207*b1cdbd2cSJim Jagielski 	Reference< awt::XControlContainer > BibView::getControlContainer()
208*b1cdbd2cSJim Jagielski 	{
209*b1cdbd2cSJim Jagielski 		Reference< awt::XControlContainer > xReturn;
210*b1cdbd2cSJim Jagielski 		if ( m_pGeneralPage )
211*b1cdbd2cSJim Jagielski 			xReturn = m_pGeneralPage->GetControlContainer();
212*b1cdbd2cSJim Jagielski 		return xReturn;
213*b1cdbd2cSJim Jagielski 	}
214*b1cdbd2cSJim Jagielski 
GetFocus()215*b1cdbd2cSJim Jagielski 	void BibView::GetFocus()
216*b1cdbd2cSJim Jagielski 	{
217*b1cdbd2cSJim Jagielski 		if( m_pGeneralPage )
218*b1cdbd2cSJim Jagielski 			m_pGeneralPage->GrabFocus();
219*b1cdbd2cSJim Jagielski 	}
220*b1cdbd2cSJim Jagielski 
HandleShortCutKey(const KeyEvent & rKeyEvent)221*b1cdbd2cSJim Jagielski 	sal_Bool BibView::HandleShortCutKey( const KeyEvent& rKeyEvent )
222*b1cdbd2cSJim Jagielski 	{
223*b1cdbd2cSJim Jagielski 		return m_pGeneralPage? m_pGeneralPage->HandleShortCutKey( rKeyEvent ) : sal_False;
224*b1cdbd2cSJim Jagielski 	}
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski //.........................................................................
227*b1cdbd2cSJim Jagielski }	// namespace bib
228*b1cdbd2cSJim Jagielski //.........................................................................
229