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_APPVIEW_HXX 27 #include "AppView.hxx" 28 #endif 29 #ifndef _DBU_APP_HRC_ 30 #include "dbu_app.hrc" 31 #endif 32 #ifndef _TOOLS_DEBUG_HXX 33 #include <tools/debug.hxx> 34 #endif 35 #ifndef TOOLS_DIAGNOSE_EX_H 36 #include <tools/diagnose_ex.h> 37 #endif 38 #ifndef _DBA_DBACCESS_HELPID_HRC_ 39 #include "dbaccess_helpid.hrc" 40 #endif 41 #ifndef _SV_TOOLBOX_HXX 42 #include <vcl/toolbox.hxx> 43 #endif 44 #ifndef _UTL_CONFIGMGR_HXX_ 45 #include <unotools/configmgr.hxx> 46 #endif 47 #ifndef _SV_WAITOBJ_HXX 48 #include <vcl/waitobj.hxx> 49 #endif 50 #ifndef _COMPHELPER_TYPES_HXX_ 51 #include <comphelper/types.hxx> 52 #endif 53 #ifndef _COM_SUN_STAR_DATATRANSFER_CLIPBOARD_XCLIPBOARD_HPP_ 54 #include <com/sun/star/datatransfer/clipboard/XClipboard.hpp> 55 #endif 56 #ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_ 57 #include <com/sun/star/beans/XPropertySet.hpp> 58 #endif 59 #ifndef _COM_SUN_STAR_SDBCX_XTABLESSUPPLIER_HPP_ 60 #include <com/sun/star/sdbcx/XTablesSupplier.hpp> 61 #endif 62 #ifndef _COM_SUN_STAR_SDB_XQUERIESSUPPLIER_HPP_ 63 #include <com/sun/star/sdb/XQueriesSupplier.hpp> 64 #endif 65 #ifndef INCLUDED_SVTOOLS_SYSLOCALE_HXX 66 #include <unotools/syslocale.hxx> 67 #endif 68 #ifndef DBAUI_TOOLS_HXX 69 #include "UITools.hxx" 70 #endif 71 #ifndef DBAUI_APPDETAILVIEW_HXX 72 #include "AppDetailView.hxx" 73 #endif 74 #ifndef _DBAUI_TABLETREE_HXX_ 75 #include "tabletree.hxx" 76 #endif 77 #ifndef DBAUI_APPSWAPWINDOW_HXX 78 #include "AppSwapWindow.hxx" 79 #endif 80 #ifndef _SV_SVAPP_HXX //autogen 81 #include <vcl/svapp.hxx> 82 #endif 83 #ifndef DBAUI_APPSWAPWINDOW_HXX 84 #include "AppSwapWindow.hxx" 85 #endif 86 #ifndef DBAUI_TITLE_WINDOW_HXX 87 #include "AppTitleWindow.hxx" 88 #endif 89 #ifndef _DBAUI_DSNTYPES_HXX_ 90 #include "dsntypes.hxx" 91 #endif 92 #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC 93 #include "dbustrings.hrc" 94 #endif 95 #ifndef DBAUI_ICONTROLLER_HXX 96 #include "IController.hxx" 97 #endif 98 #ifndef DBACCESS_UI_BROWSER_ID_HXX 99 #include "browserids.hxx" 100 #endif 101 #ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX 102 #include <unotools/pathoptions.hxx> 103 #endif 104 #include "IApplicationController.hxx" 105 106 using namespace ::dbaui; 107 using namespace ::com::sun::star::uno; 108 using namespace ::com::sun::star::ucb; 109 using namespace ::com::sun::star::beans; 110 using namespace ::com::sun::star::sdb; 111 using namespace ::com::sun::star::sdbc; 112 using namespace ::com::sun::star::sdbcx; 113 using namespace ::com::sun::star::datatransfer::clipboard; 114 using namespace ::com::sun::star::lang; 115 using namespace ::com::sun::star::beans; 116 using namespace ::com::sun::star::frame; 117 using namespace ::com::sun::star::container; 118 using ::com::sun::star::sdb::application::NamedDatabaseObject; 119 120 //================================================================== 121 // class OAppBorderWindow 122 DBG_NAME(OAppBorderWindow) 123 //================================================================== 124 OAppBorderWindow::OAppBorderWindow(OApplicationView* _pParent,PreviewMode _ePreviewMode) : Window(_pParent,WB_DIALOGCONTROL) 125 ,m_pPanel(NULL) 126 ,m_pDetailView(NULL) 127 ,m_pView(_pParent) 128 { 129 DBG_CTOR(OAppBorderWindow,NULL); 130 131 SetBorderStyle(WINDOW_BORDER_MONO); 132 133 m_pPanel = new OTitleWindow(this,STR_DATABASE,WB_BORDER | WB_DIALOGCONTROL ,sal_False); 134 m_pPanel->SetBorderStyle(WINDOW_BORDER_MONO); 135 OApplicationSwapWindow* pSwap = new OApplicationSwapWindow( m_pPanel, *this ); 136 pSwap->Show(); 137 pSwap->SetUniqueId(UID_APP_SWAP_VIEW); 138 139 m_pPanel->setChildWindow(pSwap); 140 m_pPanel->SetUniqueId(UID_APP_DATABASE_VIEW); 141 m_pPanel->Show(); 142 143 m_pDetailView = new OApplicationDetailView(*this,_ePreviewMode); 144 m_pDetailView->Show(); 145 146 ImplInitSettings(); 147 } 148 // ----------------------------------------------------------------------------- 149 OAppBorderWindow::~OAppBorderWindow() 150 { 151 ////////////////////////////////////////////////////////////////////// 152 // Childs zerstoeren 153 if ( m_pPanel ) 154 { 155 m_pPanel->Hide(); 156 ::std::auto_ptr<Window> aTemp(m_pPanel); 157 m_pPanel = NULL; 158 } 159 if ( m_pDetailView ) 160 { 161 m_pDetailView->Hide(); 162 ::std::auto_ptr<Window> aTemp(m_pDetailView); 163 m_pDetailView = NULL; 164 } 165 166 DBG_DTOR(OAppBorderWindow,NULL); 167 } 168 // ----------------------------------------------------------------------------- 169 void OAppBorderWindow::GetFocus() 170 { 171 if ( m_pPanel ) 172 m_pPanel->GrabFocus(); 173 } 174 // ----------------------------------------------------------------------------- 175 void OAppBorderWindow::Resize() 176 { 177 ////////////////////////////////////////////////////////////////////// 178 // Abmessungen parent window 179 Size aOutputSize( GetOutputSize() ); 180 long nOutputWidth = aOutputSize.Width(); 181 long nOutputHeight = aOutputSize.Height(); 182 long nX = 0; 183 184 Size aFLSize = LogicToPixel( Size( 3, 8 ), MAP_APPFONT ); 185 if ( m_pPanel ) 186 { 187 OApplicationSwapWindow* pSwap = getPanel(); 188 if ( pSwap ) 189 { 190 if ( pSwap->GetEntryCount() != 0 ) 191 nX = pSwap->GetBoundingBox( pSwap->GetEntry(0) ).GetWidth() + aFLSize.Height(); 192 } 193 nX = ::std::max(m_pPanel->GetWidthPixel() ,nX); 194 m_pPanel->SetPosSizePixel(Point(0,0),Size(nX,nOutputHeight)); 195 } 196 197 if ( m_pDetailView ) 198 m_pDetailView->SetPosSizePixel(Point(nX + aFLSize.Width(),0),Size(nOutputWidth - nX - aFLSize.Width(),nOutputHeight)); 199 } 200 // ----------------------------------------------------------------------------- 201 void OAppBorderWindow::DataChanged( const DataChangedEvent& rDCEvt ) 202 { 203 Window::DataChanged( rDCEvt ); 204 205 if ( (rDCEvt.GetType() == DATACHANGED_FONTS) || 206 (rDCEvt.GetType() == DATACHANGED_DISPLAY) || 207 (rDCEvt.GetType() == DATACHANGED_FONTSUBSTITUTION) || 208 ((rDCEvt.GetType() == DATACHANGED_SETTINGS) && 209 (rDCEvt.GetFlags() & SETTINGS_STYLE)) ) 210 { 211 ImplInitSettings(); 212 Invalidate(); 213 } 214 } 215 // ----------------------------------------------------------------------------- 216 void OAppBorderWindow::ImplInitSettings() 217 { 218 const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); 219 if( true ) 220 { 221 Font aFont; 222 aFont = rStyleSettings.GetFieldFont(); 223 aFont.SetColor( rStyleSettings.GetWindowTextColor() ); 224 SetPointFont( aFont ); 225 } 226 227 if( true ) 228 { 229 SetTextColor( rStyleSettings.GetFieldTextColor() ); 230 SetTextFillColor(); 231 } 232 233 if( true ) 234 SetBackground( rStyleSettings.GetDialogColor() ); 235 236 /*SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetDialogColor() ) ); 237 SetFillColor( Application::GetSettings().GetStyleSettings().GetDialogColor() ); 238 SetTextFillColor( Application::GetSettings().GetStyleSettings().GetDialogColor() );*/ 239 } 240 // ----------------------------------------------------------------------------- 241 OApplicationView* OAppBorderWindow::getView() const 242 { 243 return m_pView; 244 } 245 246 // ----------------------------------------------------------------------------- 247 OApplicationSwapWindow* OAppBorderWindow::getPanel() const 248 { 249 return static_cast< OApplicationSwapWindow* >( m_pPanel->getChildWindow() ); 250 } 251 252 // ----------------------------------------------------------------------------- 253 OApplicationDetailView* OAppBorderWindow::getDetailView() const 254 { 255 return m_pDetailView; 256 } 257 258 //================================================================== 259 // class OApplicationView 260 //================================================================== 261 DBG_NAME(OApplicationView); 262 //------------------------------------------------------------------------------ 263 OApplicationView::OApplicationView( Window* pParent 264 ,const Reference< XMultiServiceFactory >& _rxOrb 265 ,IApplicationController& _rAppController 266 ,PreviewMode _ePreviewMode 267 ) : 268 ODataView( pParent, _rAppController, _rxOrb, WB_DIALOGCONTROL ) 269 ,m_rAppController( _rAppController ) 270 ,m_eChildFocus(NONE) 271 { 272 DBG_CTOR(OApplicationView,NULL); 273 274 try 275 { 276 m_aLocale = SvtSysLocale().GetLocaleData().getLocale(); 277 } 278 catch(Exception&) 279 { 280 } 281 282 m_pWin = new OAppBorderWindow(this,_ePreviewMode); 283 m_pWin->SetUniqueId(UID_APP_VIEW_BORDER_WIN); 284 m_pWin->Show(); 285 286 ImplInitSettings(); 287 } 288 289 //------------------------------------------------------------------------------ 290 OApplicationView::~OApplicationView() 291 { 292 DBG_DTOR(OApplicationView,NULL); 293 294 { 295 stopComponentListening(m_xObject); 296 m_pWin->Hide(); 297 ::std::auto_ptr<Window> aTemp(m_pWin); 298 m_pWin = NULL; 299 } 300 } 301 // ----------------------------------------------------------------------------- 302 void OApplicationView::createIconAutoMnemonics( MnemonicGenerator& _rMnemonics ) 303 { 304 if ( m_pWin && m_pWin->getPanel() ) 305 m_pWin->getPanel()->createIconAutoMnemonics( _rMnemonics ); 306 } 307 308 // ----------------------------------------------------------------------------- 309 void OApplicationView::setTaskExternalMnemonics( MnemonicGenerator& _rMnemonics ) 310 { 311 if ( m_pWin && m_pWin->getDetailView() ) 312 m_pWin->getDetailView()->setTaskExternalMnemonics( _rMnemonics ); 313 } 314 315 // ----------------------------------------------------------------------------- 316 void OApplicationView::DataChanged( const DataChangedEvent& rDCEvt ) 317 { 318 ODataView::DataChanged( rDCEvt ); 319 320 if ( (rDCEvt.GetType() == DATACHANGED_FONTS) || 321 (rDCEvt.GetType() == DATACHANGED_DISPLAY) || 322 (rDCEvt.GetType() == DATACHANGED_FONTSUBSTITUTION) || 323 ((rDCEvt.GetType() == DATACHANGED_SETTINGS) && 324 (rDCEvt.GetFlags() & SETTINGS_STYLE)) ) 325 { 326 ImplInitSettings(); 327 Invalidate(); 328 } 329 } 330 //------------------------------------------------------------------------------ 331 void OApplicationView::resizeDocumentView(Rectangle& _rPlayground) 332 { 333 if ( m_pWin && !_rPlayground.IsEmpty() ) 334 { 335 Size aFLSize = LogicToPixel( Size( 3, 3 ), MAP_APPFONT ); 336 _rPlayground.Move( aFLSize.A(),aFLSize.B() ); 337 Size aOldSize = _rPlayground.GetSize(); 338 _rPlayground.SetSize( Size(aOldSize.A() - 2*aFLSize.A(), aOldSize.B() - 2*aFLSize.B()) ); 339 340 m_pWin->SetPosSizePixel(_rPlayground.TopLeft() , _rPlayground.GetSize() ); 341 } 342 // just for completeness: there is no space left, we occupied it all ... 343 _rPlayground.SetPos( _rPlayground.BottomRight() ); 344 _rPlayground.SetSize( Size( 0, 0 ) ); 345 } 346 //------------------------------------------------------------------------------ 347 long OApplicationView::PreNotify( NotifyEvent& rNEvt ) 348 { 349 switch(rNEvt.GetType()) 350 { 351 case EVENT_GETFOCUS: 352 if( m_pWin && getPanel() && getPanel()->HasChildPathFocus() ) 353 m_eChildFocus = PANELSWAP; 354 else if ( m_pWin && getDetailView() && getDetailView()->HasChildPathFocus() ) 355 m_eChildFocus = DETAIL; 356 else 357 m_eChildFocus = NONE; 358 break; 359 case EVENT_KEYINPUT: 360 { 361 const KeyEvent* pKeyEvent = rNEvt.GetKeyEvent(); 362 // give the pane the chance to intercept mnemonic accelerators 363 // #i34790# - 2004-09-30 - fs@openoffice.org 364 if ( getPanel() && getPanel()->interceptKeyInput( *pKeyEvent ) ) 365 return 1L; 366 // and ditto the detail view 367 // #i72799# - 2006-12-20 / frank.schoenheit@sun.com 368 if ( getDetailView() && getDetailView()->interceptKeyInput( *pKeyEvent ) ) 369 return 1L; 370 } 371 break; 372 } 373 374 return ODataView::PreNotify(rNEvt); 375 } 376 // ----------------------------------------------------------------------------- 377 IClipboardTest* OApplicationView::getActiveChild() const 378 { 379 IClipboardTest* pTest = NULL; 380 if ( DETAIL == m_eChildFocus ) 381 pTest = getDetailView(); 382 return pTest; 383 } 384 // ----------------------------------------------------------------------------- 385 sal_Bool OApplicationView::isCopyAllowed() 386 { 387 IClipboardTest* pTest = getActiveChild(); 388 return pTest && pTest->isCopyAllowed(); 389 } 390 // ----------------------------------------------------------------------------- 391 sal_Bool OApplicationView::isCutAllowed() 392 { 393 IClipboardTest* pTest = getActiveChild(); 394 return pTest && pTest->isCutAllowed(); 395 } 396 // ----------------------------------------------------------------------------- 397 sal_Bool OApplicationView::isPasteAllowed() 398 { 399 IClipboardTest* pTest = getActiveChild(); 400 return pTest && pTest->isPasteAllowed(); 401 } 402 // ----------------------------------------------------------------------------- 403 void OApplicationView::copy() 404 { 405 IClipboardTest* pTest = getActiveChild(); 406 if ( pTest ) 407 pTest->copy(); 408 } 409 // ----------------------------------------------------------------------------- 410 void OApplicationView::cut() 411 { 412 IClipboardTest* pTest = getActiveChild(); 413 if ( pTest ) 414 pTest->cut(); 415 } 416 // ----------------------------------------------------------------------------- 417 void OApplicationView::paste() 418 { 419 IClipboardTest* pTest = getActiveChild(); 420 if ( pTest ) 421 pTest->paste(); 422 } 423 // ----------------------------------------------------------------------------- 424 ::rtl::OUString OApplicationView::getQualifiedName( SvLBoxEntry* _pEntry ) const 425 { 426 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 427 return getDetailView()->getQualifiedName( _pEntry ); 428 } 429 // ----------------------------------------------------------------------------- 430 sal_Bool OApplicationView::isLeaf(SvLBoxEntry* _pEntry) const 431 { 432 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 433 return getDetailView()->isLeaf(_pEntry); 434 } 435 // ----------------------------------------------------------------------------- 436 sal_Bool OApplicationView::isALeafSelected() const 437 { 438 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 439 return getDetailView()->isALeafSelected(); 440 } 441 // ----------------------------------------------------------------------------- 442 void OApplicationView::selectAll() 443 { 444 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 445 getDetailView()->selectAll(); 446 } 447 // ----------------------------------------------------------------------------- 448 sal_Bool OApplicationView::isSortUp() const 449 { 450 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 451 return getDetailView()->isSortUp(); 452 } 453 // ----------------------------------------------------------------------------- 454 void OApplicationView::sortDown() 455 { 456 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 457 getDetailView()->sortDown(); 458 } 459 // ----------------------------------------------------------------------------- 460 void OApplicationView::sortUp() 461 { 462 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 463 getDetailView()->sortUp(); 464 } 465 // ----------------------------------------------------------------------------- 466 sal_Bool OApplicationView::isFilled() const 467 { 468 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 469 return getDetailView()->isFilled(); 470 } 471 // ----------------------------------------------------------------------------- 472 ElementType OApplicationView::getElementType() const 473 { 474 OSL_ENSURE(m_pWin && getDetailView() && getPanel(),"Detail view is NULL! -> GPF"); 475 return getDetailView()->HasChildPathFocus() ? getDetailView()->getElementType() : getPanel()->getElementType(); 476 } 477 // ----------------------------------------------------------------------------- 478 sal_Int32 OApplicationView::getSelectionCount() 479 { 480 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 481 return getDetailView()->getSelectionCount(); 482 } 483 // ----------------------------------------------------------------------------- 484 sal_Int32 OApplicationView::getElementCount() 485 { 486 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 487 return getDetailView()->getElementCount(); 488 } 489 // ----------------------------------------------------------------------------- 490 void OApplicationView::getSelectionElementNames( ::std::vector< ::rtl::OUString>& _rNames ) const 491 { 492 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 493 getDetailView()->getSelectionElementNames( _rNames ); 494 } 495 // ----------------------------------------------------------------------------- 496 void OApplicationView::describeCurrentSelectionForControl( const Control& _rControl, Sequence< NamedDatabaseObject >& _out_rSelectedObjects ) 497 { 498 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 499 getDetailView()->describeCurrentSelectionForControl( _rControl, _out_rSelectedObjects ); 500 } 501 // ----------------------------------------------------------------------------- 502 void OApplicationView::describeCurrentSelectionForType( const ElementType _eType, Sequence< NamedDatabaseObject >& _out_rSelectedObjects ) 503 { 504 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 505 getDetailView()->describeCurrentSelectionForType( _eType, _out_rSelectedObjects ); 506 } 507 // ----------------------------------------------------------------------------- 508 void OApplicationView::selectElements(const Sequence< ::rtl::OUString>& _aNames) 509 { 510 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 511 getDetailView()->selectElements( _aNames ); 512 } 513 // ----------------------------------------------------------------------------- 514 SvLBoxEntry* OApplicationView::elementAdded(ElementType eType,const ::rtl::OUString& _rName, const Any& _rObject ) 515 { 516 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 517 return getDetailView()->elementAdded(eType,_rName,_rObject); 518 } 519 // ----------------------------------------------------------------------------- 520 void OApplicationView::elementRemoved(ElementType eType,const ::rtl::OUString& _rName ) 521 { 522 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 523 getDetailView()->elementRemoved(eType,_rName); 524 } 525 // ----------------------------------------------------------------------------- 526 void OApplicationView::elementReplaced(ElementType _eType 527 ,const ::rtl::OUString& _rOldName 528 ,const ::rtl::OUString& _rNewName ) 529 { 530 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 531 getDetailView()->elementReplaced(_eType, _rOldName, _rNewName ); 532 } 533 // ----------------------------------------------------------------------------- 534 void OApplicationView::clearPages(sal_Bool _bTaskAlso) 535 { 536 OSL_ENSURE(m_pWin && getDetailView() && getPanel(),"Detail view is NULL! -> GPF"); 537 getPanel()->clearSelection(); 538 getDetailView()->clearPages(_bTaskAlso); 539 } 540 // ----------------------------------------------------------------------------- 541 void OApplicationView::selectContainer(ElementType _eType) 542 { 543 OSL_ENSURE(m_pWin && getPanel(),"Detail view is NULL! -> GPF"); 544 WaitObject aWO(this); 545 getPanel()->selectContainer(_eType); 546 } 547 // ----------------------------------------------------------------------------- 548 SvLBoxEntry* OApplicationView::getEntry( const Point& _aPosPixel ) const 549 { 550 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 551 return getDetailView()->getEntry(_aPosPixel); 552 } 553 // ----------------------------------------------------------------------------- 554 PreviewMode OApplicationView::getPreviewMode() 555 { 556 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 557 return getDetailView()->getPreviewMode(); 558 } 559 // ----------------------------------------------------------------------------- 560 sal_Bool OApplicationView::isPreviewEnabled() 561 { 562 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 563 return getDetailView()->isPreviewEnabled(); 564 } 565 // ----------------------------------------------------------------------------- 566 void OApplicationView::switchPreview(PreviewMode _eMode) 567 { 568 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 569 getDetailView()->switchPreview(_eMode); 570 } 571 // ----------------------------------------------------------------------------- 572 void OApplicationView::showPreview(const Reference< XContent >& _xContent) 573 { 574 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 575 stopComponentListening(m_xObject); 576 m_xObject = NULL; 577 getDetailView()->showPreview(_xContent); 578 } 579 // ----------------------------------------------------------------------------- 580 void OApplicationView::showPreview( const ::rtl::OUString& _sDataSourceName, 581 const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection, 582 const ::rtl::OUString& _sName, 583 sal_Bool _bTable) 584 { 585 OSL_ENSURE(m_pWin && getDetailView(),"Detail view is NULL! -> GPF"); 586 if ( isPreviewEnabled() ) 587 { 588 stopComponentListening(m_xObject); 589 m_xObject = NULL; 590 try 591 { 592 Reference<XNameAccess> xNameAccess; 593 if ( _bTable ) 594 { 595 Reference<XTablesSupplier> xSup(_xConnection,UNO_QUERY); 596 if ( xSup.is() ) 597 xNameAccess.set(xSup->getTables(),UNO_QUERY); 598 } 599 else 600 { 601 Reference<XQueriesSupplier> xSup(_xConnection,UNO_QUERY); 602 if ( xSup.is() ) 603 xNameAccess.set(xSup->getQueries(),UNO_QUERY); 604 } 605 if ( xNameAccess.is() && xNameAccess->hasByName(_sName) ) 606 m_xObject.set(xNameAccess->getByName(_sName),UNO_QUERY); 607 } 608 catch( const Exception& ) 609 { 610 DBG_UNHANDLED_EXCEPTION(); 611 } 612 if ( m_xObject.is() ) 613 startComponentListening(m_xObject); 614 getDetailView()->showPreview(_sDataSourceName,_sName,_bTable); 615 } 616 } 617 // ----------------------------------------------------------------------------- 618 void OApplicationView::GetFocus() 619 { 620 if ( m_eChildFocus == NONE && m_pWin ) 621 { 622 m_pWin->GrabFocus(); 623 } 624 } 625 // ----------------------------------------------------------------------------- 626 void OApplicationView::_disposing( const ::com::sun::star::lang::EventObject& /*_rSource*/ ) 627 { 628 if ( m_pWin && getDetailView() ) 629 showPreview(NULL); 630 } 631 // ----------------------------------------------------------------------------- 632 void OApplicationView::ImplInitSettings() 633 { 634 const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); 635 if( true ) 636 { 637 Font aFont; 638 aFont = rStyleSettings.GetFieldFont(); 639 aFont.SetColor( rStyleSettings.GetWindowTextColor() ); 640 SetPointFont( aFont ); 641 } 642 643 if( true ) 644 { 645 SetTextColor( rStyleSettings.GetFieldTextColor() ); 646 SetTextFillColor(); 647 } 648 649 if( true ) 650 SetBackground( rStyleSettings.GetFieldColor() ); 651 /*SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetDialogColor() ) ); 652 SetFillColor( Application::GetSettings().GetStyleSettings().GetDialogColor() ); 653 SetTextFillColor( Application::GetSettings().GetStyleSettings().GetDialogColor() );*/ 654 } 655 //----------------------------------------------------------------------------- 656