24#include <com/sun/star/awt/PopupMenu.hpp>
25#include <com/sun/star/awt/XTabController.hpp>
26#include <com/sun/star/container/XChild.hpp>
27#include <com/sun/star/container/XContainer.hpp>
28#include <com/sun/star/form/XLoadable.hpp>
29#include <com/sun/star/frame/thePopupMenuControllerFactory.hpp>
30#include <com/sun/star/frame/XLayoutManager.hpp>
31#include <com/sun/star/frame/Frame.hpp>
32#include <com/sun/star/frame/FrameSearchFlag.hpp>
33#include <com/sun/star/frame/XFrames.hpp>
34#include <com/sun/star/frame/XFramesSupplier.hpp>
35#include <com/sun/star/frame/XPopupMenuController.hpp>
36#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
37#include <com/sun/star/sdb/application/DatabaseObject.hpp>
38#include <com/sun/star/sdb/application/DatabaseObjectContainer.hpp>
39#include <com/sun/star/sdbc/XConnection.hpp>
40#include <com/sun/star/ucb/XCommandEnvironment.hpp>
41#include <com/sun/star/ucb/XCommandProcessor.hpp>
42#include <com/sun/star/ucb/Command.hpp>
43#include <com/sun/star/util/XCloseable.hpp>
50#include <dbaccess_slotid.hrc>
58#include <com/sun/star/document/XDocumentProperties.hpp>
62using namespace ::
dbaui;
73using ::com::sun::star::awt::XTabController;
77 namespace DatabaseObject = css::sdb::application::DatabaseObject;
78 namespace DatabaseObjectContainer = css::sdb::application::DatabaseObjectContainer;
83 bool lcl_findEntry_impl(
const TreeListBox& rTree, std::u16string_view rName,
weld::TreeIter& rIter)
114 bool lcl_findEntry(
const TreeListBox& rTree, std::u16string_view rName,
weld::TreeIter& rIter)
118 return nIndex != -1 && lcl_findEntry_impl(rTree, rName.substr(sErase.size() + 1), rIter);
123 :
OChildWindow(pParent,
"dbaccess/ui/detailwindow.ui",
"DetailWindow")
124 , m_rBorderWin(rBorderWin)
125 , m_xBox(m_xBuilder->weld_container(
"box"))
126 , m_xFL(m_xBuilder->weld_widget(
"separator"))
127 , m_xMBPreview(m_xBuilder->weld_menu_button(
"disablepreview"))
129 , m_xPreviewWin(new
weld::CustomWeld(*m_xBuilder,
"preview", *m_xPreview))
131 , m_xDocumentInfoWin(new
weld::CustomWeld(*m_xBuilder,
"infopreview", *m_xDocumentInfo))
132 , m_xTablePreview(m_xBuilder->weld_container(
"tablepreview"))
133 , m_ePreviewMode(ePreviewMode)
138 "com.sun.star.sdb.OfficeDatabaseDocument");
158 if ( xCloseable.is() )
159 xCloseable->close(
true);
226 assert(
m_aLists[
nPos] &&
"List can not be NULL! ->GPF");
232 bool bAscending =
false;
236 bAscending =
m_aLists[
nPos]->GetWidget().get_sort_order();
276 std::unique_ptr<weld::TreeIter> xParent(rTreeView.
make_iterator(&rEntry));
283 rNames.push_back(
sName);
294 if (&
m_aLists[
i]->GetWidget() == &rControl)
300 OSL_FAIL(
"OAppDetailPageHelper::describeCurrentSelectionForControl: invalid control!" );
307 OSL_ENSURE( pList,
"OAppDetailPageHelper::describeCurrentSelectionForType: "
308 "You really should ensure this type has already been viewed before!" );
312 std::vector< NamedDatabaseObject > aSelected;
316 NamedDatabaseObject aObject;
327 aObject.Name = rTreeView.
get_text(rEntry);
333 std::unique_ptr<weld::TreeIter> xParent(rTreeView.
make_iterator(&rEntry));
341 if (
isLeaf(rTreeView, rEntry))
344 aObject.Type = (
eType ==
E_FORM) ? DatabaseObjectContainer::FORMS_FOLDER : DatabaseObjectContainer::REPORTS_FOLDER;
345 aObject.Name =
sName;
349 OSL_FAIL(
"OAppDetailPageHelper::describeCurrentSelectionForType: unexpected type!" );
353 if (!aObject.Name.isEmpty())
354 aSelected.push_back(aObject);
369 int x,
y, width, height;
386 const OUString* pIter = _aNames.getConstArray();
387 const OUString* pEnd = pIter + _aNames.getLength();
388 for(;pIter != pEnd;++pIter)
393 rTreeView.
select(*xEntry);
405 OSL_ENSURE(
m_aLists[
nPos],
"Tables tree view is NULL! -> GPF");
409 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator(_pEntry));
472 sal_Int32 nEntryType = rTreeView.
get_id(rEntry).toInt32();
473 return !( ( nEntryType == DatabaseObjectContainer::TABLES )
474 || ( nEntryType == DatabaseObjectContainer::CATALOG )
475 || ( nEntryType == DatabaseObjectContainer::SCHEMA )
476 || ( nEntryType == DatabaseObjectContainer::FORMS_FOLDER )
477 || ( nEntryType == DatabaseObjectContainer::REPORTS_FOLDER ));
483 bool bLeafSelected =
false;
489 bLeafSelected =
isLeaf(rTreeView, rEntry);
490 return bLeafSelected;
493 return bLeafSelected;
498 std::unique_ptr<weld::TreeIter> xReturn;
513 OSL_ENSURE(_xConnection.is(),
"Connection is NULL! -> GPF");
527 std::unique_ptr<weld::TreeIter> xFirst(rTreeView.
make_iterator());
538 sal_Int32 nDatabaseObjectType( 0 );
541 case E_FORM: nDatabaseObjectType = DatabaseObject::FORM;
break;
545 OSL_FAIL(
"OAppDetailPageHelper::GetElementIcons: invalid element type!" );
549 return ImageProvider::getDefaultImageResourceID(nDatabaseObjectType);
554 OSL_ENSURE(
E_TABLE != _eType,
"E_TABLE isn't allowed.");
569 OSL_FAIL(
"Illegal call!");
582 if (!rTreeView.
n_children() && _xContainer.is())
585 fillNames( _xContainer, _eType, sImageId,
nullptr );
595 bool bHasFocus =
false;
617 namespace DatabaseObjectContainer = ::com::sun::star::sdb::application::DatabaseObjectContainer;
619 sal_Int32 lcl_getFolderIndicatorForType(
const ElementType _eType )
621 const sal_Int32 nFolderIndicator =
622 ( _eType ==
E_FORM ) ? DatabaseObjectContainer::FORMS_FOLDER
623 : ( _eType ==
E_REPORT ) ? DatabaseObjectContainer::REPORTS_FOLDER : -1;
624 return nFolderIndicator;
631 OSL_ENSURE(_xContainer.is(),
"Data source is NULL! -> GPF");
635 OSL_ENSURE( pList,
"OAppDetailPageHelper::fillNames: you really should create the list before calling this!" );
639 if ( !(_xContainer.is() && _xContainer->hasElements()) )
644 std::unique_ptr<weld::TreeIter> xRet = rTreeView.
make_iterator();
645 const sal_Int32 nFolderIndicator = lcl_getFolderIndicatorForType( _eType );
648 const OUString* pIter =
aSeq.getConstArray();
649 const OUString* pEnd = pIter +
aSeq.getLength();
650 for(;pIter != pEnd;++pIter)
653 if ( xSubElements.is() )
655 OUString
sId(OUString::number(nFolderIndicator));
657 rTreeView.
insert(_pParent, -1,
nullptr, &
sId,
nullptr,
nullptr,
false, xRet.get());
658 rTreeView.
set_text(*xRet, *pIter, 0);
661 fillNames( xSubElements, _eType, rImageId, xRet.get());
665 rTreeView.
insert(_pParent, -1,
nullptr,
nullptr,
nullptr,
nullptr,
false, xRet.get());
666 rTreeView.
set_text(*xRet, *pIter, 0);
676 std::unique_ptr<DBTreeViewBase> xTreeView(
new DBTreeView(
m_xBox.get(), bSQLType));
677 xTreeView->GetWidget().set_help_id(rHelpId);
710 rpBox->GetWidget().clear();
723 const OUString& rOldName,
724 const OUString& rNewName)
741 std::unique_ptr<weld::TreeIter> xIter(rTreeView.
make_iterator());
743 rTreeView.
set_text(*xIter, rNewName);
749 std::unique_ptr<weld::TreeIter> xIter(rTreeView.
make_iterator());
751 rTreeView.
set_text(*xIter, rNewName);
755 OSL_FAIL(
"Invalid element type");
763 std::unique_ptr<weld::TreeIter> xRet;
775 std::unique_ptr<weld::TreeIter> xEntry;
777 if ( xChild.is() &&
E_QUERY != _eType )
782 OUString
sName = xContent->getIdentifier()->getContentIdentifier();
783 std::unique_ptr<weld::TreeIter> xIter(rTreeView.
make_iterator());
785 xEntry = std::move(xIter);
791 if ( xContainer.is() )
793 const sal_Int32 nFolderIndicator = lcl_getFolderIndicatorForType( _eType );
794 OUString
sId(OUString::number(nFolderIndicator));
797 rTreeView.
insert(xEntry.get(), -1,
nullptr, &
sId,
nullptr,
nullptr,
false, xRet.get());
798 rTreeView.
set_text(*xRet, _rName, 0);
800 fillNames(xContainer, _eType, sImageId, xRet.get());
805 rTreeView.
insert(xEntry.get(), -1,
nullptr,
nullptr,
nullptr,
nullptr,
false, xRet.get());
806 rTreeView.
set_text(*xRet, _rName, 0);
831 std::unique_ptr<weld::TreeIter> xIter(rTreeView.
make_iterator());
839 std::unique_ptr<weld::TreeIter> xIter(rTreeView.
make_iterator());
845 OSL_FAIL(
"Invalid element type");
853 return getBorderWin().getView()->getAppController().onEntryDoubleClick(rTreeView);
858 getBorderWin().getView()->getAppController().onSelectionChanged();
863 getBorderWin().getView()->getAppController().onCopyEntry();
868 getBorderWin().getView()->getAppController().onPasteEntry();
873 getBorderWin().getView()->getAppController().onDeleteEntry();
883 OUString stripTrailingDots(std::u16string_view rStr)
908 if (
getBorderWin().
getView()->getAppController().isCommandEnabled(SID_DB_APP_VIEW_DOCINFO_PREVIEW) )
909 aCommand =
".uno:DBShowDocInfoPreview";
920 m_xMBPreview->set_label(stripTrailingDots(aCommandLabel));
966 if ( aPreview >>= aBmpSequence )
969 aBmpSequence.getLength(),
982 Reference<document::XDocumentProperties> xProp(
983 aPreview, UNO_QUERY);
994 catch(
const Exception& )
1001 const OUString& _sName,
1038 xApplication,
nullptr, _bTable
1043 aArgs.
put(
"Preview",
true );
1044 aArgs.
put(
"ReadOnly",
true );
1045 aArgs.
put(
"AsTemplate",
false );
1049 bool bClearPreview = !xPreview.is();
1052 if ( !bClearPreview )
1055 bClearPreview = !xTabController.is();
1056 if ( !bClearPreview )
1059 bClearPreview = !( xLoadable.is() && xLoadable->isLoaded() );
1062 if ( bClearPreview )
1068 class MenuStatusListener final :
public ::cppu::WeakImplHelper<css::frame::XStatusListener>
1073 : m_rMBPreview(rMBPreview)
1077 virtual void SAL_CALL statusChanged(
const css::frame::FeatureStateEvent &rEvent)
override
1079 if (!rEvent.IsEnabled)
1081 const OUString &rURL = rEvent.FeatureURL.Complete;
1082 m_rMBPreview.remove_item(rURL);
1086 virtual void SAL_CALL disposing(
const css::lang::EventObject& )
override
1094 if (!m_xMBPreview->get_active())
1097 m_xMBPreview->clear();
1100 css::uno::Reference<css::uno::XComponentContext> xContext(getBorderWin().
getView()->getORB());
1101 css::uno::Reference<css::frame::XUIControllerFactory> xPopupMenuFactory(css::frame::thePopupMenuControllerFactory::get(xContext));
1102 if (!xPopupMenuFactory.is())
1105 auto xFrame = getBorderWin().getView()->getAppController().getFrame();
1107 css::uno::Sequence<css::uno::Any> aArgs {
1112 css::uno::Reference<css::frame::XPopupMenuController> xPopupController
1113 (xPopupMenuFactory->createInstanceWithArgumentsAndContext(
".uno:DBPreview", aArgs, xContext), css::uno::UNO_QUERY);
1115 if (!xPopupController.is())
1118 css::uno::Reference<css::awt::XPopupMenu> xPopupMenu(css::awt::PopupMenu::create(xContext));
1119 xPopupController->setPopupMenu(xPopupMenu);
1122 Reference<XDispatchProvider> xDispatchProvider(
xFrame, css::uno::UNO_QUERY);
1124 css::uno::Reference<css::frame::XStatusListener> xStatusListener(
new MenuStatusListener(*m_xMBPreview));
1128 auto nItemId = xPopupMenu->getItemId(
i);
1131 if (!xPopupMenu->isItemEnabled(nItemId))
1134 aTargetURL.Complete = xPopupMenu->getCommand(nItemId);
1137 "com.sun.star.sdb.OfficeDatabaseDocument");
1142 css::frame::FrameSearchFlag::SELF);
1150 css::uno::Reference<css::lang::XComponent> xComponent(xPopupController, css::uno::UNO_QUERY);
1151 if (xComponent.is())
1152 xComponent->dispose();
1155IMPL_LINK(OAppDetailPageHelper, MenuSelectHdl,
const OUString&, rIdent,
void)
1157 if (rIdent.isEmpty())
1160 css::util::URL
aURL;
1161 aURL.Complete = rIdent;
1163 Reference<XDispatchProvider> xProvider(getBorderWin().
getView()->getAppController().getFrame(), UNO_QUERY);
1164 Reference<XDispatch> xDisp = xProvider->queryDispatch(
aURL,
"_self", 0);
1165 xDisp->dispatch(
aURL, css::uno::Sequence<css::beans::PropertyValue>());
1167 m_xMBPreview->set_label(stripTrailingDots(m_xMBPreview->get_item_label(rIdent)));
1183 const double fGrfWH =
static_cast<double>(aNewSize.
Width()) / aNewSize.
Height();
1184 const double fWinWH =
static_cast<double>(aWinSize.
Width()) / aWinSize.
Height();
1186 if ( fGrfWH < fWinWH )
OptionalString sComposedName
PropertiesInfo aProperties
static ErrCode Import(SvStream &rIStm, Graphic &rGraphic, ConvertDataFormat nFormat=ConvertDataFormat::Unknown)
const Graphic & GetGraphic() const
bool StartAnimation(OutputDevice &rOut, const Point &rPt, const Size &rSz, tools::Long nExtraData=0, OutputDevice *pFirstFrameOutDev=nullptr)
bool Draw(OutputDevice &rOut, const Point &rPt, const Size &rSz, const GraphicAttr *pAttr=nullptr) const
MapMode GetPrefMapMode() const
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long Height() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
bool put(const OUString &_rValueName, const VALUE_TYPE &_rValue)
TreeListBox & getListBox() const
weld::TreeView & GetWidget()
weld::Container & getTopLevel()
OApplicationView * getView() const
std::unique_ptr< weld::MenuButton > m_xMBPreview
void sortUp()
sorts all entries descending
void fillNames(const css::uno::Reference< css::container::XNameAccess > &_xContainer, const ElementType _eType, const OUString &rImageId, const weld::TreeIter *_pParent)
fills the names in the listbox
static bool isLeaf(const weld::TreeView &rTreeView, const weld::TreeIter &rEntry)
returns if an entry is a leaf
void sortDown()
sorts all entries ascending
bool isSortUp() const
returns <TRUE> if it sorts ascending
void sort(int nPos, bool bAscending)
sorts the entries in the tree list box.
std::unique_ptr< weld::CustomWeld > m_xDocumentInfoWin
std::unique_ptr< weld::Widget > m_xFL
virtual ~OAppDetailPageHelper() override
OAppBorderWindow & m_rBorderWin
virtual bool HasChildPathFocus() const override
OUString getQualifiedName(const weld::TreeIter *_pEntry) const
return the qualified name.
std::unique_ptr< DBTreeViewBase > createSimpleTree(const OUString &rHelpId, ElementType eType)
creates the tree and sets all HandleCallbacks
std::unique_ptr< weld::Container > m_xTablePreview
void elementReplaced(ElementType eType, const OUString &_rOldName, const OUString &_rNewName)
replaces an objects name with a new one
vcl::Window * getMenuParent() const
get the menu parent window for the given control
static OUString getElementIcons(ElementType _eType)
retrieves the resource ids of the images representing elements of the given type
sal_Int32 getSelectionCount()
returns the count of selected entries
std::unique_ptr< weld::CustomWeld > m_xPreviewWin
bool isALeafSelected() const
returns if one of the selected entries is a leaf
int getVisibleControlIndex() const
returns the index of the visible control
void selectAll()
select all entries in the visible control
void setDetailPage(DBTreeViewBase &rTreeView)
sets the detail page
void setupTree(DBTreeViewBase &rTreeView)
sets all HandleCallbacks
std::unique_ptr< weld::TreeIter > getEntry(const Point &rPosPixel) const
bool isFilled() const
returns <TRUE> when a detail page was filled
css::uno::Reference< css::awt::XWindow > m_xWindow
DBTreeViewBase * getCurrentView() const
returns the current visible tree list box
virtual void GrabFocus() override
std::unique_ptr< weld::Container > m_xBox
void adjustMenuPosition(const weld::TreeView &rControl, ::Point &rPos) const
std::unique_ptr< ODocumentInfoPreview > m_xDocumentInfo
void elementRemoved(ElementType _eType, const OUString &_rName)
removes an element from the detail page.
bool isPreviewEnabled() const
<TRUE> if the preview is enabled
PreviewMode m_ePreviewMode
sal_Int32 getElementCount() const
returns the count of entries
OAppBorderWindow & getBorderWin() const
std::unique_ptr< weld::TreeIter > elementAdded(ElementType eType, const OUString &rName, const css::uno::Any &rObject)
adds a new object to the detail page.
void getSelectionElementNames(std::vector< OUString > &_rNames) const
returns the element names which are selected
void createPage(ElementType _eType, const css::uno::Reference< css::container::XNameAccess > &_xContainer)
creates the page for the specific type.
css::uno::Reference< css::frame::XFrame2 > m_xFrame
void describeCurrentSelectionForType(const ElementType _eType, css::uno::Sequence< css::sdb::application::NamedDatabaseObject > &_out_rSelectedObjects)
describes the current selection for the given ElementType
void selectElements(const css::uno::Sequence< OUString > &_aNames)
select all names on the currently selected container.
ElementType getElementType() const
return the element of currently select entry
void showPreview(const css::uno::Reference< css::ucb::XContent > &_xContent)
shows the Preview of the content when it is enabled.
std::unique_ptr< DBTreeViewBase > m_aLists[size_t(E_ELEMENT_TYPE_COUNT)]
void switchPreview(PreviewMode _eMode, bool _bForce=false)
switches to the given preview mode
void describeCurrentSelectionForControl(const weld::TreeView &rControl, css::uno::Sequence< css::sdb::application::NamedDatabaseObject > &_out_rSelectedObjects)
describes the current selection for the given control
void clearPages()
clears the detail pages
std::unique_ptr< OPreviewWindow > m_xPreview
void createTablesPage(const css::uno::Reference< css::sdbc::XConnection > &_xConnection)
creates the tables page
void onSelectionChanged()
called when an entry in a tree view has been selected
void containerFound(const css::uno::Reference< css::container::XContainer > &_xContainer)
called when an object container of any kind was found during enumerating tree view elements
void previewChanged(sal_Int32 _nMode)
called when the preview mode was changed
OApplicationController & getAppController() const
std::unique_ptr< weld::Container > m_xContainer
GraphicObject m_aGraphicObj
bool ImplGetGraphicCenterRect(const vcl::RenderContext &rRenderContext, const Graphic &rGraphic, tools::Rectangle &rResultRect) const
gets the graphic center rect
tools::Rectangle m_aPreviewRect
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
OUString getQualifiedTableName(const weld::TreeIter &rEntry) const
returns the fully qualified name of a table entry
css::sdb::application::NamedDatabaseObject describeObject(const weld::TreeIter &rEntry)
returns a NamedDatabaseObject record which describes the given entry
std::unique_ptr< weld::TreeIter > GetEntryPosByName(std::u16string_view rName, const weld::TreeIter *pStart=nullptr, const IEntryFilter *pFilter=nullptr) const
void setControlActionListener(IControlActionListener *pListener)
void setDeleteHandler(const Link< LinkParamNone *, void > &_rHdl)
void setPasteHandler(const Link< LinkParamNone *, void > &_rHdl)
void setCopyHandler(const Link< LinkParamNone *, void > &_rHdl)
void SetSelChangeHdl(const Link< LinkParamNone *, void > &_rHdl)
void setContextMenuProvider(IContextMenuProvider *pContextMenuProvider)
weld::Window * GetFrameWeld() const
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const=0
virtual bool get_selected(TreeIter *pIter) const=0
virtual void make_sorted()=0
virtual void expand_row(const TreeIter &rIter)=0
void connect_row_activated(const Link< TreeView &, bool > &rLink)
virtual void set_text(int row, const OUString &rText, int col=-1)=0
virtual OUString get_text(int row, int col=-1) const=0
virtual int n_children() const=0
virtual void set_selection_mode(SelectionMode eMode)=0
virtual void set_text_emphasis(int row, bool bOn, int col)=0
virtual void insert(const TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, TreeIter *pRet)=0
virtual bool get_dest_row_at_pos(const Point &rPos, weld::TreeIter *pResult, bool bDnDMode, bool bAutoScroll=true)=0
virtual void selected_foreach(const std::function< bool(TreeIter &)> &func)=0
virtual void set_image(int row, const OUString &rImage, int col=-1)=0
virtual bool get_iter_first(TreeIter &rIter) const=0
virtual void remove(int pos)=0
virtual bool iter_next_sibling(TreeIter &rIter) const=0
virtual void select(int pos)=0
virtual bool iter_parent(TreeIter &rIter) const=0
virtual bool iter_children(TreeIter &rIter) const=0
virtual bool iter_has_child(const TreeIter &rIter) const=0
virtual void make_unsorted()=0
virtual int count_selected_rows() const=0
virtual OUString get_id(int pos) const=0
#define TOOLS_WARN_EXCEPTION(area, stream)
#define DBG_UNHANDLED_EXCEPTION(...)
Reference< XDispatch > xDispatch
constexpr OUStringLiteral HID_APP_FORM_TREE
constexpr OUStringLiteral HID_APP_REPORT_TREE
constexpr OUStringLiteral HID_APP_VIEW_PREVIEW_2
constexpr OUStringLiteral HID_APP_QUERY_TREE
constexpr OUStringLiteral HID_APP_TABLE_TREE
constexpr OUStringLiteral HID_APP_VIEW_PREVIEW_CB
constexpr OUStringLiteral HID_APP_VIEW_PREVIEW_1
constexpr OUStringLiteral HID_APP_VIEW_PREVIEW_3
#define LINK(Instance, Class, Member)
Sequence< sal_Int8 > aSeq
constexpr OUStringLiteral aData
OString stripEnd(const OString &rIn, char c)
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
IMPL_LINK_NOARG(OApplicationController, OnClipboardChanged, TransferableDataHelper *, void)
IMPL_LINK(OApplicationController, OnSelectContainer, void *, _pType, void)
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
SwView * getView(const uno::Reference< frame::XModel > &xModel)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
Sequence< beans::PropertyValue > GetCommandProperties(const OUString &rsCommandName, const OUString &rsModuleName)
OUString GetLabelForCommand(const css::uno::Sequence< css::beans::PropertyValue > &rProperties)
constexpr OUStringLiteral PROPERTY_SHOWMENU(u"ShowMenu")
Reference< XFrame > xFrame
the frame which the component resides in. Must not be <NULL>