35#include <com/sun/star/awt/PosSize.hpp>
36#include <com/sun/star/beans/PropertyAttribute.hpp>
37#include <com/sun/star/form/FormComponentType.hpp>
38#include <com/sun/star/form/XFormComponent.hpp>
39#include <com/sun/star/form/XLoadable.hpp>
40#include <com/sun/star/form/XReset.hpp>
41#include <com/sun/star/lang/DisposedException.hpp>
42#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
43#include <com/sun/star/lang/NoSupportException.hpp>
44#include <com/sun/star/sdbc/ResultSetType.hpp>
45#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
46#include <com/sun/star/util/URLTransformer.hpp>
47#include <com/sun/star/util/XURLTransformer.hpp>
48#include <com/sun/star/view/XSelectionSupplier.hpp>
49#include <com/sun/star/sdbcx/XRowLocate.hpp>
77using ::com::sun::star::sdbcx::XColumnsSupplier;
78using ::com::sun::star::frame::XDispatchProviderInterceptor;
79using ::com::sun::star::frame::XDispatchProvider;
80using ::com::sun::star::accessibility::XAccessible;
81using ::com::sun::star::accessibility::XAccessibleContext;
82using ::com::sun::star::sdb::XRowSetSupplier;
83using ::com::sun::star::awt::XVclWindowPeer;
88 css::awt::FontDescriptor aFD;
95 aFD.Pitch =
static_cast<sal_Int16
>(rFont.
GetPitch());
99 aFD.Underline =
static_cast<sal_Int16
>(rFont.
GetUnderline());
100 aFD.Strikeout =
static_cast<sal_Int16
>(rFont.
GetStrikeout());
116 aFont.
SetCharSet(
static_cast<rtl_TextEncoding
>(rDescr.CharSet) );
131 ,OInterfaceContainerHelper3( _rMutex )
138 Any aReturn = ::cppu::queryInterface(_rType,
139 static_cast< css::util::XModifyListener*
>(
this),
140 static_cast< XEventListener*
>(
this)
143 if (!aReturn.hasValue())
157 EventObject aMulti( e);
159 notifyEach( &XModifyListener::modified, aMulti );
164 ,OInterfaceContainerHelper3( _rMutex )
171 Any aReturn = ::cppu::queryInterface(_rType,
172 static_cast< XUpdateListener*
>(
this),
173 static_cast< XEventListener*
>(
this)
176 if (!aReturn.hasValue())
190 EventObject aMulti( e );
198 bResult = aIter.
next()->approveUpdate( aMulti );
207 EventObject aMulti( e );
209 notifyEach( &XUpdateListener::updated, aMulti );
214 ,OInterfaceContainerHelper3( _rMutex )
221 Any aReturn = ::cppu::queryInterface(_rType,
222 static_cast< XSelectionChangeListener*
>(
this),
223 static_cast< XEventListener*
>(
this)
226 if (!aReturn.hasValue())
240 EventObject aMulti(_rEvent);
242 notifyEach( &XSelectionChangeListener::selectionChanged, aMulti );
247 ,OInterfaceContainerHelper3( _rMutex )
254 Any aReturn = ::cppu::queryInterface(_rType,
255 static_cast< XContainerListener*
>(
this),
256 static_cast< XEventListener*
>(
this)
259 if (!aReturn.hasValue())
272 ContainerEvent aMulti( e );
274 notifyEach( &XContainerListener::elementInserted, aMulti );
280 ContainerEvent aMulti( e );
282 notifyEach( &XContainerListener::elementRemoved, aMulti );
288 ContainerEvent aMulti( e );
290 notifyEach( &XContainerListener::elementReplaced, aMulti );
295 ,OInterfaceContainerHelper3( _rMutex )
302 Any aReturn = ::cppu::queryInterface( _rType,
303 static_cast< XGridControlListener*
>(
this)
306 if (!aReturn.hasValue())
320 EventObject aForwardedEvent( _event );
322 notifyEach( &XGridControlListener::columnChanged, aForwardedEvent );
335 :m_aModifyListeners(*this, GetMutex())
336 ,m_aUpdateListeners(*this, GetMutex())
337 ,m_aContainerListeners(*this, GetMutex())
338 ,m_aSelectionListeners(*this, GetMutex())
339 ,m_aGridControlListeners(*this, GetMutex())
355 if (!aReturn.hasValue())
356 aReturn = UnoControl::queryAggregation( _rType );
369 return css::uno::Sequence<sal_Int8>();
380 return "com.sun.star.form.FmXGridControl";
416 Reference< XGridPeer > xGridPeer(
getPeer(), UNO_QUERY);
419 Reference< XIndexContainer > xCols(
mxModel, UNO_QUERY);
420 xGridPeer->setColumns(xCols);
432 Reference< XPropertySet > xModelSet(
getModel(), UNO_QUERY);
437 if (::comphelper::getINT16(xModelSet->getPropertyValue(
FM_PROP_BORDER)))
442 OSL_FAIL(
"Can not get style");
446 pReturn->Create(pParent, nStyle);
454 throw DisposedException( OUString(), *
this );
473 if (rParentPeer.is())
481 DBG_ASSERT(pPeer !=
nullptr,
"FmXGridControl::createPeer : imp_CreatePeer didn't return a peer !");
497 DBG_ASSERT(
getPeer().is(),
"FmXGridControl::createPeer : something went wrong ... no top level peer !");
502 Reference< XIndexContainer > xColumns(
getModel(), UNO_QUERY);
504 pPeer->setColumns(xColumns);
507 pPeer->setVisible(
true);
510 pPeer->setEnable(
false);
544 Any aOldCursorBookmark;
547 Reference< XFormComponent > xComp(
getModel(), UNO_QUERY);
550 Reference< XRowSet > xForm(xComp->getParent(), UNO_QUERY);
553 Reference< css::sdbcx::XColumnsSupplier > xColumnsSupplier(xForm, UNO_QUERY);
554 if (xColumnsSupplier.is())
556 if (Reference< XIndexAccess > (xColumnsSupplier->getColumns(),UNO_QUERY_THROW)->getCount())
564 if ( !xForm->isBeforeFirst() && !xForm->isAfterLast() )
568 aOldCursorBookmark = Reference< css::sdbcx::XRowLocate > (xForm, UNO_QUERY_THROW)->getBookmark();
578 pPeer->setRowSet(xForm);
585 if (aOldCursorBookmark.hasValue())
587 Reference< XFormComponent > xComp(
getModel(), UNO_QUERY);
588 Reference< css::sdbcx::XRowLocate > xLocate(xComp->getParent(), UNO_QUERY);
589 xLocate->moveToBookmark(aOldCursorBookmark);
597 Reference< css::awt::XView > xPeerView(
getPeer(), UNO_QUERY);
610 Reference< css::util::XModifyBroadcaster > xGrid(
getPeer(), UNO_QUERY);
619 Reference< XSelectionSupplier > xPeer(
getPeer(), UNO_QUERY);
620 return xPeer->select(_rSelection);
627 Reference< XSelectionSupplier > xPeer(
getPeer(), UNO_QUERY);
628 return xPeer->getSelection();
637 Reference< XSelectionSupplier > xGrid(
getPeer(), UNO_QUERY);
647 Reference< XSelectionSupplier > xGrid(
getPeer(), UNO_QUERY);
658 Reference< XGridFieldDataSupplier > xPeerSupplier(
getPeer(), UNO_QUERY);
659 if (xPeerSupplier.is())
660 return xPeerSupplier->queryFieldDataType(xType);
663 return Sequence<sal_Bool>();
671 Reference< XGridFieldDataSupplier > xPeerSupplier(
getPeer(), UNO_QUERY);
672 if (xPeerSupplier.is())
673 return xPeerSupplier->queryFieldData(nRow, xType);
676 return Sequence< Any>();
684 Reference< css::util::XModifyBroadcaster > xGrid(
getPeer(), UNO_QUERY);
702 css::util::ModeChangeEvent aModeChangeEvent;
708 Reference< XRowSetSupplier > xGrid(
getPeer(), UNO_QUERY);
710 if (xGrid.is() && (
bool(bOn) !=
mbDesignMode || (!bOn && !xGrid->getRowSet().is())))
714 xGrid->setRowSet(Reference< XRowSet > ());
718 Reference< XFormComponent > xComp(
getModel(), UNO_QUERY);
721 Reference< XRowSet > xForm(xComp->getParent(), UNO_QUERY);
722 xGrid->setRowSet(xForm);
729 Reference< XVclWindowPeer > xVclWindowPeer(
getPeer(), UNO_QUERY );
730 if (xVclWindowPeer.is())
731 xVclWindowPeer->setDesignMode(bOn);
746 aModeChangeEvent.Source = *
this;
747 aModeChangeEvent.NewMode =
mbDesignMode ? std::u16string_view(
u"design" ) : std::u16string_view(
u"alive" );
761 Reference< XBoundComponent > xBound(
getPeer(), UNO_QUERY);
771 Reference< XBoundComponent > xBound(
getPeer(), UNO_QUERY);
780 Reference< XBoundComponent > xBound(
getPeer(), UNO_QUERY);
782 return xBound->commit();
794 Reference< XContainer > xContainer(
getPeer(), UNO_QUERY);
804 Reference< XContainer > xContainer(
getPeer(), UNO_QUERY);
811Reference< css::frame::XDispatch > SAL_CALL
FmXGridControl::queryDispatch(
const css::util::URL& aURL,
const OUString& aTargetFrameName, sal_Int32 nSearchFlags)
813 Reference< css::frame::XDispatchProvider > xPeerProvider(
getPeer(), UNO_QUERY);
814 if (xPeerProvider.is())
815 return xPeerProvider->queryDispatch(
aURL, aTargetFrameName, nSearchFlags);
817 return Reference< css::frame::XDispatch > ();
823 Reference< css::frame::XDispatchProvider > xPeerProvider(
getPeer(), UNO_QUERY);
824 if (xPeerProvider.is())
825 return xPeerProvider->queryDispatches(aDescripts);
827 return Sequence< Reference< css::frame::XDispatch > >();
833 Reference< css::frame::XDispatchProviderInterception > xPeerInterception(
getPeer(), UNO_QUERY);
834 if (xPeerInterception.is())
835 xPeerInterception->registerDispatchProviderInterceptor(_xInterceptor);
841 Reference< css::frame::XDispatchProviderInterception > xPeerInterception(
getPeer(), UNO_QUERY);
842 if (xPeerInterception.is())
843 xPeerInterception->releaseDispatchProviderInterceptor(_xInterceptor);
849 ::osl::MutexGuard aGuard(
GetMutex() );
854 Reference< XGridControl > xPeerGrid(
getPeer(), UNO_QUERY );
855 if ( xPeerGrid.is() )
863 ::osl::MutexGuard aGuard(
GetMutex() );
867 Reference< XGridControl > xPeerGrid(
getPeer(), UNO_QUERY );
868 if ( xPeerGrid.is() )
878 Reference< XGridControl > xGrid(
getPeer(), UNO_QUERY );
879 return xGrid.is() ? xGrid->getCurrentColumnPosition() : -1;
885 Reference< XGridControl > xGrid(
getPeer(), UNO_QUERY );
889 xGrid->setCurrentColumnPosition(
nPos );
897 Reference< XElementAccess > xPeer(
getPeer(), UNO_QUERY);
898 return xPeer.is() && xPeer->hasElements();
911 Reference< XEnumerationAccess > xPeer(
getPeer(), UNO_QUERY);
913 return xPeer->createEnumeration();
915 return new ::comphelper::OEnumerationByIndex(
this);
922 Reference< XIndexAccess > xPeer(
getPeer(), UNO_QUERY);
923 return xPeer.is() ? xPeer->getCount() : 0;
929 Reference< XIndexAccess > xPeer(
getPeer(), UNO_QUERY);
931 throw IndexOutOfBoundsException();
933 return xPeer->getByIndex(_nIndex);
940 Reference< css::util::XModeSelector > xPeer(
getPeer(), UNO_QUERY);
942 throw NoSupportException();
944 xPeer->setMode(
Mode);
950 Reference< css::util::XModeSelector > xPeer(
getPeer(), UNO_QUERY);
951 return xPeer.is() ? xPeer->getMode() : OUString();
957 Reference< css::util::XModeSelector > xPeer(
getPeer(), UNO_QUERY);
958 return xPeer.is() ? xPeer->getSupportedModes() : css::uno::Sequence<OUString>();
964 Reference< css::util::XModeSelector > xPeer(
getPeer(), UNO_QUERY);
965 return xPeer.is() && xPeer->supportsMode(
Mode);
974 bool bAlreadyHasFocus = xGrid->HasChildPathFocus() || xGrid->ControlHasFocus();
977 if (bAlreadyHasFocus)
1012 m_pPeer->selectionChanged();
1018 m_pPeer->columnChanged();
1023 EventObject aSource;
1031 EventObject
aEvent( *
this );
1061 DBG_ASSERT(pWin !=
nullptr,
"FmXGridPeer::Create : imp_CreateControl didn't return a control !");
1063 pWin->SetStateProvider(
LINK(
this,
FmXGridPeer, OnQueryGridSlotState));
1071 pWin->SetComponentInterface(
this);
1086 bool bKnownSender =
false;
1088 Reference< XIndexContainer > xCols( e.Source, UNO_QUERY );
1092 bKnownSender =
true;
1095 Reference< XRowSet > xCursor(e.Source, UNO_QUERY);
1100 bKnownSender =
true;
1107 const URL* pSupportedURLs = aSupportedURLs.getConstArray();
1108 for ( sal_Int32
i=0;
i < ( aSupportedURLs.getLength() ) && !bKnownSender; ++
i, ++pSupportedURLs )
1112 m_pDispatchers[
i]->removeStatusListener(
static_cast< css::frame::XStatusListener*
>(
this ), *pSupportedURLs );
1115 bKnownSender =
true;
1120 if ( !bKnownSender )
1137#define LAST_KNOWN_TYPE FormComponentType::PATTERNFIELD
1143 {
false,
false,
false,
false },
1144 {
false,
false,
false,
false },
1145 {
false,
false,
false,
false },
1146 {
false,
false,
false,
false },
1147 {
false,
false,
false,
true },
1148 {
false,
false,
false,
false },
1149 {
false,
false,
false,
false },
1150 {
false,
false,
false,
false },
1151 { true ,
false,
false,
false },
1152 {
false,
false,
false,
false },
1153 {
false,
false,
false,
false },
1154 {
false,
false,
false,
false },
1155 {
false,
false,
false,
false },
1156 {
false,
false,
false,
false },
1157 { true , true , true ,
false },
1158 { true , true ,
false,
false },
1159 { true , true ,
false,
false },
1160 { true , true ,
false,
false },
1161 { true ,
false,
false,
false }
1165 sal_Int16 nMapColumn = -1;
1166 switch (xType.getTypeClass())
1168 case TypeClass_STRING : nMapColumn = 0;
break;
1169 case TypeClass_FLOAT:
1170 case TypeClass_DOUBLE : nMapColumn = 1;
break;
1171 case TypeClass_SHORT:
1172 case TypeClass_LONG:
1173 case TypeClass_UNSIGNED_LONG:
1174 case TypeClass_UNSIGNED_SHORT : nMapColumn = 2;
break;
1175 case TypeClass_BOOLEAN : nMapColumn = 3;
break;
1180 Reference< XIndexContainer > xColumns =
getColumns();
1183 sal_Int32 nColumns = pGrid->GetViewColCount();
1185 std::vector< std::unique_ptr<DbGridColumn> >
const & aColumns = pGrid->GetColumns();
1187 Sequence<sal_Bool> aReturnSequence(nColumns);
1188 sal_Bool* pReturnArray = aReturnSequence.getArray();
1190 bool bRequestedAsAny = (xType.getTypeClass() == TypeClass_ANY);
1193 Reference< css::sdb::XColumn > xFieldContent;
1194 Reference< XPropertySet > xCurrentColumn;
1195 for (sal_Int32
i=0;
i<nColumns; ++
i)
1197 if (bRequestedAsAny)
1199 pReturnArray[
i] =
true;
1203 pReturnArray[
i] =
false;
1205 sal_uInt16 nModelPos = pGrid->GetModelColumnPos(pGrid->GetColumnIdFromViewPos(
static_cast<sal_uInt16
>(
i)));
1206 DBG_ASSERT(nModelPos != sal_uInt16(-1),
"FmXGridPeer::queryFieldDataType : no model pos !");
1208 pCol = aColumns[ nModelPos ].get();
1211 if (!xFieldContent.is())
1216 xColumns->getByIndex(nModelPos) >>= xCurrentColumn;
1220 sal_Int16 nClassId = sal_Int16();
1224 DBG_ASSERT(nClassId>0,
"FmXGridPeer::queryFieldDataType : somebody changed the definition of the FormComponentType enum !");
1226 if (nMapColumn != -1)
1227 pReturnArray[
i] = bCanConvert[nClassId-1][nMapColumn];
1230 return aReturnSequence;
1237 DBG_ASSERT(pGrid && pGrid->IsOpen(),
"FmXGridPeer::queryFieldData : have no valid grid window !");
1238 if (!pGrid || !pGrid->IsOpen())
1239 return Sequence< Any>();
1242 if (!pGrid->SeekRow(nRow))
1244 throw IllegalArgumentException();
1253 std::vector< std::unique_ptr<DbGridColumn> >
const & aColumns = pGrid->GetColumns();
1256 sal_Int32 nColumnCount = pGrid->GetViewColCount();
1258 Sequence< Any> aReturnSequence(nColumnCount);
1259 Any* pReturnArray = aReturnSequence.getArray();
1261 bool bRequestedAsAny = (xType.getTypeClass() == TypeClass_ANY);
1262 Reference< css::sdb::XColumn > xFieldContent;
1263 for (sal_Int32
i=0;
i < nColumnCount; ++
i)
1265 sal_uInt16 nModelPos = pGrid->GetModelColumnPos(pGrid->GetColumnIdFromViewPos(
static_cast<sal_uInt16
>(
i)));
1266 DBG_ASSERT(nModelPos != sal_uInt16(-1),
"FmXGridPeer::queryFieldData : invalid model pos !");
1271 xFieldContent = xPaintRow->HasField( pCol->
GetFieldPos() )
1272 ? xPaintRow->GetField( pCol->
GetFieldPos() ).getColumn()
1273 : Reference< XColumn > ();
1275 if ( !xFieldContent.is() )
1278 if (bRequestedAsAny)
1280 Reference< XPropertySet > xFieldSet(xFieldContent, UNO_QUERY);
1285 switch (xType.getTypeClass())
1288 case TypeClass_STRING :
1290 OUString sText = aColumns[ nModelPos ]->GetCellText( xPaintRow.
get(), pGrid->getNumberFormatter() );
1291 pReturnArray[
i] <<= sText;
1295 case TypeClass_FLOAT : pReturnArray[
i] <<= xFieldContent->getFloat();
break;
1296 case TypeClass_DOUBLE : pReturnArray[
i] <<= xFieldContent->getDouble();
break;
1297 case TypeClass_SHORT : pReturnArray[
i] <<= xFieldContent->getShort();
break;
1298 case TypeClass_LONG : pReturnArray[
i] <<=
static_cast<sal_Int32
>(xFieldContent->getLong());
break;
1299 case TypeClass_UNSIGNED_SHORT : pReturnArray[
i] <<=
static_cast<sal_uInt16
>(xFieldContent->getShort());
break;
1300 case TypeClass_UNSIGNED_LONG : pReturnArray[
i] <<=
static_cast<sal_uInt32
>(xFieldContent->getLong());
break;
1301 case TypeClass_BOOLEAN : pReturnArray[
i] <<= xFieldContent->getBoolean();
break;
1304 throw IllegalArgumentException();
1309 return aReturnSequence;
1335 pGrid->propertyChange(evt);
1339 css::uno::Reference<css::uno::XInterface> xCurrent;
1344 xCurrent.set(
m_xColumns->getByIndex(
i), css::uno::UNO_QUERY);
1345 if (evt.Source == xCurrent)
1353 sal_uInt16
nId = pGrid->GetColumnIdFromModelPos(
static_cast<sal_uInt16
>(
i));
1354 bool bInvalidateColumn =
false;
1358 OUString
aName = ::comphelper::getString(evt.NewValue);
1359 if (
aName != pGrid->GetColumnTitle(
nId))
1364 sal_Int32 nWidth = 0;
1365 if (evt.NewValue.getValueType().getTypeClass() == TypeClass_VOID)
1366 nWidth = pGrid->GetDefaultColumnWidth(pGrid->GetColumnTitle(
nId));
1370 sal_Int32 nTest = 0;
1371 if (evt.NewValue >>= nTest)
1373 nWidth = pGrid->LogicToPixel(
Point(nTest, 0),
MapMode(MapUnit::Map10thMM)).X();
1375 nWidth = pGrid->CalcZoom(nWidth);
1378 if (nWidth != (sal_Int32(pGrid->GetColumnWidth(
nId))))
1380 if (pGrid->IsEditing())
1382 pGrid->DeactivateCell();
1383 pGrid->ActivateCell();
1385 pGrid->SetColumnWidth(
nId, nWidth);
1390 DBG_ASSERT(evt.NewValue.getValueType().getTypeClass() == TypeClass_BOOLEAN,
1391 "FmXGridPeer::propertyChange : the property 'hidden' should be of type boolean !");
1392 if (::comphelper::getBOOL(evt.NewValue))
1393 pGrid->HideColumn(
nId);
1395 pGrid->ShowColumn(
nId);
1405 bInvalidateColumn =
true;
1411 bInvalidateColumn =
true;
1415 if (bInvalidateColumn)
1417 bool bWasEditing = pGrid->IsEditing();
1419 pGrid->DeactivateCell();
1423 aColRect.
SetBottom( pGrid->GetSizePixel().Height() );
1424 pGrid->Invalidate(aColRect);
1427 pGrid->ActivateCell();
1454 bool bCancel =
false;
1456 if ( !aIter.
next()->approveUpdate( aEvt ) )
1460 bCancel = !pGrid->commit();
1473 if (pGrid && pGrid->IsOpen() && !::comphelper::getBOOL(Reference< XPropertySet > (_rEvent.Source, UNO_QUERY_THROW)->getPropertyValue(
FM_PROP_ISNEW)))
1474 pGrid->positioned();
1481 if (pGrid && pGrid->IsOpen())
1483 if (
m_xCursor->rowUpdated() && !pGrid->IsCurrentAppending())
1484 pGrid->RowModified(pGrid->GetCurrentPos());
1507 updateGrid( Reference< XRowSet > (
nullptr) );
1514 updateGrid( Reference< XRowSet > (
nullptr) );
1521 updateGrid( Reference< XRowSet > (
nullptr) );
1528 const sal_Int32 cnt =
m_xColumns->getCount();
1529 for(sal_Int32
i=0;
i<cnt; ++
i)
1531 Reference< XLoadListener> xll(
m_xColumns->getByIndex(
i), UNO_QUERY);
1551 static const rtl::OUStringConstExpr aPropsListenedTo[] =
1559 Reference< XPropertySetInfo > xInfo = xCol->getPropertySetInfo();
1562 if ( xInfo->hasPropertyByName( aPropsListenedTo[
i] ) )
1564 Property aPropDesc = xInfo->getPropertyByName( aPropsListenedTo[
i] );
1565 if ( 0 != ( aPropDesc.Attributes & PropertyAttribute::BOUND ) )
1566 xCol->addPropertyChangeListener( aPropsListenedTo[
i],
this );
1576 static const rtl::OUStringConstExpr aPropsListenedTo[] =
1582 Reference< XPropertySetInfo > xInfo = xCol->getPropertySetInfo();
1583 for (
const auto &
i : aPropsListenedTo)
1584 if (xInfo->hasPropertyByName(
i))
1585 xCol->removePropertyChangeListener(
i,
this);
1597 Reference< XPropertySet > xCol;
1600 xCol.set(
m_xColumns->getByIndex(
i), css::uno::UNO_QUERY);
1603 Reference< XContainer > xContainer(
m_xColumns, UNO_QUERY);
1604 xContainer->removeContainerListener(
this);
1606 Reference< XSelectionSupplier > xSelSupplier(
m_xColumns, UNO_QUERY);
1607 xSelSupplier->removeSelectionChangeListener(
this);
1609 Reference< XReset > xColumnReset(
m_xColumns, UNO_QUERY);
1610 if (xColumnReset.is())
1611 xColumnReset->removeResetListener(
static_cast<XResetListener*
>(
this));
1615 Reference< XContainer > xContainer(
Columns, UNO_QUERY);
1616 xContainer->addContainerListener(
this);
1618 Reference< XSelectionSupplier > xSelSupplier(
Columns, UNO_QUERY);
1619 xSelSupplier->addSelectionChangeListener(
this);
1621 Reference< XPropertySet > xCol;
1622 for (sal_Int32
i = 0;
i <
Columns->getCount();
i++)
1624 xCol.set(
Columns->getByIndex(
i), css::uno::UNO_QUERY);
1628 Reference< XReset > xColumnReset(
Columns, UNO_QUERY);
1629 if (xColumnReset.is())
1630 xColumnReset->addResetListener(
static_cast<XResetListener*
>(
this));
1678 if (!pGrid || !
m_xColumns.is() || pGrid->IsInColumnMove() ||
m_xColumns->getCount() ==
static_cast<sal_Int32
>(pGrid->GetModelColCount()))
1681 Reference< XPropertySet > xNewColumn(evt.Element, css::uno::UNO_QUERY);
1684 OUString
aName = ::comphelper::getString(xNewColumn->getPropertyValue(
FM_PROP_LABEL));
1686 sal_Int32 nWidth = 0;
1687 if (aWidth >>= nWidth)
1688 nWidth = pGrid->LogicToPixel(
Point(nWidth, 0),
MapMode(MapUnit::Map10thMM)).X();
1690 pGrid->AppendColumn(
aName,
static_cast<sal_uInt16
>(nWidth),
static_cast<sal_Int16
>(::comphelper::getINT32(evt.Accessor)));
1693 DbGridColumn* pCol = pGrid->GetColumns()[ ::comphelper::getINT32(evt.Accessor) ].
get();
1697 if (::comphelper::getBOOL(aHidden))
1698 pGrid->HideColumn(pCol->
GetId());
1700 FormControlFactory(
m_xContext ).initializeTextFieldLineEnds( xNewColumn );
1711 if (!pGrid || !
m_xColumns.is() || pGrid->IsInColumnMove())
1714 Reference< XPropertySet > xNewColumn(evt.Element, css::uno::UNO_QUERY);
1715 Reference< XPropertySet > xOldColumn(
1716 evt.ReplacedElement, css::uno::UNO_QUERY);
1718 bool bWasEditing = pGrid->IsEditing();
1720 pGrid->DeactivateCell();
1722 pGrid->RemoveColumn(pGrid->GetColumnIdFromModelPos(
static_cast<sal_uInt16
>(::comphelper::getINT32(evt.Accessor))));
1727 OUString
aName = ::comphelper::getString(xNewColumn->getPropertyValue(
FM_PROP_LABEL));
1729 sal_Int32 nWidth = 0;
1730 if (aWidth >>= nWidth)
1731 nWidth = pGrid->LogicToPixel(
Point(nWidth, 0),
MapMode(MapUnit::Map10thMM)).X();
1732 sal_uInt16 nNewId = pGrid->AppendColumn(
aName,
static_cast<sal_uInt16
>(nWidth),
static_cast<sal_Int16
>(::comphelper::getINT32(evt.Accessor)));
1733 sal_uInt16 nNewPos = pGrid->GetModelColumnPos(nNewId);
1739 Reference< XColumnsSupplier > xSuppColumns;
1741 if ( pGridDataSource )
1742 xSuppColumns.
set(Reference< XInterface >( *pGridDataSource ), css::uno::UNO_QUERY);
1743 Reference< XNameAccess > xColumnsByName;
1744 if ( xSuppColumns.is() )
1745 xColumnsByName = xSuppColumns->getColumns();
1746 Reference< XIndexAccess > xColumnsByIndex( xColumnsByName, UNO_QUERY );
1748 if ( xColumnsByIndex.is() )
1755 pGrid->ActivateCell();
1766 if (!pGrid || !
m_xColumns.is() || pGrid->IsInColumnMove() ||
m_xColumns->getCount() ==
static_cast<sal_Int32
>(pGrid->GetModelColCount()))
1769 pGrid->RemoveColumn(pGrid->GetColumnIdFromModelPos(
static_cast<sal_uInt16
>(::comphelper::getINT32(evt.Accessor))));
1771 Reference< XPropertySet > xOldColumn(evt.Element, css::uno::UNO_QUERY);
1782 bool bVoid = !
Value.hasValue();
1789 pGrid->SetTextLineColor();
1790 pGrid->GetDataWindow().SetTextLineColor();
1794 pGrid->SetTextLineColor(aTextLineColor);
1795 pGrid->GetDataWindow().SetTextLineColor(aTextLineColor);
1799 std::vector< std::unique_ptr<DbGridColumn> >
const & rColumns = pGrid->GetColumns();
1800 for (
auto const & pLoop : rColumns)
1813 pGrid->Invalidate();
1817 vcl::Font aGridFont = pGrid->GetControlFont();
1820 pGrid->SetControlFont( aGridFont );
1824 vcl::Font aGridFont = pGrid->GetControlFont();
1827 pGrid->SetControlFont( aGridFont );
1832 OSL_VERIFY(
Value >>= sHelpURL );
1840 pGrid->setDisplaySynchron(::comphelper::getBOOL(
Value));
1849 pGrid->Invalidate();
1853 pGrid->EnablePermanentCursor(::comphelper::getBOOL(
Value));
1855 pGrid->Invalidate();
1863 css::awt::FontDescriptor aFont;
1864 if (
Value >>= aFont)
1867 if (aFont != ::comphelper::getDefaultFont())
1871 vcl::Font aOldVclFont = pGrid->GetControlFont();
1876 pGrid->SetControlFont( aNewVclFont );
1880 Reference< XPropertySet > xModelSet(
getColumns(), UNO_QUERY);
1884 if (!aHeight.hasValue())
1885 pGrid->SetDataRowHeight(0);
1895 pGrid->SetControlBackground();
1900 pGrid->SetBackground( aColor );
1901 pGrid->SetControlBackground( aColor );
1908 pGrid->SetControlForeground();
1913 pGrid->SetTextColor( aColor );
1914 pGrid->SetControlForeground( aColor );
1919 sal_Int32 nLogHeight(0);
1920 if (
Value >>= nLogHeight)
1922 sal_Int32 nHeight = pGrid->LogicToPixel(
Point(0, nLogHeight),
MapMode(MapUnit::Map10thMM)).Y();
1924 nHeight = pGrid->CalcZoom(nHeight);
1925 pGrid->SetDataRowHeight(nHeight);
1928 pGrid->SetDataRowHeight(0);
1932 bool bValue(
true );
1933 OSL_VERIFY(
Value >>= bValue );
1934 pGrid->EnableNavigationBar( bValue );
1938 bool bValue(
true );
1939 OSL_VERIFY(
Value >>= bValue );
1940 pGrid->EnableHandle( bValue );
1944 bool bValue(
true );
1945 OSL_VERIFY(
Value >>= bValue );
1950 pGrid->GetDataWindow().Enable( bValue );
1952 pGrid->Enable( bValue );
1961 Reference< XAccessibleContext > xContext;
1967 Reference< XAccessible > xAcc( pGrid->GetAccessible() );
1969 xContext = xAcc->getAccessibleContext();
1981 if ( !xContext.is() )
1994 vcl::Window* pDataWindow = &pGrid->GetDataWindow();
2011 sal_Int32 nPixelHeight = pGrid->GetDataRowHeight();
2013 nPixelHeight = pGrid->CalcReverseZoom(nPixelHeight);
2014 aProp <<= static_cast<sal_Int32>(pGrid->PixelToLogic(
Point(0, nPixelHeight),
MapMode(MapUnit::Map10thMM)).
Y());
2018 bool bHasNavBar = pGrid->HasNavigationBar();
2019 aProp <<= bHasNavBar;
2023 bool bHasHandle = pGrid->HasHandle();
2024 aProp <<= bHasHandle;
2048 while ( xInterceptor.is() )
2051 xInterceptor->setMasterDispatchProvider(
nullptr );
2054 Reference< XDispatchProvider > xSlave = xInterceptor->getSlaveDispatchProvider();
2056 xInterceptor->setSlaveDispatchProvider(
nullptr );
2059 xInterceptor.set(xSlave, css::uno::UNO_QUERY);
2069 Reference< XReset > xReset(
m_xCursor, UNO_QUERY);
2071 xReset->removeResetListener(
this);
2072 Reference< XLoadable > xLoadable(
m_xCursor, UNO_QUERY);
2074 xLoadable->removeLoadListener(
this);
2075 Reference< XPropertySet > xSet(
m_xCursor, UNO_QUERY);
2087 pGrid->setDataSource(Reference< XRowSet > ());
2088 pGrid->DisposeAccessible();
2115 Reference< XReset > xReset(
m_xCursor, UNO_QUERY);
2117 xReset->addResetListener(
this);
2120 Reference< XPropertySet > xSet(
m_xCursor, UNO_QUERY);
2139 Reference< XReset > xReset(
m_xCursor, UNO_QUERY);
2141 xReset->removeResetListener(
this);
2143 Reference< XPropertySet > xSet(
m_xCursor, UNO_QUERY);
2156 pGrid->setDataSource(_rxCursor);
2174 Reference< XLoadable > xLoadable(
m_xCursor, UNO_QUERY);
2179 xLoadable->removeLoadListener(
this);
2188 Reference< XLoadable > xLoadable(
m_xCursor, UNO_QUERY);
2190 if (xLoadable.is() && xLoadable->isLoaded())
2193 pGrid->setDataSource(Reference< XRowSet > ());
2198 xLoadable->addLoadListener(
this);
2218 return pGrid ? pGrid->GetViewColumnPos(pGrid->GetCurColumnId()) : -1;
2226 pGrid->GoToColumnId(pGrid->GetColumnIdFromViewPos(
nPos));
2238 Reference< css::view::XSelectionSupplier > xSelSupplier(evt.Source, UNO_QUERY);
2239 Any aSelection = xSelSupplier->getSelection();
2240 DBG_ASSERT(aSelection.getValueType().getTypeClass() == TypeClass_INTERFACE,
"FmXGridPeer::selectionChanged : invalid selection !");
2241 Reference< XPropertySet > xSelection;
2242 aSelection >>= xSelection;
2243 if (xSelection.is())
2245 Reference< XPropertySet > xCol;
2247 sal_Int32 nColCount =
m_xColumns->getCount();
2249 for (;
i < nColCount; ++
i)
2252 if ( xCol == xSelection )
2254 pGrid->markColumn(pGrid->GetColumnIdFromModelPos(
static_cast<sal_uInt16
>(i)));
2260 if ( i != pGrid->GetSelectedColumn() )
2262 if ( i < nColCount )
2264 pGrid->SelectColumnPos(pGrid->GetViewColumnPos(pGrid->GetColumnIdFromModelPos(
static_cast<sal_uInt16
>(i) )) + 1);
2266 if (pGrid->IsEditing())
2267 pGrid->DeactivateCell();
2270 pGrid->SetNoSelection();
2274 pGrid->markColumn(USHRT_MAX);
2294 return new ::comphelper::OEnumerationByIndex(
this);
2303 return pGrid->GetViewColCount();
2314 throw IndexOutOfBoundsException();
2318 sal_uInt16
nId = pGrid->GetColumnIdFromViewPos(
static_cast<sal_uInt16
>(_nIndex));
2320 sal_uInt16
nPos = pGrid->GetModelColumnPos(
nId);
2326 Reference< css::awt::XControl > xControl(pCol->
GetCell());
2327 aElement <<= xControl;
2337 throw NoSupportException();
2345 if (
Mode ==
"FilterMode" )
2346 pGrid->SetFilterMode(
true);
2349 pGrid->SetFilterMode(
false);
2363 static css::uno::Sequence<OUString>
const aModes
2383 sal_Int32 _nIndex = pGrid->GetModelColumnPos(pColumn->
GetId());
2384 Reference< css::awt::XControl > xControl(pColumn->
GetCell());
2385 ContainerEvent aEvt;
2386 aEvt.Source =
static_cast<XContainer*
>(
this);
2387 aEvt.Accessor <<= _nIndex;
2388 aEvt.Element <<= xControl;
2398 sal_Int32 _nIndex = pGrid->GetModelColumnPos(pColumn->
GetId());
2399 Reference< css::awt::XControl > xControl(pColumn->
GetCell());
2400 ContainerEvent aEvt;
2401 aEvt.Source =
static_cast<XContainer*
>(
this);
2402 aEvt.Accessor <<= _nIndex;
2403 aEvt.Element <<= xControl;
2413 pGrid->SetBrowserFlags(nOldFlags | EditBrowseBoxFlags::NO_HANDLE_COLUMN_CONTENT);
2417 pGrid->SetBrowserFlags(nOldFlags);
2421Reference< css::frame::XDispatch >
FmXGridPeer::queryDispatch(
const css::util::URL& aURL,
const OUString& aTargetFrameName, sal_Int32 nSearchFlags)
2423 Reference< css::frame::XDispatch > xResult;
2446 return Sequence< Reference< css::frame::XDispatch > >();
2452 if (!_xInterceptor.is())
2464 _xInterceptor->setSlaveDispatchProvider(
static_cast<css::frame::XDispatchProvider*
>(
this));
2480 if (!_xInterceptor.is())
2492 while (xChainWalk.is())
2495 Reference< css::frame::XDispatchProviderInterceptor > xSlave(xChainWalk->getSlaveDispatchProvider(), UNO_QUERY);
2497 if (xChainWalk == _xInterceptor)
2500 Reference< css::frame::XDispatchProviderInterceptor > xMaster(xChainWalk->getMasterDispatchProvider(), UNO_QUERY);
2503 xChainWalk->setSlaveDispatchProvider(Reference< css::frame::XDispatchProvider > ());
2504 xChainWalk->setMasterDispatchProvider(Reference< css::frame::XDispatchProvider > ());
2510 xMaster->setSlaveDispatchProvider(xSlave);
2513 xMaster->setSlaveDispatchProvider(
static_cast<css::frame::XDispatchProvider*
>(
this));
2519 xSlave->setMasterDispatchProvider(
static_cast<css::frame::XDispatchProvider*
>(
this));
2523 xChainWalk = xSlave;
2541 auto pUrl = std::find_if(aUrls.begin(), aUrls.end(),
2542 [&Event](
const css::util::URL& rUrl) { return rUrl.Main == Event.FeatureURL.Main; });
2543 if (pUrl != aUrls.end())
2545 auto i =
static_cast<sal_uInt32
>(std::distance(aUrls.begin(), pUrl));
2546 DBG_ASSERT(
m_pDispatchers[
i] == Event.Source,
"FmXGridPeer::statusChanged : the event source is a little bit suspect !");
2550 pGrid->GetNavigationBar().InvalidateState(aSlots[
i]);
2552 DBG_ASSERT(pUrl != aUrls.end(),
"FmXGridPeer::statusChanged : got a call for an unknown url !");
2564 Sequence< Any > aBookmarks;
2565 if ( !( _rSelection >>= aBookmarks ) )
2566 throw IllegalArgumentException();
2568 return GetAs< FmGridControl >()->selectBookmarks(aBookmarks);
2582 Sequence< Any > aSelectionBookmarks = pVclControl->getSelectionBookmarks();
2583 return Any(aSelectionBookmarks);
2607 pGrid->resetCurrentRow();
2614 if (pGrid && pGrid->IsOpen())
2615 pGrid->positioned();
2622 static const std::vector<DbGridControlNavigationBarState> aSupported {
2636 static Sequence< css::util::URL> aSupported = []()
2638 static const rtl::OUStringConstExpr sSupported[] = {
2647 css::util::URL* pSupported = tmp.getArray();
2649 for ( sal_Int32
i = 0;
i < tmp.getLength(); ++
i, ++pSupported)
2650 pSupported->Complete = sSupported[
i];
2653 Reference< css::util::XURLTransformer > xTransformer(
2654 util::URLTransformer::create(::comphelper::getProcessComponentContext()) );
2655 for (css::util::URL & rURL : asNonConstRange(tmp))
2656 xTransformer->parseStrict(rURL);
2672 sal_uInt16 nDispatchersGot = 0;
2674 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2675 Reference< css::frame::XDispatch > xNewDispatch;
2676 for (sal_Int32
i=0;
i<aSupportedURLs.getLength(); ++
i, ++pSupportedURLs)
2678 xNewDispatch =
queryDispatch(*pSupportedURLs, OUString(), 0);
2682 m_pDispatchers[
i]->removeStatusListener(
static_cast<css::frame::XStatusListener*
>(
this), *pSupportedURLs);
2685 m_pDispatchers[
i]->addStatusListener(
static_cast<css::frame::XStatusListener*
>(
this), *pSupportedURLs);
2691 if (!nDispatchersGot)
2712 m_pDispatchers.reset(
new Reference< css::frame::XDispatch > [aSupportedURLs.getLength()]);
2714 sal_uInt16 nDispatchersGot = 0;
2715 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2716 for (sal_Int32
i=0;
i<aSupportedURLs.getLength(); ++
i, ++pSupportedURLs)
2722 m_pDispatchers[
i]->addStatusListener(
static_cast<css::frame::XStatusListener*
>(
this), *pSupportedURLs);
2727 if (!nDispatchersGot)
2742 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2743 for (sal_Int32
i=0;
i<aSupportedURLs.getLength(); ++
i, ++pSupportedURLs)
2746 m_pDispatchers[
i]->removeStatusListener(
static_cast<css::frame::XStatusListener*
>(
this), *pSupportedURLs);
2760 const std::vector<DbGridControlNavigationBarState>& aSupported = getSupportedGridSlots();
2761 for (
size_t i=0;
i<aSupported.size(); ++
i)
2763 if (aSupported[
i] == nSlot)
2765 if (!m_pDispatchers[
i].is())
2768 return m_pStateCache[
i] ? 1 : 0;
2778 if (!m_pDispatchers)
2781 Sequence< css::util::URL>& aUrls = getSupportedURLs();
2782 const css::util::URL* pUrls = aUrls.getConstArray();
2784 const std::vector<DbGridControlNavigationBarState>& aSlots = getSupportedGridSlots();
2786 DBG_ASSERT(aSlots.size() ==
o3tl::make_unsigned(aUrls.getLength()),
"FmXGridPeer::OnExecuteGridSlot : inconsistent data returned by getSupportedURLs/getSupportedGridSlots!");
2788 for (
size_t i=0;
i<aSlots.size(); ++
i, ++pUrls)
2790 if (aSlots[
i] == nSlot)
2792 if (m_pDispatchers[
i].is())
2796 m_pDispatchers[
i]->dispatch(*pUrls, Sequence< PropertyValue>());
Reference< XComponentContext > m_xContext
sal_Int16 SetAlignmentFromModel(sal_Int16 nStandardAlign)
void setModel(const css::uno::Reference< css::beans::XPropertySet > &_xModel)
FmXGridCell * GetCell() const
sal_Int16 GetFieldPos() const
static void InitColumnByField(DbGridColumn *_pColumn, const css::uno::Reference< css::beans::XPropertySet > &_rxColumnModel, const css::uno::Reference< css::container::XNameAccess > &_rxFieldsByNames, const css::uno::Reference< css::container::XIndexAccess > &_rxFieldsByIndex)
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
FmXContainerMultiplexer(::cppu::OWeakObject &rSource, ::osl::Mutex &rMutex)
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &Event) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &Event) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual void SAL_CALL columnChanged(const css::lang::EventObject &_event) override
FmXGridControlMultiplexer(::cppu::OWeakObject &rSource, ::osl::Mutex &rMutex)
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual sal_Int32 SAL_CALL getCount() override
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &_rType) override
virtual void SAL_CALL removeUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
virtual OUString GetComponentServiceName() const override
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
FmXSelectionMultiplexer m_aSelectionListeners
virtual OUString SAL_CALL getMode() override
virtual void SAL_CALL draw(sal_Int32 x, sal_Int32 y) override
virtual sal_Bool SAL_CALL select(const css::uno::Any &aSelection) override
virtual void SAL_CALL addUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches(const css::uno::Sequence< css::frame::DispatchDescriptor > &aDescripts) override
virtual void SAL_CALL addSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
virtual void SAL_CALL removeGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
virtual void SAL_CALL registerDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
virtual void SAL_CALL removeSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
virtual void SAL_CALL dispose() override
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
virtual void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &_rToolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
virtual void SAL_CALL setFocus() override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(const css::util::URL &aURL, const OUString &aTargetFrameName, sal_Int32 nSearchFlags) override
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) override
virtual void SAL_CALL setMode(const OUString &Mode) override
virtual ~FmXGridControl() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual rtl::Reference< FmXGridPeer > imp_CreatePeer(vcl::Window *pParent)
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
virtual void SAL_CALL releaseDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
virtual void SAL_CALL setDesignMode(sal_Bool bOn) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual sal_Bool SAL_CALL hasElements() override
FmXUpdateMultiplexer m_aUpdateListeners
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedModes() override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
virtual css::uno::Any SAL_CALL getSelection() override
virtual void SAL_CALL setCurrentColumnPosition(sal_Int16 nPos) override
virtual sal_Bool SAL_CALL commit() override
virtual OUString SAL_CALL getImplementationName() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
FmXGridControl(const css::uno::Reference< css::uno::XComponentContext > &)
virtual sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
virtual css::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType(const css::uno::Type &xType) override
FmXModifyMultiplexer m_aModifyListeners
virtual sal_Bool SAL_CALL supportsMode(const OUString &Mode) override
virtual css::uno::Type SAL_CALL getElementType() override
virtual sal_Int16 SAL_CALL getCurrentColumnPosition() override
FmXContainerMultiplexer m_aContainerListeners
FmXGridControlMultiplexer m_aGridControlListeners
virtual void SAL_CALL addGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
virtual css::uno::Sequence< css::uno::Any > SAL_CALL queryFieldData(sal_Int32 nRow, const css::uno::Type &xType) override
virtual ~GridListenerDelegator()
virtual void columnChanged() override
virtual void selectionChanged() override
GridListenerDelegator(FmXGridPeer *_pPeer)
virtual void SAL_CALL reloaded(const css::lang::EventObject &aEvent) override
std::unique_ptr< GridListenerDelegator > m_pGridListener
::comphelper::OInterfaceContainerHelper3< css::container::XContainerListener > m_aContainerListeners
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
virtual void SAL_CALL reloading(const css::lang::EventObject &aEvent) override
virtual void SAL_CALL setMode(const OUString &Mode) override
void addColumnListeners(const css::uno::Reference< css::beans::XPropertySet > &xCol)
If a derived class wants to listen at some column properties, it doesn't have to override all methods...
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
css::uno::Reference< css::uno::XComponentContext > m_xContext
virtual css::uno::Type SAL_CALL getElementType() override
void removeColumnListeners(const css::uno::Reference< css::beans::XPropertySet > &xCol)
virtual sal_Bool SAL_CALL supportsMode(const OUString &Mode) override
virtual OUString SAL_CALL getMode() override
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) override
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
virtual void SAL_CALL addUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
virtual css::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType(const css::uno::Type &xType) override
virtual void SAL_CALL removeUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
virtual void SAL_CALL setCurrentColumnPosition(sal_Int16 nPos) override
void DisConnectFromDispatcher()
class SAL_DLLPRIVATE GridListenerDelegator
void ConnectToDispatcher()
virtual sal_Int32 SAL_CALL getCount() override
virtual void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
void updateGrid(const css::uno::Reference< css::sdbc::XRowSet > &_rDatabaseCursor)
css::uno::Reference< css::frame::XDispatchProviderInterceptor > m_xFirstDispatchInterceptor
css::uno::Reference< css::sdbc::XRowSet > m_xCursor
virtual sal_Bool SAL_CALL select(const css::uno::Any &aSelection) override
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &Event) override
sal_Int32 m_nCursorListening
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(const css::util::URL &aURL, const OUString &aTargetFrameName, sal_Int32 nSearchFlags) override
virtual VclPtr< FmGridControl > imp_CreateControl(vcl::Window *pParent, WinBits nStyle)
virtual css::uno::Any SAL_CALL getSelection() override
static const std::vector< DbGridControlNavigationBarState > & getSupportedGridSlots()
virtual void SAL_CALL dispose() override
std::unique_ptr< bool[]> m_pStateCache
virtual sal_Bool SAL_CALL isDesignMode() override
virtual void SAL_CALL unloaded(const css::lang::EventObject &rEvent) override
virtual void SAL_CALL rowSetChanged(const css::lang::EventObject &event) override
virtual css::uno::Reference< css::container::XIndexContainer > SAL_CALL getColumns() override
std::unique_ptr< css::uno::Reference< css::frame::XDispatch >[]> m_pDispatchers
::comphelper::OInterfaceContainerHelper3< css::util::XModifyListener > m_aModifyListeners
virtual sal_Bool SAL_CALL approveReset(const css::lang::EventObject &rEvent) override
virtual css::uno::Sequence< css::uno::Any > SAL_CALL queryFieldData(sal_Int32 nRow, const css::uno::Type &xType) override
::comphelper::OInterfaceContainerHelper3< css::form::XUpdateListener > m_aUpdateListeners
virtual css::uno::Reference< css::sdbc::XRowSet > SAL_CALL getRowSet() override
bool m_bInterceptingDispatch
void columnHidden(DbGridColumn const *pColumn)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedModes() override
virtual void SAL_CALL loaded(const css::lang::EventObject &rEvent) override
void Create(vcl::Window *pParent, WinBits nStyle)
virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches(const css::uno::Sequence< css::frame::DispatchDescriptor > &aDescripts) override
virtual void SAL_CALL rowChanged(const css::lang::EventObject &event) override
virtual sal_Bool SAL_CALL commit() override
static css::uno::Sequence< css::util::URL > & getSupportedURLs()
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &Event) override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
void startCursorListening()
virtual void SAL_CALL setColumns(const css::uno::Reference< css::container::XIndexContainer > &aColumns) override final
::comphelper::OInterfaceContainerHelper3< css::form::XGridControlListener > m_aGridControlListeners
virtual void SAL_CALL unloading(const css::lang::EventObject &aEvent) override
virtual css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
css::uno::Reference< css::container::XIndexContainer > m_xColumns
virtual void SAL_CALL addSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
virtual void SAL_CALL removeSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
FmXGridPeer(const css::uno::Reference< css::uno::XComponentContext > &)
virtual void SAL_CALL setRowSet(const css::uno::Reference< css::sdbc::XRowSet > &xDataSource) override final
void stopCursorListening()
::comphelper::OInterfaceContainerHelper3< css::view::XSelectionChangeListener > m_aSelectionListeners
virtual sal_Int16 SAL_CALL getCurrentColumnPosition() override
virtual ~FmXGridPeer() override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override
virtual sal_Bool SAL_CALL hasElements() override
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
virtual void SAL_CALL cursorMoved(const css::lang::EventObject &event) override
virtual void SAL_CALL draw(sal_Int32 x, sal_Int32 y) override
virtual void SAL_CALL removeGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent &Event) override
virtual void SAL_CALL resetted(const css::lang::EventObject &rEvent) override
virtual void SAL_CALL addGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
virtual void SAL_CALL releaseDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
void columnVisible(DbGridColumn const *pColumn)
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
virtual void SAL_CALL registerDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
virtual void SAL_CALL setDesignMode(sal_Bool bOn) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual void SAL_CALL modified(const css::lang::EventObject &Source) override
FmXModifyMultiplexer(::cppu::OWeakObject &rSource, ::osl::Mutex &rMutex)
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
FmXSelectionMultiplexer(::cppu::OWeakObject &rSource, ::osl::Mutex &rMutex)
virtual void SAL_CALL selectionChanged(const css::lang::EventObject &aEvent) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
FmXUpdateMultiplexer(::cppu::OWeakObject &rSource, ::osl::Mutex &rMutex)
virtual void SAL_CALL updated(const css::lang::EventObject &) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual sal_Bool SAL_CALL approveUpdate(const css::lang::EventObject &) override
OUString GetURLPath(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
INetProtocol GetProtocol() const
::cppu::OWeakObject & m_rParent
constexpr tools::Long Height() const
constexpr tools::Long Width() const
css::uno::Reference< css::awt::XControlModel > SAL_CALL getModel() override
MouseListenerMultiplexer maMouseListeners
void SAL_CALL dispose() override
MouseMotionListenerMultiplexer maMouseMotionListeners
KeyListenerMultiplexer maKeyListeners
void SAL_CALL draw(sal_Int32 nX, sal_Int32 nY) override
void setPeer(const css::uno::Reference< css::awt::XWindowPeer > &_xPeer)
::osl::Mutex & GetMutex()
virtual void updateFromModel()
UnoControlComponentInfos maComponentInfos
FocusListenerMultiplexer maFocusListeners
void SAL_CALL setPosSize(sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height, sal_Int16 Flags) override
sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
css::uno::Reference< css::awt::XControlModel > mxModel
css::uno::Reference< css::awt::XWindowPeer > SAL_CALL getPeer() override
css::uno::WeakReferenceHelper maAccessibleContext
::comphelper::OInterfaceContainerHelper3< css::util::XModeChangeListener > maModeChangeListeners
void SAL_CALL setFocus() override
WindowListenerMultiplexer maWindowListeners
PaintListenerMultiplexer maPaintListeners
void DisposeAccessibleContext(css::uno::Reference< css::lang::XComponent > const &xContext)
css::uno::Reference< css::awt::XGraphics > mxGraphics
virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext()
vcl::Window * GetWindow() const
css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
void SAL_CALL draw(sal_Int32 nX, sal_Int32 nY) override
void SAL_CALL dispose() override
void set(reference_type *pBody)
reference_type * get() const
static VclPtr< reference_type > Create(Arg &&... arg)
sal_Int32 addInterface(const css::uno::Reference< ListenerT > &rxIFace)
void disposeAndClear(const css::lang::EventObject &rEvt)
sal_Int32 getLength() const
sal_Int32 removeInterface(const css::uno::Reference< ListenerT > &rxIFace)
void notifyEach(void(SAL_CALL ListenerT::*NotificationMethod)(const EventT &), const EventT &Event)
bool hasMoreElements() const
css::uno::Reference< ListenerT > const & next()
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) SAL_OVERRIDE
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) SAL_OVERRIDE
css::uno::Type const & get()
void SetFontSize(const Size &)
void SetOrientation(Degree10 nLineOrientation)
FontFamily GetFamilyType()
void SetWidthType(FontWidth)
void SetStyleName(const OUString &rStyleName)
void SetWordLineMode(bool bWordLine)
void SetPitch(FontPitch ePitch)
const OUString & GetStyleName() const
FontStrikeout GetStrikeout() const
FontRelief GetRelief() const
FontEmphasisMark GetEmphasisMark() const
void SetItalic(FontItalic)
void SetWeight(FontWeight)
const OUString & GetFamilyName() const
void SetFamily(FontFamily)
void SetUnderline(FontLineStyle)
void SetCharSet(rtl_TextEncoding)
const Size & GetFontSize() const
void SetKerning(FontKerning nKerning)
void SetFamilyName(const OUString &rFamilyName)
FontLineStyle GetUnderline() const
rtl_TextEncoding GetCharSet() const
void SetRelief(FontRelief)
bool IsWordLineMode() const
Degree10 GetOrientation() const
void SetEmphasisMark(FontEmphasisMark)
void SetStrikeout(FontStrikeout)
const Color & GetControlForeground() const
vcl::Font GetControlFont() const
const Color & GetControlBackground() const
constexpr ::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
#define DBG_ASSERT(sCon, aError)
#define ENSURE_OR_THROW(c, m)
#define DBG_UNHANDLED_EXCEPTION(...)
static css::awt::FontDescriptor ImplCreateFontDescriptor(const vcl::Font &rFont)
IMPL_LINK(FmXGridPeer, OnQueryGridSlotState, DbGridControlNavigationBarState, nSlot, int)
Reference< XInterface > FmXGridControl_NewInstance_Impl(const Reference< XMultiServiceFactory > &_rxFactory)
static vcl::Font ImplCreateFont(const css::awt::FontDescriptor &rDescr)
constexpr OUStringLiteral FM_PROP_ROWCOUNT
#define FM_PROP_FONTRELIEF
constexpr OUStringLiteral FM_PROP_CURSORCOLOR
constexpr OUStringLiteral FM_PROP_DISPLAYSYNCHRON
constexpr OUStringLiteral FM_PROP_WIDTH
constexpr OUStringLiteral FM_PROP_CLASSID
#define FM_PROP_BACKGROUNDCOLOR
constexpr OUStringLiteral FM_PROP_ISNEW
constexpr OUStringLiteral FM_PROP_ENABLED
constexpr OUStringLiteral FM_PROP_LABEL
constexpr OUStringLiteral FM_PROP_HIDDEN
constexpr OUStringLiteral FM_PROP_NAME
#define FM_PROP_RECORDMARKER
constexpr OUStringLiteral FM_PROP_ALIGN
#define FM_PROP_TEXTCOLOR
constexpr OUStringLiteral FM_PROP_FONT
constexpr OUStringLiteral FM_PROP_BORDER
#define FM_PROP_HASNAVIGATION
constexpr OUStringLiteral FM_PROP_RESULTSET_TYPE
constexpr OUStringLiteral FM_PROP_ROWHEIGHT
constexpr OUStringLiteral FM_PROP_FORMATKEY
constexpr OUStringLiteral FM_PROP_ALWAYSSHOWCURSOR
constexpr OUStringLiteral FM_PROP_TEXTLINECOLOR
#define FM_PROP_FONTEMPHASISMARK
constexpr OUStringLiteral FM_PROP_VALUE
constexpr OUStringLiteral FM_PROP_ISMODIFIED
constexpr OUStringLiteral FM_SUN_CONTROL_GRIDCONTROL
constexpr OUStringLiteral FMURL_RECORD_MOVETONEW
constexpr OUStringLiteral FMURL_RECORD_MOVELAST
constexpr OUStringLiteral FMURL_RECORD_MOVENEXT
constexpr OUStringLiteral FMURL_RECORD_MOVEPREV
constexpr OUStringLiteral FMURL_RECORD_MOVEFIRST
constexpr OUStringLiteral FMURL_RECORD_UNDO
#define GRID_COLUMN_NOT_FOUND
DbGridControlNavigationBarState
#define LINK(Instance, Class, Member)
#define SAL_N_ELEMENTS(arr)
B2DTuple getColumn(const B2DHomMatrix &rMatrix, sal_uInt16 nCol)
sal_Int32 findValue(const css::uno::Sequence< T1 > &_rList, const T2 &_rValue)
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &... rSn)
Reference< XComponentContext > getComponentContext(Reference< XMultiServiceFactory > const &factory)
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
bool getPropertyValue(ValueType &rValue, css::uno::Reference< css::beans::XPropertySet > const &xPropSet, OUString const &propName)
VCL_DLLPUBLIC css::awt::FontSlant ConvertFontSlant(FontItalic eWeight)
VCL_DLLPUBLIC float ConvertFontWidth(FontWidth eWidth)
VCL_DLLPUBLIC float ConvertFontWeight(FontWeight eWeight)