LibreOffice Module svx (master)  1
fmPropBrw.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 
21 #include <sal/macros.h>
22 
23 #include <fmprop.hxx>
24 #include <fmPropBrw.hxx>
25 #include <svx/strings.hrc>
26 #include <fmservs.hxx>
27 #include <fmshimp.hxx>
28 #include <fmpgeimp.hxx>
29 
30 #include <svx/dialmgr.hxx>
31 #include <svx/fmpage.hxx>
32 #include <svx/fmshell.hxx>
33 #include <svx/fmview.hxx>
34 #include <svx/sdrpagewindow.hxx>
35 #include <svx/svdpagv.hxx>
36 #include <svx/svxids.hrc>
37 
38 #include <com/sun/star/awt/XControlContainer.hpp>
39 #include <com/sun/star/awt/PosSize.hpp>
40 #include <com/sun/star/beans/PropertyValue.hpp>
41 #include <com/sun/star/container/XChild.hpp>
42 #include <com/sun/star/form/XForm.hpp>
43 #include <com/sun/star/form/FormComponentType.hpp>
44 #include <com/sun/star/form/inspection/DefaultFormComponentInspectorModel.hpp>
45 #include <com/sun/star/frame/Frame.hpp>
46 #include <com/sun/star/inspection/ObjectInspector.hpp>
47 #include <com/sun/star/inspection/XObjectInspectorUI.hpp>
48 #include <com/sun/star/inspection/DefaultHelpProvider.hpp>
49 #include <com/sun/star/util/VetoException.hpp>
50 
52 #include <comphelper/property.hxx>
53 #include <comphelper/sequence.hxx>
54 #include <comphelper/types.hxx>
56 #include <sfx2/bindings.hxx>
57 #include <sfx2/childwin.hxx>
58 #include <sfx2/dispatch.hxx>
59 #include <sfx2/objitem.hxx>
60 #include <sfx2/objsh.hxx>
61 #include <sfx2/viewfrm.hxx>
63 #include <tools/debug.hxx>
64 #include <tools/diagnose_ex.h>
65 #include <unotools/confignode.hxx>
66 #include <vcl/stdtext.hxx>
67 #include <vcl/svapp.hxx>
68 #include <vcl/weld.hxx>
69 #include <vcl/weldutils.hxx>
70 
71 #include <algorithm>
72 
73 using namespace ::com::sun::star;
74 using namespace ::com::sun::star::beans;
75 using namespace ::com::sun::star::container;
76 using namespace ::com::sun::star::form;
77 using namespace ::com::sun::star::form::inspection;
78 using namespace ::com::sun::star::frame;
79 using namespace ::com::sun::star::inspection;
80 using namespace ::com::sun::star::lang;
81 using namespace ::com::sun::star::uno;
82 using namespace ::com::sun::star::util;
83 using namespace ::svxform;
84 using ::com::sun::star::awt::XWindow;
85 
86 //= FmPropBrwMgr
87 SFX_IMPL_MODELESSDIALOGCONTOLLER(FmPropBrwMgr, SID_FM_SHOW_PROPERTIES)
88 
89 FmPropBrwMgr::FmPropBrwMgr( vcl::Window* _pParent, sal_uInt16 _nId,
90  SfxBindings* _pBindings, SfxChildWinInfo* _pInfo)
91  :SfxChildWindow(_pParent, _nId)
92 {
93  SetController(std::make_shared<FmPropBrw>(::comphelper::getProcessComponentContext(), _pBindings, this, _pParent->GetFrameWeld(), _pInfo));
94  static_cast<FmPropBrw*>(GetController().get())->Initialize( _pInfo );
95 }
96 
97 static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any& aUnoObj)
98 {
99  const char* pClassNameResourceId = nullptr;
100 
101  switch ( nClassId )
102  {
103  case FormComponentType::TEXTFIELD:
104  {
106  aUnoObj >>= xIFace;
107  pClassNameResourceId = RID_STR_PROPTITLE_EDIT;
108  if (xIFace.is())
109  { // we have a chance to check if it's a formatted field model
110  Reference< XServiceInfo > xInfo(xIFace, UNO_QUERY);
111  if (xInfo.is() && (xInfo->supportsService(FM_SUN_COMPONENT_FORMATTEDFIELD)))
112  pClassNameResourceId = RID_STR_PROPTITLE_FORMATTED;
113  else if (!xInfo.is())
114  {
115  // couldn't distinguish between formatted and edit with the service name, so try with the properties
116  Reference< XPropertySet > xProps(xIFace, UNO_QUERY);
117  if (xProps.is())
118  {
119  Reference< XPropertySetInfo > xPropsInfo = xProps->getPropertySetInfo();
120  if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(FM_PROP_FORMATSSUPPLIER))
121  pClassNameResourceId = RID_STR_PROPTITLE_FORMATTED;
122  }
123  }
124  }
125  }
126  break;
127 
128  case FormComponentType::COMMANDBUTTON:
129  pClassNameResourceId = RID_STR_PROPTITLE_PUSHBUTTON; break;
130  case FormComponentType::RADIOBUTTON:
131  pClassNameResourceId = RID_STR_PROPTITLE_RADIOBUTTON; break;
132  case FormComponentType::CHECKBOX:
133  pClassNameResourceId = RID_STR_PROPTITLE_CHECKBOX; break;
134  case FormComponentType::LISTBOX:
135  pClassNameResourceId = RID_STR_PROPTITLE_LISTBOX; break;
136  case FormComponentType::COMBOBOX:
137  pClassNameResourceId = RID_STR_PROPTITLE_COMBOBOX; break;
138  case FormComponentType::GROUPBOX:
139  pClassNameResourceId = RID_STR_PROPTITLE_GROUPBOX; break;
140  case FormComponentType::IMAGEBUTTON:
141  pClassNameResourceId = RID_STR_PROPTITLE_IMAGEBUTTON; break;
142  case FormComponentType::FIXEDTEXT:
143  pClassNameResourceId = RID_STR_PROPTITLE_FIXEDTEXT; break;
144  case FormComponentType::GRIDCONTROL:
145  pClassNameResourceId = RID_STR_PROPTITLE_DBGRID; break;
146  case FormComponentType::FILECONTROL:
147  pClassNameResourceId = RID_STR_PROPTITLE_FILECONTROL; break;
148  case FormComponentType::DATEFIELD:
149  pClassNameResourceId = RID_STR_PROPTITLE_DATEFIELD; break;
150  case FormComponentType::TIMEFIELD:
151  pClassNameResourceId = RID_STR_PROPTITLE_TIMEFIELD; break;
152  case FormComponentType::NUMERICFIELD:
153  pClassNameResourceId = RID_STR_PROPTITLE_NUMERICFIELD; break;
154  case FormComponentType::CURRENCYFIELD:
155  pClassNameResourceId = RID_STR_PROPTITLE_CURRENCYFIELD; break;
156  case FormComponentType::PATTERNFIELD:
157  pClassNameResourceId = RID_STR_PROPTITLE_PATTERNFIELD; break;
158  case FormComponentType::IMAGECONTROL:
159  pClassNameResourceId = RID_STR_PROPTITLE_IMAGECONTROL; break;
160  case FormComponentType::HIDDENCONTROL:
161  pClassNameResourceId = RID_STR_PROPTITLE_HIDDEN; break;
162  case FormComponentType::SCROLLBAR:
163  pClassNameResourceId = RID_STR_PROPTITLE_SCROLLBAR; break;
164  case FormComponentType::SPINBUTTON:
165  pClassNameResourceId = RID_STR_PROPTITLE_SPINBUTTON; break;
166  case FormComponentType::NAVIGATIONBAR:
167  pClassNameResourceId = RID_STR_PROPTITLE_NAVBAR; break;
168  case FormComponentType::CONTROL:
169  default:
170  pClassNameResourceId = RID_STR_CONTROL; break;
171  }
172 
173  return SvxResId(pClassNameResourceId);
174 }
175 
177  SfxChildWindow* _pMgr, weld::Window* _pParent, const SfxChildWinInfo* _pInfo)
178  : SfxModelessDialogController(_pBindings, _pMgr, _pParent, "svx/ui/formpropertydialog.ui", "FormPropertyDialog")
179  , SfxControllerItem(SID_FM_PROPERTY_CONTROL, *_pBindings)
180  , m_bInitialStateChange(true)
181  , m_pParent(_pParent)
182  , m_nAsyncGetFocusId(nullptr)
183  , m_xContainer(m_xBuilder->weld_container("container"))
184  , m_xORB(_xORB)
185 {
186  m_xContainer->set_size_request(m_xContainer->get_approximate_digit_width() * 72, m_xContainer->get_text_height() * 20);
187 
188  try
189  {
190  // create a frame wrapper for myself
191  m_xMeAsFrame = Frame::create(m_xORB);
192 
193  // transport the container area of this dialog to be the container window of the frame
194  css::uno::Reference<css::awt::XWindow> xFrameContainerWindow(new weld::TransportAsXWindow(m_xContainer.get()));
195  m_xMeAsFrame->initialize(xFrameContainerWindow);
196  m_xMeAsFrame->setName("form property browser");
197  }
198  catch (const Exception&)
199  {
200  OSL_FAIL("FmPropBrw::FmPropBrw: could not create/initialize my frame!");
201  m_xMeAsFrame.clear();
202  }
203 
204  if ( _pInfo )
206 }
207 
209 {
210  if (m_nAsyncGetFocusId)
211  {
213  m_nAsyncGetFocusId = nullptr;
214  }
215 
216  if (m_xBrowserController.is())
218  try
219  {
220  // remove our own properties from the component context. We cannot ensure that the component context
221  // is freed (there might be refcount problems :-\), so at least ensure the context itself
222  // does hold the objects anymore
223  Reference<XNameContainer> xName(m_xInspectorContext,uno::UNO_QUERY);
224  if ( xName.is() )
225  {
226  const OUString pProps[] = { OUString( "ContextDocument" )
227  , OUString( "DialogParentWindow" )
228  , OUString( "ControlContext" )
229  , OUString( "ControlShapeAccess" ) };
230  for (const auto & i : pProps)
231  xName->removeByName( i );
232  }
233  }
234  catch (const Exception& )
235  {
237  }
239 }
240 
242 {
243  OUString sCurrentPage;
244  try
245  {
246  if ( m_xBrowserController.is() )
247  {
248  OSL_VERIFY( m_xBrowserController->getViewData() >>= sCurrentPage );
249  }
250 
251  if ( sCurrentPage.isEmpty() )
252  sCurrentPage = m_sLastActivePage;
253  }
254  catch( const Exception& )
255  {
256  OSL_FAIL( "FmPropBrw::getCurrentPage: caught an exception while retrieving the current page!" );
257  }
258  return sCurrentPage;
259 }
260 
262 {
264 
266 
267  if ( m_xMeAsFrame.is() )
268  {
269  try
270  {
271  m_xMeAsFrame->setComponent(nullptr, nullptr);
272  }
273  catch( const Exception& )
274  {
275  OSL_FAIL( "FmPropBrw::implDetachController: caught an exception while resetting the component!" );
276  }
277  }
278 
279  // we attached a frame to the controller manually, so we need to manually tell it that it's detached, too
280  if ( m_xBrowserController.is() )
281  {
282  m_xBrowserController->attachFrame( nullptr );
283  }
284 
285  m_xBrowserController.clear();
286  m_xInspectorModel.clear();
287  m_xMeAsFrame.clear();
288 }
289 
291 {
292  // suspend the controller (it is allowed to veto)
293  if ( m_xMeAsFrame.is() )
294  {
295  try
296  {
297  Reference< XController > xController( m_xMeAsFrame->getController() );
298  if ( xController.is() && !xController->suspend( true ) )
299  return;
300  }
301  catch( const Exception& )
302  {
303  OSL_FAIL( "FmPropBrw::Close: caught an exception while asking the controller!" );
304  }
305  }
306 
308 
309  // remember our bindings: while we're closed, we're deleted, too, so accessing the bindings after this
310  // would be deadly
311  // 10/19/00 - 79321 - FS
313 
315 
316  rBindings.Invalidate(SID_FM_CTL_PROPERTIES);
317  rBindings.Invalidate(SID_FM_PROPERTIES);
318 }
319 
321 {
322  try
323  {
324  if ( m_xInspectorModel.is() )
325  return m_xInspectorModel->getIsReadOnly();
326  return false;
327  }
328  catch( const Exception& )
329  {
331  }
332  return true;
333 }
334 
335 
337 {
338  if ( m_xBrowserController.is() )
339  {
340  try
341  {
342  Reference< XObjectInspector > xInspector( m_xBrowserController, UNO_QUERY_THROW );
343 
344  // tell it the objects to inspect
345  xInspector->inspect( comphelper::containerToSequence(_rSelection) );
346  }
347  catch( const VetoException& )
348  {
349  return;
350  }
351  catch( const Exception& )
352  {
353  OSL_FAIL( "FmPropBrw::implSetNewSelection: caught an unexpected exception!" );
354  return;
355  }
356 
357  // set the new title according to the selected object
358  OUString sTitle;
359 
360  if ( _rSelection.empty() )
361  {
362  sTitle = SvxResId(RID_STR_NO_PROPERTIES);
363  }
364  else if ( _rSelection.size() > 1 )
365  {
366  // no form component and (no form or no name) -> Multiselection
367  sTitle = SvxResId(RID_STR_PROPERTIES_CONTROL) +
368  SvxResId(RID_STR_PROPTITLE_MULTISELECT);
369  }
370  else
371  {
372  Reference< XPropertySet > xSingleSelection( *_rSelection.begin(), UNO_QUERY);
373  if ( ::comphelper::hasProperty( FM_PROP_CLASSID, xSingleSelection ) )
374  {
375  sal_Int16 nClassID = FormComponentType::CONTROL;
376  xSingleSelection->getPropertyValue( FM_PROP_CLASSID ) >>= nClassID;
377 
378  sTitle = SvxResId(RID_STR_PROPERTIES_CONTROL) +
379  GetUIHeadlineName(nClassID, makeAny(xSingleSelection));
380  }
381  else if ( Reference< XForm >( xSingleSelection, UNO_QUERY ).is() )
382  sTitle = SvxResId(RID_STR_PROPERTIES_FORM);
383  }
384 
385  if ( implIsReadOnlyModel() )
386  sTitle += SvxResId(RID_STR_READONLY_VIEW);
387 
388  m_xDialog->set_title(sTitle);
389  }
390 }
391 
393 {
394  rInfo.bVisible = false;
395  rInfo.aExtraString = getCurrentPage();
396 }
397 
398 IMPL_LINK_NOARG( FmPropBrw, OnAsyncGetFocus, void*, void )
399 {
400  m_nAsyncGetFocusId = nullptr;
401 }
402 
403 namespace
404 {
405  bool lcl_shouldEnableHelpSection( const Reference< XComponentContext >& _rxContext )
406  {
407  ::utl::OConfigurationTreeRoot aConfiguration(
409  _rxContext,
410  "/org.openoffice.Office.Common/Forms/PropertyBrowser/" ) );
411 
412  bool bEnabled = false;
413  OSL_VERIFY( aConfiguration.getNodeValue( "DirectHelp" ) >>= bEnabled );
414  return bEnabled;
415  }
416 }
417 
419 {
420  // the document in which we live
421  Reference< XInterface > xDocument;
422  if ( _pFormShell && _pFormShell->GetObjectShell() )
423  xDocument = _pFormShell->GetObjectShell()->GetModel();
424 
425  // the context of the controls in our document
426  Reference< awt::XControlContainer > xControlContext;
427  if ( _pFormShell && _pFormShell->GetFormView() )
428  {
429  SdrPageView* pPageView = _pFormShell->GetFormView()->GetSdrPageView();
430 
431  if(pPageView)
432  {
433  SdrPageWindow* pPageWindow = pPageView->GetPageWindow(0);
434 
435  if(pPageWindow)
436  {
437  xControlContext = pPageWindow->GetControlContainer();
438  }
439  }
440  }
441 
442  // the default parent window for message boxes
443  Reference< XWindow > xParentWindow(m_xDialog->GetXWindow());
444 
445  // the mapping from control models to control shapes
446  Reference< XMap > xControlMap;
447  FmFormPage* pFormPage = _pFormShell ? _pFormShell->GetCurPage() : nullptr;
448  if ( pFormPage )
449  xControlMap = pFormPage->GetImpl().getControlToShapeMap();
450 
451  // our own component context
452 
453  // a ComponentContext for the
454  ::cppu::ContextEntry_Init aHandlerContextInfo[] =
455  {
456  ::cppu::ContextEntry_Init( "ContextDocument", makeAny( xDocument ) ),
457  ::cppu::ContextEntry_Init( "DialogParentWindow", makeAny( xParentWindow ) ),
458  ::cppu::ContextEntry_Init( "ControlContext", makeAny( xControlContext ) ),
459  ::cppu::ContextEntry_Init( "ControlShapeAccess", makeAny( xControlMap ) )
460  };
462  ::cppu::createComponentContext( aHandlerContextInfo, SAL_N_ELEMENTS( aHandlerContextInfo ),
463  m_xORB ) );
464 
465  bool bEnableHelpSection = lcl_shouldEnableHelpSection( m_xORB );
466 
467  // an object inspector model
469  bEnableHelpSection
470  ? DefaultFormComponentInspectorModel::createWithHelpSection( m_xInspectorContext, 3, 5 )
471  : DefaultFormComponentInspectorModel::createDefault( m_xInspectorContext );
472 
473  // an object inspector
475  ObjectInspector::createWithModel(
477  );
478 
479  if ( !m_xBrowserController.is() )
480  {
481  ShowServiceNotAvailableError(m_pParent, "com.sun.star.inspection.ObjectInspector", true);
482  }
483  else
484  {
485  m_xBrowserController->attachFrame( Reference<XFrame>(m_xMeAsFrame,UNO_QUERY_THROW) );
486  }
487 
488  if ( bEnableHelpSection )
489  {
490  Reference< XObjectInspector > xInspector( m_xBrowserController, UNO_QUERY_THROW );
491  Reference< XObjectInspectorUI > xInspectorUI( xInspector->getInspectorUI() );
492  Reference< XInterface > xDefaultHelpProvider( DefaultHelpProvider::create( m_xInspectorContext, xInspectorUI ) );
493  }
494 }
495 
496 
498 {
499  // the document in which we live
500  Reference< XInterface > xDocument;
501  SfxObjectShell* pObjectShell = _pFormShell ? _pFormShell->GetObjectShell() : nullptr;
502  if ( pObjectShell )
503  xDocument = pObjectShell->GetModel();
504  if ( ( xDocument == m_xLastKnownDocument ) && m_xBrowserController.is() )
505  // nothing to do
506  return;
507 
508  try
509  {
510  // clean up any previous instances of the object inspector
511  if ( m_xMeAsFrame.is() )
512  m_xMeAsFrame->setComponent( nullptr, nullptr );
513  else
514  ::comphelper::disposeComponent( m_xBrowserController );
515  m_xBrowserController.clear();
516  m_xInspectorModel.clear();
517 
518  // and create a new one
519  impl_createPropertyBrowser_throw( _pFormShell );
520  }
521  catch( const Exception& )
522  {
524  }
525  m_xLastKnownDocument = xDocument;
526 }
527 
528 
529 void FmPropBrw::StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState)
530 {
531  if (!pState || SID_FM_PROPERTY_CONTROL != nSID)
532  return;
533 
534  try
535  {
536  if (eState >= SfxItemState::DEFAULT)
537  {
538  FmFormShell* pShell = dynamic_cast<FmFormShell*>( static_cast<const SfxObjectItem*>(pState)->GetShell() );
539  InterfaceBag aSelection;
540  if ( pShell )
541  pShell->GetImpl()->getCurrentSelection_Lock(aSelection);
542 
544 
545  // set the new object to inspect
546  implSetNewSelection( aSelection );
547 
548  // if this is the first time we're here, some additional things need to be done ...
549  if ( m_bInitialStateChange )
550  {
551  // if we're just newly created, we want to have the focus
552  m_nAsyncGetFocusId = Application::PostUserEvent(LINK(this, FmPropBrw, OnAsyncGetFocus));
553 
554  // and additionally, we want to show the page which was active during
555  // our previous incarnation
556  if ( !m_sLastActivePage.isEmpty() )
557  {
558  try
559  {
560  if ( m_xBrowserController.is() )
561  m_xBrowserController->restoreViewData( makeAny( m_sLastActivePage ) );
562  }
563  catch( const Exception& )
564  {
565  OSL_FAIL( "FmPropBrw::StateChanged: caught an exception while setting the initial page!" );
566  }
567  }
568 
569  m_bInitialStateChange = false;
570  }
571 
572  }
573  else
574  {
576  }
577  }
578  catch (Exception&)
579  {
580  OSL_FAIL("FmPropBrw::StateChanged: Exception occurred!");
581  }
582 }
583 
584 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
::std::set< css::uno::Reference< css::uno::XInterface > > InterfaceBag
Definition: fmtools.hxx:170
OUString aExtraString
void implDetachController()
Definition: fmPropBrw.cxx:261
Reference< XComponentContext > SAL_CALL createComponentContext(ContextEntry_Init const *pEntries, sal_Int32 nEntries, Reference< XComponentContext > const &xDelegate)
#define FM_PROP_FORMATSSUPPLIER
Definition: fmprop.hxx:66
FmFormView * GetFormView() const
Definition: fmshell.hxx:115
FmXFormShell * GetImpl() const
Definition: fmshell.hxx:118
css::uno::Reference< css::inspection::XObjectInspectorModel > m_xInspectorModel
Definition: fmPropBrw.hxx:59
IMPL_LINK_NOARG(FmPropBrw, OnAsyncGetFocus, void *, void)
Definition: fmPropBrw.cxx:398
bool implIsReadOnlyModel() const
Definition: fmPropBrw.cxx:320
css::uno::Reference< css::awt::XControlContainer > const & GetControlContainer(bool _bCreateIfNecessary=true) const
static OUString GetUIHeadlineName(sal_Int16 nClassId, const Any &aUnoObj)
Definition: fmPropBrw.cxx:97
FmFormPage * GetCurPage() const
Definition: fmshell.cxx:1150
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
css::uno::Reference< css::frame::XModel > GetModel() const
void Invalidate(sal_uInt16 nId)
weld::Window * m_pParent
Definition: fmPropBrw.hxx:46
virtual ~FmPropBrw() override
Definition: fmPropBrw.cxx:208
void impl_ensurePropertyBrowser_nothrow(FmFormShell *_pFormShell)
creates the PropertyBrowser (aka ObjectInspector) and plugs it into our frame
Definition: fmPropBrw.cxx:497
static OConfigurationTreeRoot createWithComponentContext(const css::uno::Reference< css::uno::XComponentContext > &_rxContext, const OUString &_rPath, sal_Int32 _nDepth=-1, CREATION_MODE _eMode=CM_UPDATABLE)
Reference< XNameAccess > m_xContainer
SdrPageWindow * GetPageWindow(sal_uInt32 nIndex) const
Definition: svdpagv.cxx:93
Reference< XController > xController
OUString m_sLastActivePage
Definition: fmPropBrw.hxx:48
OUString SvxResId(const char *pId)
Definition: dialmgr.cxx:28
#define FM_PROP_CLASSID
Definition: fmprop.hxx:30
virtual void Close() override
void implSetNewSelection(const InterfaceBag &_rSelection)
Definition: fmPropBrw.cxx:336
std::unique_ptr< weld::Container > m_xContainer
Definition: fmPropBrw.hxx:49
bool m_bInitialStateChange
Definition: fmPropBrw.hxx:45
FmFormPageImpl & GetImpl() const
Definition: fmpage.hxx:62
virtual void Close() override
Definition: fmPropBrw.cxx:290
#define SAL_N_ELEMENTS(arr)
void ShowServiceNotAvailableError(weld::Widget *pParent, const OUString &rServiceName, bool bError)
static void RemoveUserEvent(ImplSVEvent *nUserEvent)
#define DBG_UNHANDLED_EXCEPTION(...)
FmPropBrw(const css::uno::Reference< css::uno::XComponentContext > &_xORB, SfxBindings *pBindings, SfxChildWindow *pMgr, weld::Window *pParent, const SfxChildWinInfo *_pInfo)
Definition: fmPropBrw.cxx:176
Shell * GetShell()
virtual void dispose()
int i
void getCurrentSelection_Lock(InterfaceBag &_rSelection) const
retrieves the current selection
Definition: fmshimp.cxx:1913
SfxBindings & GetBindings()
virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem *pState) override
Definition: fmPropBrw.cxx:529
css::uno::Reference< css::frame::XController > m_xBrowserController
Definition: fmPropBrw.hxx:61
css::uno::Reference< css::uno::XComponentContext > m_xInspectorContext
Definition: fmPropBrw.hxx:51
void impl_createPropertyBrowser_throw(FmFormShell *_pFormShell)
creates a property browser
Definition: fmPropBrw.cxx:418
#define FM_SUN_COMPONENT_FORMATTEDFIELD
Definition: fmservs.hxx:75
ImplSVEvent * m_nAsyncGetFocusId
Definition: fmPropBrw.hxx:47
SFX_IMPL_MODELESSDIALOGCONTOLLER(SfxRecordingFloatWrapper_Impl, SID_RECORDING_FLOATWINDOW)
css::uno::Reference< css::frame::XFrame2 > m_xMeAsFrame
Definition: fmPropBrw.hxx:55
SfxItemState
virtual void FillInfo(SfxChildWinInfo &rInfo) const override
Definition: fmPropBrw.cxx:392
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
SVX_DLLPUBLIC css::uno::Reference< css::container::XMap > getControlToShapeMap()
returns an object mapping from control models to drawing shapes.
Definition: fmpgeimp.cxx:225
Reference< XExecutableDialog > m_xDialog
Reference< XComponentContext > getProcessComponentContext()
SdrPageView * GetSdrPageView() const
Definition: svdpntv.hxx:310
bool hasProperty(const OUString &_rName, const Reference< XPropertySet > &_rxSet)
OUString getCurrentPage() const
Definition: fmPropBrw.cxx:241
css::uno::Reference< css::uno::XInterface > m_xLastKnownDocument
Definition: fmPropBrw.hxx:57
class FmSearchEngine - Impl class for FmSearchDialog
virtual SfxObjectShell * GetObjectShell()
css::uno::Reference< css::uno::XComponentContext > m_xORB
Definition: fmPropBrw.hxx:53
css::uno::Any SAL_CALL makeAny(const SharedUNOComponent< INTERFACE, COMPONENT > &value)