1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: propbrw.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #include "precompiled_reportdesign.hxx"
31 #include "propbrw.hxx"
32 #include "RptObject.hxx"
33 #include "ReportController.hxx"
34 #include <cppuhelper/component_context.hxx>
35 #ifndef _REPORT_DLGRESID_HRC
36 #include <RptResId.hrc>
38 #ifndef _RPTUI_SLOTID_HRC_
39 #include "rptui_slotid.hrc"
41 #include <tools/debug.hxx>
42 #include <com/sun/star/awt/XLayoutConstrains.hpp>
43 #include <com/sun/star/inspection/ObjectInspector.hpp>
44 #include <com/sun/star/inspection/DefaultHelpProvider.hpp>
45 #ifndef _SVX_SVXIDS_HRC
46 #include <svx/svxids.hrc>
48 #include <vcl/stdtext.hxx>
49 #include <svx/svdview.hxx>
50 #include <svx/svdogrp.hxx>
51 #include <svx/svdpage.hxx>
52 #include <svx/svditer.hxx>
54 #ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
55 #include <toolkit/unohlp.hxx>
57 #include <comphelper/property.hxx>
58 #include <comphelper/namecontainer.hxx>
59 #include <comphelper/composedprops.hxx>
60 #include <comphelper/stl_types.hxx>
61 #include <comphelper/types.hxx>
62 #include <comphelper/sequence.hxx>
63 #include <com/sun/star/beans/PropertyValue.hpp>
64 #include <com/sun/star/awt/PosSize.hpp>
65 #include <com/sun/star/lang/XServiceInfo.hpp>
66 #include <com/sun/star/report/inspection/DefaultComponentInspectorModel.hpp>
67 #include <comphelper/processfactory.hxx>
68 #include "SectionView.hxx"
69 #include "ReportSection.hxx"
70 #ifndef REPORTDESIGN_SHARED_UISTRINGS_HRC
71 #include "uistrings.hrc"
73 #include "DesignView.hxx"
74 #include "ViewsWindow.hxx"
75 #include "UITools.hxx"
76 #include <unotools/confignode.hxx>
80 #define STD_WIN_SIZE_X 300
81 #define STD_WIN_SIZE_Y 350
83 using namespace ::com::sun::star
;
86 using namespace frame
;
87 using namespace beans
;
88 using namespace container
;
89 using namespace ::comphelper
;
91 //----------------------------------------------------------------------------
92 //-----------------------------------------------------------------------
95 static bool lcl_shouldEnableHelpSection( const Reference
< XMultiServiceFactory
>& _rxFactory
)
97 const ::rtl::OUString
sConfigName( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.ReportDesign/PropertyBrowser/" ) );
98 const ::rtl::OUString
sPropertyName( RTL_CONSTASCII_USTRINGPARAM( "DirectHelp" ) );
100 ::utl::OConfigurationTreeRoot
aConfiguration(
101 ::utl::OConfigurationTreeRoot::createWithServiceFactory( _rxFactory
, sConfigName
) );
103 bool bEnabled
= false;
104 OSL_VERIFY( aConfiguration
.getNodeValue( sPropertyName
) >>= bEnabled
);
108 //-----------------------------------------------------------------------
109 //============================================================================
111 //============================================================================
113 DBG_NAME( rpt_PropBrw
)
115 //----------------------------------------------------------------------------
117 PropBrw::PropBrw(const Reference
< XMultiServiceFactory
>& _xORB
,Window
* pParent
,ODesignView
* _pDesignView
)
118 :DockingWindow(pParent
,WinBits(WB_STDMODELESS
|WB_SIZEABLE
|WB_3DLOOK
|WB_ROLLABLE
))
120 ,m_pDesignView(_pDesignView
)
122 ,m_bInitialStateChange(sal_True
)
124 DBG_CTOR( rpt_PropBrw
,NULL
);
126 Size
aPropWinSize(STD_WIN_SIZE_X
,STD_WIN_SIZE_Y
);
127 SetOutputSizePixel(aPropWinSize
);
131 // create a frame wrapper for myself
132 m_xMeAsFrame
= Reference
< XFrame
>(m_xORB
->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Frame"))), UNO_QUERY
);
133 if (m_xMeAsFrame
.is())
135 m_xMeAsFrame
->initialize( VCLUnoHelper::GetInterface ( this ) );
136 m_xMeAsFrame
->setName(::rtl::OUString::createFromAscii("report property browser")); // change name!
141 DBG_ERROR("PropBrw::PropBrw: could not create/initialize my frame!");
142 m_xMeAsFrame
.clear();
145 if (m_xMeAsFrame
.is())
147 Reference
< XComponentContext
> xOwnContext
;
150 // our own component context
151 Reference
< XPropertySet
> xFactoryProperties( m_xORB
, UNO_QUERY_THROW
);
153 xFactoryProperties
->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ),
156 /*uno::Reference< XComponent> xModel = new OContextHelper(m_xORB,uno::Reference< XComponent>(m_pDesignView->getController().getModel(),uno::UNO_QUERY) );
157 uno::Reference< XComponent> xDialogParentWindow = new OContextHelper(m_xORB,uno::Reference< XComponent>(VCLUnoHelper::GetInterface ( this ),uno::UNO_QUERY) );
158 uno::Reference< XComponent> xConnection = new OContextHelper(m_xORB,uno::Reference< XComponent>(m_pDesignView->getController().getConnection(),uno::UNO_QUERY) );*/
159 // a ComponentContext for the
160 ::cppu::ContextEntry_Init aHandlerContextInfo
[] =
162 ::cppu::ContextEntry_Init( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContextDocument" ) ), makeAny( m_pDesignView
->getController().getModel() )),
163 ::cppu::ContextEntry_Init( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DialogParentWindow" ) ), makeAny( VCLUnoHelper::GetInterface ( this ) )),
164 ::cppu::ContextEntry_Init( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ActiveConnection" ) ), makeAny( m_pDesignView
->getController().getConnection() ) ),
166 m_xInspectorContext
.set(
167 ::cppu::createComponentContext( aHandlerContextInfo
, sizeof( aHandlerContextInfo
) / sizeof( aHandlerContextInfo
[0] ),
169 // create a property browser controller
170 bool bEnableHelpSection
= lcl_shouldEnableHelpSection( m_xORB
);
171 Reference
< inspection::XObjectInspectorModel
> xInspectorModel( bEnableHelpSection
172 ? report::inspection::DefaultComponentInspectorModel::createWithHelpSection( m_xInspectorContext
, 3, 8 )
173 : report::inspection::DefaultComponentInspectorModel::createDefault( m_xInspectorContext
) );
175 m_xBrowserController
= inspection::ObjectInspector::createWithModel(m_xInspectorContext
, xInspectorModel
);
176 if ( !m_xBrowserController
.is() )
178 const ::rtl::OUString
sServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.inspection.ObjectInspector" ) );
179 ShowServiceNotAvailableError(pParent
, sServiceName
, sal_True
);
183 m_xBrowserController
->attachFrame(m_xMeAsFrame
);
184 m_xBrowserComponentWindow
= m_xMeAsFrame
->getComponentWindow();
185 OSL_ENSURE(m_xBrowserComponentWindow
.is(), "PropBrw::PropBrw: attached the controller, but have no component window!");
186 if ( bEnableHelpSection
)
188 uno::Reference
< inspection::XObjectInspector
> xInspector( m_xBrowserController
, uno::UNO_QUERY_THROW
);
189 uno::Reference
< inspection::XObjectInspectorUI
> xInspectorUI( xInspector
->getInspectorUI() );
190 uno::Reference
< uno::XInterface
> xDefaultHelpProvider( inspection::DefaultHelpProvider::create( m_xInspectorContext
, xInspectorUI
) );
193 xFactoryProperties
->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ,makeAny(xOwnContext
));
197 DBG_ERROR("PropBrw::PropBrw: could not create/initialize the browser controller!");
200 ::comphelper::disposeComponent(m_xBrowserController
);
201 ::comphelper::disposeComponent(m_xBrowserComponentWindow
);
202 Reference
< XPropertySet
> xFactoryProperties( m_xORB
, UNO_QUERY_THROW
);
203 if ( xOwnContext
.is() )
204 xFactoryProperties
->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ,makeAny(xOwnContext
));
206 catch(Exception
&) { }
207 m_xBrowserController
.clear();
208 m_xBrowserComponentWindow
.clear();
212 if (m_xBrowserComponentWindow
.is())
215 m_xBrowserComponentWindow
->setPosSize(0, 0, aPropWinSize
.Width(), aPropWinSize
.Height(),
216 awt::PosSize::WIDTH
| awt::PosSize::HEIGHT
| awt::PosSize::X
| awt::PosSize::Y
);
218 m_xBrowserComponentWindow
->setVisible(sal_True
);
220 ::rptui::notifySystemWindow(pParent
,this,::comphelper::mem_fun(&TaskPaneList::AddWindow
));
223 //----------------------------------------------------------------------------
227 if (m_xBrowserController
.is())
228 implDetachController();
232 uno::Reference
<container::XNameContainer
> xName(m_xInspectorContext
,uno::UNO_QUERY
);
235 const ::rtl::OUString pProps
[] = { ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContextDocument" ) )
236 , ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DialogParentWindow" ) )
237 , ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ActiveConnection" ) )};
238 for (size_t i
= 0; i
< sizeof(pProps
)/sizeof(pProps
[0]); ++i
)
239 xName
->removeByName(pProps
[i
]);
245 ::rptui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow
));
247 DBG_DTOR( rpt_PropBrw
,NULL
);
249 // -----------------------------------------------------------------------------
250 void PropBrw::setCurrentPage(const ::rtl::OUString
& _sLastActivePage
)
252 m_sLastActivePage
= _sLastActivePage
;
254 //----------------------------------------------------------------------------
256 void PropBrw::implDetachController()
258 m_sLastActivePage
= getCurrentPage();
261 if ( m_xMeAsFrame
.is() )
262 m_xMeAsFrame
->setComponent( NULL
, NULL
);
264 if ( m_xBrowserController
.is() )
265 m_xBrowserController
->attachFrame( NULL
);
267 m_xMeAsFrame
.clear();
268 m_xBrowserController
.clear();
269 m_xBrowserComponentWindow
.clear();
271 //-----------------------------------------------------------------------
272 ::rtl::OUString
PropBrw::getCurrentPage() const
274 ::rtl::OUString sCurrentPage
;
277 if ( m_xBrowserController
.is() )
279 OSL_VERIFY( m_xBrowserController
->getViewData() >>= sCurrentPage
);
282 if ( !sCurrentPage
.getLength() )
283 sCurrentPage
= m_sLastActivePage
;
285 catch( const Exception
& )
287 OSL_ENSURE( sal_False
, "PropBrw::getCurrentPage: caught an exception while retrieving the current page!" );
291 //----------------------------------------------------------------------------
293 sal_Bool
PropBrw::Close()
295 m_xLastSection
.clear();
296 // suspend the controller (it is allowed to veto)
297 if ( m_xMeAsFrame
.is() )
301 Reference
< XController
> xController( m_xMeAsFrame
->getController() );
302 if ( xController
.is() && !xController
->suspend( sal_True
) )
305 catch( const Exception
& )
307 OSL_ENSURE( sal_False
, "FmPropBrw::Close: caught an exception while asking the controller!" );
310 implDetachController();
315 m_pDesignView
->getController().executeUnChecked(SID_PROPERTYBROWSER_LAST_PAGE
,uno::Sequence
< beans::PropertyValue
>());
320 //----------------------------------------------------------------------------
322 uno::Sequence
< Reference
<uno::XInterface
> > PropBrw::CreateCompPropSet(const SdrMarkList
& _rMarkList
)
324 sal_uInt32 nMarkCount
= _rMarkList
.GetMarkCount();
325 ::std::vector
< uno::Reference
< uno::XInterface
> > aSets
;
326 aSets
.reserve(nMarkCount
);
328 for(sal_uInt32 i
=0;i
<nMarkCount
;++i
)
330 SdrObject
* pCurrent
= _rMarkList
.GetMark(i
)->GetMarkedSdrObj();
332 ::std::auto_ptr
<SdrObjListIter
> pGroupIterator
;
333 if (pCurrent
->IsGroupObject())
335 pGroupIterator
.reset(new SdrObjListIter(*pCurrent
->GetSubList()));
336 pCurrent
= pGroupIterator
->IsMore() ? pGroupIterator
->Next() : NULL
;
341 OObjectBase
* pObj
= dynamic_cast<OObjectBase
*>(pCurrent
);
343 aSets
.push_back(CreateComponentPair(pObj
));
346 pCurrent
= pGroupIterator
.get() && pGroupIterator
->IsMore() ? pGroupIterator
->Next() : NULL
;
349 Reference
<uno::XInterface
> *pSets
= aSets
.empty() ? NULL
: &aSets
[0];
350 return uno::Sequence
< Reference
<uno::XInterface
> >(pSets
, aSets
.size());
352 //----------------------------------------------------------------------------
353 void PropBrw::implSetNewObject( const uno::Sequence
< Reference
<uno::XInterface
> >& _aObjects
)
355 if ( m_xBrowserController
.is() )
359 m_xBrowserController
->inspect(uno::Sequence
< Reference
<uno::XInterface
> >());
360 m_xBrowserController
->inspect(_aObjects
);
362 catch( const Exception
& )
364 OSL_ENSURE( sal_False
, "FmPropBrw::StateChanged: caught an exception while setting the initial page!" );
369 SetText( GetHeadlineName(_aObjects
) );
372 //----------------------------------------------------------------------------
374 ::rtl::OUString
PropBrw::GetHeadlineName( const uno::Sequence
< Reference
<uno::XInterface
> >& _aObjects
)
376 ::rtl::OUString aName
;
377 if ( !_aObjects
.getLength() )
379 aName
= String(ModuleRes(RID_STR_BRWTITLE_NO_PROPERTIES
));
381 else if ( _aObjects
.getLength() == 1 ) // single selection
383 sal_uInt16 nResId
= 0;
384 aName
= String(ModuleRes(RID_STR_BRWTITLE_PROPERTIES
));
386 uno::Reference
< container::XNameContainer
> xNameCont(_aObjects
[0],uno::UNO_QUERY
);
387 Reference
< lang::XServiceInfo
> xServiceInfo( xNameCont
->getByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReportComponent"))), UNO_QUERY
);
388 if ( xServiceInfo
.is() )
390 if ( xServiceInfo
->supportsService( SERVICE_FIXEDTEXT
) )
392 nResId
= RID_STR_PROPTITLE_FIXEDTEXT
;
394 else if ( xServiceInfo
->supportsService( SERVICE_IMAGECONTROL
) )
396 nResId
= RID_STR_PROPTITLE_IMAGECONTROL
;
398 else if ( xServiceInfo
->supportsService( SERVICE_FORMATTEDFIELD
) )
400 nResId
= RID_STR_PROPTITLE_FORMATTED
;
402 else if ( xServiceInfo
->supportsService( SERVICE_SHAPE
) )
404 nResId
= RID_STR_PROPTITLE_SHAPE
;
406 else if ( xServiceInfo
->supportsService( SERVICE_REPORTDEFINITION
) )
408 nResId
= RID_STR_PROPTITLE_REPORT
;
410 else if ( xServiceInfo
->supportsService( SERVICE_SECTION
) )
412 nResId
= RID_STR_PROPTITLE_SECTION
;
414 else if ( xServiceInfo
->supportsService( SERVICE_FUNCTION
) )
416 nResId
= RID_STR_PROPTITLE_FUNCTION
;
418 else if ( xServiceInfo
->supportsService( SERVICE_GROUP
) )
420 nResId
= RID_STR_PROPTITLE_GROUP
;
422 else if ( xServiceInfo
->supportsService( SERVICE_FIXEDLINE
) )
424 nResId
= RID_STR_PROPTITLE_FIXEDLINE
;
428 OSL_ENSURE(0,"Unknown service name!");
429 nResId
= RID_STR_CLASS_FORMATTEDFIELD
;
434 aName
+= String(ModuleRes(nResId
));
438 else // multiselection
440 aName
= String(ModuleRes(RID_STR_BRWTITLE_PROPERTIES
));
441 aName
+= String(ModuleRes(RID_STR_BRWTITLE_MULTISELECT
));
446 // -----------------------------------------------------------------------------
447 uno::Reference
< uno::XInterface
> PropBrw::CreateComponentPair(OObjectBase
* _pObj
)
449 return CreateComponentPair(_pObj
->getAwtComponent(),_pObj
->getReportComponent());
451 //----------------------------------------------------------------------------
452 uno::Reference
< uno::XInterface
> PropBrw::CreateComponentPair(const uno::Reference
< uno::XInterface
>& _xFormComponent
453 ,const uno::Reference
< uno::XInterface
>& _xReportComponent
)
455 uno::Reference
< container::XNameContainer
> xNameCont
= ::comphelper::NameContainer_createInstance(::getCppuType(static_cast<Reference
<XInterface
> * >(NULL
)));
456 xNameCont
->insertByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FormComponent")),uno::makeAny(_xFormComponent
));
457 xNameCont
->insertByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReportComponent")),uno::makeAny(_xReportComponent
));
458 xNameCont
->insertByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RowSet"))
459 ,uno::makeAny(uno::Reference
< uno::XInterface
>(m_pDesignView
->getController().getRowSet())));
461 return xNameCont
.get();
463 // -----------------------------------------------------------------------------
464 ::Size
PropBrw::getMinimumSize() const
467 Reference
< awt::XLayoutConstrains
> xLayoutConstrains( m_xBrowserController
, UNO_QUERY
);
468 if( xLayoutConstrains
.is() )
470 awt::Size aMinSize
= xLayoutConstrains
->getMinimumSize();
471 aMinSize
.Height
+= 4;
473 aSize
.setHeight( aMinSize
.Height
);
474 aSize
.setWidth( aMinSize
.Width
);
478 //----------------------------------------------------------------------------
479 void PropBrw::Resize()
483 Reference
< awt::XLayoutConstrains
> xLayoutConstrains( m_xBrowserController
, UNO_QUERY
);
484 if( xLayoutConstrains
.is() )
486 ::Size aMinSize
= getMinimumSize();
487 SetMinOutputSizePixel( aMinSize
);
488 ::Size aSize
= GetOutputSizePixel();
489 sal_Bool bResize
= sal_False
;
490 if( aSize
.Width() < aMinSize
.Width() )
492 aSize
.setWidth( aMinSize
.Width() );
495 if( aSize
.Height() < aMinSize
.Height() )
497 aSize
.setHeight( aMinSize
.Height() );
501 SetOutputSizePixel( aSize
);
504 if (m_xBrowserComponentWindow
.is())
506 Size aSize
= GetOutputSizePixel();
507 m_xBrowserComponentWindow
->setPosSize(0, 0, aSize
.Width(), aSize
.Height(),
508 awt::PosSize::WIDTH
| awt::PosSize::HEIGHT
);
511 //----------------------------------------------------------------------------
512 void PropBrw::Update( OSectionView
* pNewView
)
518 EndListening( *(m_pView
->GetModel()) );
522 // set focus on initialization
523 if ( m_bInitialStateChange
)
525 // if we're just newly created, we want to have the focus
526 PostUserEvent( LINK( this, PropBrw
, OnAsyncGetFocus
) );
527 m_bInitialStateChange
= sal_False
;
528 // and additionally, we want to show the page which was active during
529 // our previous incarnation
530 if ( m_sLastActivePage
.getLength() && m_xBrowserController
.is() )
534 m_xBrowserController
->restoreViewData( makeAny( m_sLastActivePage
) );
536 catch( const Exception
& )
538 OSL_ENSURE( sal_False
, "FmPropBrw::StateChanged: caught an exception while setting the initial page!" );
548 uno::Sequence
< Reference
<uno::XInterface
> > aMarkedObjects
;
549 OViewsWindow
* pViews
= m_pView
->getReportSection()->getSectionWindow()->getViewsWindow();
550 const USHORT nSectionCount
= pViews
->getSectionCount();
551 for (USHORT i
= 0; i
< nSectionCount
; ++i
)
553 ::boost::shared_ptr
<OSectionWindow
> pSectionWindow
= pViews
->getSectionWindow(i
);
554 if ( pSectionWindow
)
556 const SdrMarkList
& rMarkList
= pSectionWindow
->getReportSection().getSectionView().GetMarkedObjectList();
557 aMarkedObjects
= ::comphelper::concatSequences(aMarkedObjects
,CreateCompPropSet( rMarkList
));
561 if ( aMarkedObjects
.getLength() ) // multiple selection
563 m_xLastSection
.clear();
564 implSetNewObject( aMarkedObjects
);
566 else if ( m_xLastSection
!= m_pView
->getReportSection()->getSection() )
568 uno::Reference
< uno::XInterface
> xTemp(m_pView
->getReportSection()->getSection());
569 m_xLastSection
= xTemp
;
570 uno::Reference
< container::XNameContainer
> xNameCont
= ::comphelper::NameContainer_createInstance(::getCppuType(static_cast<Reference
<XInterface
> * >(NULL
)));
571 xNameCont
->insertByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReportComponent")),uno::makeAny(xTemp
));
574 implSetNewObject( uno::Sequence
< uno::Reference
< uno::XInterface
> >(&xTemp
,1) );
577 StartListening( *(m_pView
->GetModel()) );
581 DBG_ERROR( "PropBrw::Update: Exception occured!" );
584 //----------------------------------------------------------------------------
585 void PropBrw::Update( const uno::Reference
< uno::XInterface
>& _xReportComponent
)
587 if ( m_xLastSection
!= _xReportComponent
)
589 m_xLastSection
= _xReportComponent
;
594 EndListening( *(m_pView
->GetModel()) );
598 uno::Reference
< uno::XInterface
> xTemp(CreateComponentPair(_xReportComponent
,_xReportComponent
));
599 implSetNewObject( uno::Sequence
< uno::Reference
< uno::XInterface
> >(&xTemp
,1) );
603 DBG_ERROR( "PropBrw::Update: Exception occured!" );
607 //-----------------------------------------------------------------------
608 IMPL_LINK( PropBrw
, OnAsyncGetFocus
, void*, )
610 if (m_xBrowserComponentWindow
.is())
611 m_xBrowserComponentWindow
->setFocus();
614 //----------------------------------------------------------------------------
615 void PropBrw::LoseFocus()
617 DockingWindow::LoseFocus();
618 m_pDesignView
->getController().InvalidateAll();
620 //----------------------------------------------------------------------------