22 #include <string_view>
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>
76 using ::com::sun::star::sdbcx::XColumnsSupplier;
77 using ::com::sun::star::frame::XDispatchProviderInterceptor;
78 using ::com::sun::star::frame::XDispatchProvider;
79 using ::com::sun::star::accessibility::XAccessible;
80 using ::com::sun::star::accessibility::XAccessibleContext;
81 using ::com::sun::star::sdb::XRowSetSupplier;
82 using ::com::sun::star::awt::XVclWindowPeer;
87 css::awt::FontDescriptor aFD;
94 aFD.Pitch =
static_cast<sal_Int16
>(rFont.
GetPitch());
98 aFD.Underline =
static_cast<sal_Int16
>(rFont.
GetUnderline());
99 aFD.Strikeout =
static_cast<sal_Int16
>(rFont.
GetStrikeout());
114 aFont.
SetFamily( static_cast<FontFamily>(rDescr.Family) );
115 aFont.
SetCharSet( static_cast<rtl_TextEncoding>(rDescr.CharSet) );
116 aFont.
SetPitch( static_cast<FontPitch>(rDescr.Pitch) );
119 aFont.
SetItalic( static_cast<FontItalic>(rDescr.Slant) );
120 aFont.
SetUnderline( static_cast<::FontLineStyle>(rDescr.Underline) );
121 aFont.
SetStrikeout( static_cast<::FontStrikeout>(rDescr.Strikeout) );
123 aFont.
SetKerning( static_cast<FontKerning>(rDescr.Kerning) );
130 ,OInterfaceContainerHelper2( _rMutex )
137 Any aReturn = ::cppu::queryInterface(_rType,
138 static_cast< css::util::XModifyListener*>(
this),
139 static_cast< XEventListener*>(
this)
142 if (!aReturn.hasValue())
156 EventObject aMulti( e);
158 notifyEach( &XModifyListener::modified, aMulti );
163 ,OInterfaceContainerHelper2( _rMutex )
170 Any aReturn = ::cppu::queryInterface(_rType,
171 static_cast< XUpdateListener*>(
this),
172 static_cast< XEventListener*>(
this)
175 if (!aReturn.hasValue())
189 EventObject aMulti( e );
197 bResult = static_cast< XUpdateListener* >( aIter.
next() )->
approveUpdate( aMulti );
206 EventObject aMulti( e );
208 notifyEach( &XUpdateListener::updated, aMulti );
213 ,OInterfaceContainerHelper2( _rMutex )
220 Any aReturn = ::cppu::queryInterface(_rType,
221 static_cast< XSelectionChangeListener*>(
this),
222 static_cast< XEventListener*>(
this)
225 if (!aReturn.hasValue())
239 EventObject aMulti(_rEvent);
241 notifyEach( &XSelectionChangeListener::selectionChanged, aMulti );
246 ,OInterfaceContainerHelper2( _rMutex )
253 Any aReturn = ::cppu::queryInterface(_rType,
254 static_cast< XContainerListener*>(
this),
255 static_cast< XEventListener*>(
this)
258 if (!aReturn.hasValue())
271 ContainerEvent aMulti( e );
273 notifyEach( &XContainerListener::elementInserted, aMulti );
279 ContainerEvent aMulti( e );
281 notifyEach( &XContainerListener::elementRemoved, aMulti );
287 ContainerEvent aMulti( e );
289 notifyEach( &XContainerListener::elementReplaced, aMulti );
294 ,OInterfaceContainerHelper2( _rMutex )
301 Any aReturn = ::cppu::queryInterface( _rType,
302 static_cast< XGridControlListener*>(
this)
305 if (!aReturn.hasValue())
319 EventObject aForwardedEvent( _event );
321 notifyEach( &XGridControlListener::columnChanged, aForwardedEvent );
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);
442 OSL_FAIL(
"Can not get style");
446 pReturn->Create(pParent, nStyle);
454 throw DisposedException( OUString(), *this );
473 if (rParentPeer.is())
475 VCLXWindow* pParent = comphelper::getUnoTunnelImplementation<VCLXWindow>(rParentPeer);
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 !");
498 pPeer = comphelper::getUnoTunnelImplementation<FmXGridPeer>(
getPeer());
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);
811 Reference< 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 !");
1071 pWin->SetComponentInterface(
this);
1088 bool bKnownSender =
false;
1090 Reference< XIndexContainer > xCols( e.Source, UNO_QUERY );
1094 bKnownSender =
true;
1097 Reference< XRowSet > xCursor(e.Source, UNO_QUERY);
1102 bKnownSender =
true;
1109 const URL* pSupportedURLs = aSupportedURLs.getConstArray();
1110 for ( sal_Int32
i=0;
i < ( aSupportedURLs.getLength() ) && !bKnownSender; ++
i, ++pSupportedURLs )
1114 m_pDispatchers[i]->removeStatusListener( static_cast< css::frame::XStatusListener* >(
this ), *pSupportedURLs );
1117 bKnownSender =
true;
1122 if ( !bKnownSender )
1139 #define LAST_KNOWN_TYPE FormComponentType::PATTERNFIELD
1145 {
false,
false,
false,
false },
1146 {
false,
false,
false,
false },
1147 {
false,
false,
false,
false },
1148 {
false,
false,
false,
false },
1149 {
false,
false,
false,
true },
1150 {
false,
false,
false,
false },
1151 {
false,
false,
false,
false },
1152 {
false,
false,
false,
false },
1153 { true ,
false,
false,
false },
1154 {
false,
false,
false,
false },
1155 {
false,
false,
false,
false },
1156 {
false,
false,
false,
false },
1157 {
false,
false,
false,
false },
1158 {
false,
false,
false,
false },
1159 { true , true , true ,
false },
1160 { true , true ,
false,
false },
1161 { true , true ,
false,
false },
1162 { true , true ,
false,
false },
1163 { true ,
false,
false,
false }
1167 sal_Int16 nMapColumn = -1;
1168 switch (xType.getTypeClass())
1170 case TypeClass_STRING : nMapColumn = 0;
break;
1171 case TypeClass_FLOAT:
1172 case TypeClass_DOUBLE : nMapColumn = 1;
break;
1173 case TypeClass_SHORT:
1174 case TypeClass_LONG:
1175 case TypeClass_UNSIGNED_LONG:
1176 case TypeClass_UNSIGNED_SHORT : nMapColumn = 2;
break;
1177 case TypeClass_BOOLEAN : nMapColumn = 3;
break;
1182 Reference< XIndexContainer > xColumns =
getColumns();
1187 std::vector< std::unique_ptr<DbGridColumn> >
const & aColumns = pGrid->
GetColumns();
1189 Sequence<sal_Bool> aReturnSequence(nColumns);
1190 sal_Bool* pReturnArray = aReturnSequence.getArray();
1192 bool bRequestedAsAny = (xType.getTypeClass() == TypeClass_ANY);
1195 Reference< css::sdb::XColumn > xFieldContent;
1197 for (sal_Int32
i=0;
i<nColumns; ++
i)
1199 if (bRequestedAsAny)
1201 pReturnArray[
i] =
true;
1205 pReturnArray[
i] =
false;
1208 DBG_ASSERT(nModelPos != sal_uInt16(-1),
"FmXGridPeer::queryFieldDataType : no model pos !");
1210 pCol = aColumns[ nModelPos ].get();
1213 if (!xFieldContent.is())
1218 xColumns->getByIndex(nModelPos) >>= xCurrentColumn;
1222 sal_Int16 nClassId = sal_Int16();
1226 DBG_ASSERT(nClassId>0,
"FmXGridPeer::queryFieldDataType : somebody changed the definition of the FormComponentType enum !");
1228 if (nMapColumn != -1)
1229 pReturnArray[
i] = bCanConvert[nClassId-1][nMapColumn];
1232 return aReturnSequence;
1239 DBG_ASSERT(pGrid && pGrid->
IsOpen(),
"FmXGridPeer::queryFieldData : have no valid grid window !");
1240 if (!pGrid || !pGrid->
IsOpen())
1241 return Sequence< Any>();
1246 throw IllegalArgumentException();
1255 std::vector< std::unique_ptr<DbGridColumn> >
const & aColumns = pGrid->
GetColumns();
1260 Sequence< Any> aReturnSequence(nColumnCount);
1261 Any* pReturnArray = aReturnSequence.getArray();
1263 bool bRequestedAsAny = (xType.getTypeClass() == TypeClass_ANY);
1264 Reference< css::sdb::XColumn > xFieldContent;
1265 for (sal_Int32
i=0;
i < nColumnCount; ++
i)
1268 DBG_ASSERT(nModelPos != sal_uInt16(-1),
"FmXGridPeer::queryFieldData : invalid model pos !");
1275 : Reference< XColumn > ();
1277 if ( !xFieldContent.is() )
1280 if (bRequestedAsAny)
1287 switch (xType.getTypeClass())
1290 case TypeClass_STRING :
1292 OUString sText = aColumns[ nModelPos ]->GetCellText( xPaintRow.
get(), pGrid->
getNumberFormatter() );
1293 pReturnArray[
i] <<= sText;
1297 case TypeClass_FLOAT : pReturnArray[
i] <<= xFieldContent->getFloat();
break;
1298 case TypeClass_DOUBLE : pReturnArray[
i] <<= xFieldContent->getDouble();
break;
1299 case TypeClass_SHORT : pReturnArray[
i] <<= xFieldContent->getShort();
break;
1300 case TypeClass_LONG : pReturnArray[
i] <<=
static_cast<sal_Int32
>(xFieldContent->getLong());
break;
1301 case TypeClass_UNSIGNED_SHORT : pReturnArray[
i] <<=
static_cast<sal_uInt16
>(xFieldContent->getShort());
break;
1302 case TypeClass_UNSIGNED_LONG : pReturnArray[
i] <<=
static_cast<sal_uInt32
>(xFieldContent->getLong());
break;
1303 case TypeClass_BOOLEAN : pReturnArray[
i] <<= xFieldContent->getBoolean();
break;
1306 throw IllegalArgumentException();
1311 return aReturnSequence;
1341 css::uno::Reference<css::uno::XInterface> xCurrent;
1344 for ( i = 0; i <
m_xColumns->getCount(); i++)
1346 xCurrent.set(
m_xColumns->getByIndex(i), css::uno::UNO_QUERY);
1347 if (evt.Source == xCurrent)
1356 bool bInvalidateColumn =
false;
1360 OUString
aName = ::comphelper::getString(evt.NewValue);
1366 sal_Int32 nWidth = 0;
1367 if (evt.NewValue.getValueType().getTypeClass() == TypeClass_VOID)
1372 sal_Int32 nTest = 0;
1373 if (evt.NewValue >>= nTest)
1375 nWidth = pGrid->LogicToPixel(
Point(nTest, 0),
MapMode(MapUnit::Map10thMM)).X();
1377 nWidth = pGrid->CalcZoom(nWidth);
1392 DBG_ASSERT(evt.NewValue.getValueType().getTypeClass() == TypeClass_BOOLEAN,
1393 "FmXGridPeer::propertyChange : the property 'hidden' should be of type boolean !");
1407 bInvalidateColumn =
true;
1413 bInvalidateColumn =
true;
1417 if (bInvalidateColumn)
1425 aColRect.
SetBottom( pGrid->GetSizePixel().Height() );
1426 pGrid->Invalidate(aColRect);
1454 EventObject aEvt(static_cast< ::cppu::OWeakObject* >(
this));
1456 bool bCancel =
false;
1458 if ( !static_cast< XUpdateListener* >( aIter.
next() )->approveUpdate( aEvt ) )
1462 bCancel = !pGrid->
commit();
1483 if (pGrid && pGrid->
IsOpen())
1509 updateGrid( Reference< XRowSet > (
nullptr) );
1516 updateGrid( Reference< XRowSet > (
nullptr) );
1523 updateGrid( Reference< XRowSet > (
nullptr) );
1530 const sal_Int32 cnt =
m_xColumns->getCount();
1531 for(sal_Int32
i=0;
i<cnt; ++
i)
1533 Reference< XLoadListener> xll(
m_xColumns->getByIndex(
i), UNO_QUERY);
1536 xll->reloaded(aEvent);
1553 static const std::u16string_view aPropsListenedTo[] =
1561 Reference< XPropertySetInfo > xInfo = xCol->getPropertySetInfo();
1564 if ( xInfo->hasPropertyByName( OUString(aPropsListenedTo[
i]) ) )
1566 Property aPropDesc = xInfo->getPropertyByName( OUString(aPropsListenedTo[i]) );
1567 if ( 0 != ( aPropDesc.Attributes & PropertyAttribute::BOUND ) )
1568 xCol->addPropertyChangeListener( OUString(aPropsListenedTo[i]),
this );
1578 static const std::u16string_view aPropsListenedTo[] =
1584 Reference< XPropertySetInfo > xInfo = xCol->getPropertySetInfo();
1585 for (
const auto &
i : aPropsListenedTo)
1586 if (xInfo->hasPropertyByName(OUString(
i)))
1587 xCol->removePropertyChangeListener(OUString(
i),
this);
1602 xCol.set(
m_xColumns->getByIndex(
i), css::uno::UNO_QUERY);
1605 Reference< XContainer > xContainer(
m_xColumns, UNO_QUERY);
1606 xContainer->removeContainerListener(
this);
1608 Reference< XSelectionSupplier > xSelSupplier(
m_xColumns, UNO_QUERY);
1609 xSelSupplier->removeSelectionChangeListener(
this);
1611 Reference< XReset > xColumnReset(
m_xColumns, UNO_QUERY);
1612 if (xColumnReset.is())
1613 xColumnReset->removeResetListener(static_cast<XResetListener*>(
this));
1617 Reference< XContainer > xContainer(Columns, UNO_QUERY);
1618 xContainer->addContainerListener(
this);
1620 Reference< XSelectionSupplier > xSelSupplier(Columns, UNO_QUERY);
1621 xSelSupplier->addSelectionChangeListener(
this);
1624 for (sal_Int32
i = 0;
i < Columns->getCount();
i++)
1626 xCol.set(Columns->getByIndex(
i), css::uno::UNO_QUERY);
1630 Reference< XReset > xColumnReset(Columns, UNO_QUERY);
1631 if (xColumnReset.is())
1632 xColumnReset->addResetListener(static_cast<XResetListener*>(
this));
1686 OUString
aName = ::comphelper::getString(xNewColumn->getPropertyValue(
FM_PROP_LABEL));
1688 sal_Int32 nWidth = 0;
1689 if (aWidth >>= nWidth)
1690 nWidth = pGrid->LogicToPixel(
Point(nWidth, 0),
MapMode(MapUnit::Map10thMM)).X();
1702 FormControlFactory(
m_xContext ).initializeTextFieldLineEnds( xNewColumn );
1718 evt.ReplacedElement, css::uno::UNO_QUERY);
1729 OUString
aName = ::comphelper::getString(xNewColumn->getPropertyValue(
FM_PROP_LABEL));
1731 sal_Int32 nWidth = 0;
1732 if (aWidth >>= nWidth)
1733 nWidth = pGrid->LogicToPixel(
Point(nWidth, 0),
MapMode(MapUnit::Map10thMM)).X();
1741 Reference< XColumnsSupplier > xSuppColumns;
1743 if ( pGridDataSource )
1744 xSuppColumns.set(Reference< XInterface >( *pGridDataSource ), css::uno::UNO_QUERY);
1746 if ( xSuppColumns.is() )
1747 xColumnsByName = xSuppColumns->getColumns();
1748 Reference< XIndexAccess > xColumnsByIndex( xColumnsByName, UNO_QUERY );
1750 if ( xColumnsByIndex.is() )
1784 bool bVoid = !Value.hasValue();
1791 pGrid->SetTextLineColor();
1796 pGrid->SetTextLineColor(aTextLineColor);
1801 std::vector< std::unique_ptr<DbGridColumn> >
const & rColumns = pGrid->
GetColumns();
1802 for (
auto const & pLoop : rColumns)
1815 pGrid->Invalidate();
1819 vcl::Font aGridFont = pGrid->GetControlFont();
1820 sal_Int16
nValue = ::comphelper::getINT16(Value);
1822 pGrid->SetControlFont( aGridFont );
1826 vcl::Font aGridFont = pGrid->GetControlFont();
1827 sal_Int16
nValue = ::comphelper::getINT16(Value);
1828 aGridFont.
SetRelief( static_cast<FontRelief>(nValue) );
1829 pGrid->SetControlFont( aGridFont );
1834 OSL_VERIFY( Value >>= sHelpURL );
1851 pGrid->Invalidate();
1857 pGrid->Invalidate();
1865 css::awt::FontDescriptor aFont;
1866 if (Value >>= aFont)
1873 vcl::Font aOldVclFont = pGrid->GetControlFont();
1878 pGrid->SetControlFont( aNewVclFont );
1886 if (!aHeight.hasValue())
1897 pGrid->SetControlBackground();
1902 pGrid->SetBackground( aColor );
1903 pGrid->SetControlBackground( aColor );
1910 pGrid->SetControlForeground();
1915 pGrid->SetTextColor( aColor );
1916 pGrid->SetControlForeground( aColor );
1921 sal_Int32 nLogHeight(0);
1922 if (Value >>= nLogHeight)
1924 sal_Int32 nHeight = pGrid->LogicToPixel(
Point(0, nLogHeight),
MapMode(MapUnit::Map10thMM)).Y();
1926 nHeight = pGrid->CalcZoom(nHeight);
1934 bool bValue(
true );
1935 OSL_VERIFY( Value >>= bValue );
1940 bool bValue(
true );
1941 OSL_VERIFY( Value >>= bValue );
1946 bool bValue(
true );
1947 OSL_VERIFY( Value >>= bValue );
1954 pGrid->Enable( bValue );
1963 Reference< XAccessibleContext > xContext;
1971 xContext = xAcc->getAccessibleContext();
1983 if ( !xContext.is() )
2000 vcl::Font aFont = pDataWindow->GetControlFont();
2005 aProp <<= pDataWindow->GetControlForeground();
2009 aProp <<= pDataWindow->GetControlBackground();
2016 aProp <<= static_cast<sal_Int32>(pGrid->PixelToLogic(
Point(0, nPixelHeight),
MapMode(MapUnit::Map10thMM)).Y());
2021 aProp <<= bHasNavBar;
2026 aProp <<= bHasHandle;
2030 aProp <<= pDataWindow->IsEnabled();
2051 while ( xInterceptor.is() )
2054 xInterceptor->setMasterDispatchProvider(
nullptr );
2057 Reference< XDispatchProvider > xSlave = xInterceptor->getSlaveDispatchProvider();
2059 xInterceptor->setSlaveDispatchProvider(
nullptr );
2062 xInterceptor.set(xSlave, css::uno::UNO_QUERY);
2090 Reference< XReset > xReset(
m_xCursor, UNO_QUERY);
2092 xReset->addResetListener(
this);
2114 Reference< XReset > xReset(
m_xCursor, UNO_QUERY);
2116 xReset->removeResetListener(
this);
2149 Reference< XLoadable > xLoadable(
m_xCursor, UNO_QUERY);
2154 xLoadable->removeLoadListener(
this);
2163 Reference< XLoadable > xLoadable(
m_xCursor, UNO_QUERY);
2165 if (xLoadable.is() && xLoadable->isLoaded())
2173 xLoadable->addLoadListener(
this);
2213 Reference< css::view::XSelectionSupplier > xSelSupplier(evt.Source, UNO_QUERY);
2214 Any aSelection = xSelSupplier->getSelection();
2215 DBG_ASSERT(aSelection.getValueType().getTypeClass() == TypeClass_INTERFACE,
"FmXGridPeer::selectionChanged : invalid selection !");
2217 aSelection >>= xSelection;
2218 if (xSelection.is())
2222 sal_Int32 nColCount =
m_xColumns->getCount();
2224 for (; i < nColCount; ++i)
2227 if ( xCol == xSelection )
2237 if ( i < nColCount )
2269 return new ::comphelper::OEnumerationByIndex(
this);
2289 throw IndexOutOfBoundsException();
2301 Reference< css::awt::XControl > xControl(pCol->
GetCell());
2302 aElement <<= xControl;
2312 throw NoSupportException();
2320 if ( Mode ==
"FilterMode" )
2338 static css::uno::Sequence<OUString>
const aModes
2359 Reference< css::awt::XControl > xControl(pColumn->
GetCell());
2360 ContainerEvent aEvt;
2361 aEvt.Source =
static_cast<XContainer*
>(
this);
2362 aEvt.Accessor <<= _nIndex;
2363 aEvt.Element <<= xControl;
2374 Reference< css::awt::XControl > xControl(pColumn->
GetCell());
2375 ContainerEvent aEvt;
2376 aEvt.Source =
static_cast<XContainer*
>(
this);
2377 aEvt.Accessor <<= _nIndex;
2378 aEvt.Element <<= xControl;
2388 pGrid->
SetBrowserFlags(nOldFlags | EditBrowseBoxFlags::NO_HANDLE_COLUMN_CONTENT);
2396 Reference< css::frame::XDispatch >
FmXGridPeer::queryDispatch(
const css::util::URL& aURL,
const OUString& aTargetFrameName, sal_Int32 nSearchFlags)
2398 Reference< css::frame::XDispatch > xResult;
2421 return Sequence< Reference< css::frame::XDispatch > >();
2427 if (!_xInterceptor.is())
2439 _xInterceptor->setSlaveDispatchProvider(static_cast<css::frame::XDispatchProvider*>(
this));
2455 if (!_xInterceptor.is())
2467 while (xChainWalk.is())
2470 Reference< css::frame::XDispatchProviderInterceptor > xSlave(xChainWalk->getSlaveDispatchProvider(), UNO_QUERY);
2472 if (xChainWalk == _xInterceptor)
2475 Reference< css::frame::XDispatchProviderInterceptor > xMaster(xChainWalk->getMasterDispatchProvider(), UNO_QUERY);
2478 xChainWalk->setSlaveDispatchProvider(Reference< css::frame::XDispatchProvider > ());
2479 xChainWalk->setMasterDispatchProvider(Reference< css::frame::XDispatchProvider > ());
2485 xMaster->setSlaveDispatchProvider(xSlave);
2488 xMaster->setSlaveDispatchProvider(static_cast<css::frame::XDispatchProvider*>(
this));
2494 xSlave->setMasterDispatchProvider(static_cast<css::frame::XDispatchProvider*>(
this));
2498 xChainWalk = xSlave;
2516 auto pUrl = std::find_if(aUrls.begin(), aUrls.end(),
2517 [&Event](
const css::util::URL& rUrl) {
return rUrl.Main == Event.FeatureURL.Main; });
2518 if (pUrl != aUrls.end())
2520 auto i =
static_cast<sal_uInt32
>(std::distance(aUrls.begin(), pUrl));
2521 DBG_ASSERT(
m_pDispatchers[i] == Event.Source,
"FmXGridPeer::statusChanged : the event source is a little bit suspect !");
2527 DBG_ASSERT(pUrl != aUrls.end(),
"FmXGridPeer::statusChanged : got a call for an unknown url !");
2539 Sequence< Any > aBookmarks;
2540 if ( !( _rSelection >>= aBookmarks ) )
2541 throw IllegalArgumentException();
2543 return GetAs< FmGridControl >()->selectBookmarks(aBookmarks);
2558 return makeAny(aSelectionBookmarks);
2589 if (pGrid && pGrid->
IsOpen())
2597 static const std::vector<DbGridControlNavigationBarState> aSupported {
2611 static Sequence< css::util::URL> aSupported = [&]()
2613 static const char* sSupported[] = {
2622 css::util::URL* pSupported = tmp.getArray();
2624 for ( sal_Int32 i = 0; i < tmp.getLength(); ++i, ++pSupported)
2625 pSupported->Complete = OUString::createFromAscii(sSupported[i]);
2628 Reference< css::util::XURLTransformer > xTransformer(
2630 for (css::util::URL & rURL : tmp)
2631 xTransformer->parseStrict(rURL);
2647 sal_uInt16 nDispatchersGot = 0;
2649 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2650 Reference< css::frame::XDispatch > xNewDispatch;
2651 for (sal_Int32 i=0; i<aSupportedURLs.getLength(); ++i, ++pSupportedURLs)
2653 xNewDispatch =
queryDispatch(*pSupportedURLs, OUString(), 0);
2657 m_pDispatchers[i]->removeStatusListener(static_cast<css::frame::XStatusListener*>(
this), *pSupportedURLs);
2660 m_pDispatchers[i]->addStatusListener(static_cast<css::frame::XStatusListener*>(
this), *pSupportedURLs);
2666 if (!nDispatchersGot)
2687 m_pDispatchers.reset(
new Reference< css::frame::XDispatch > [aSupportedURLs.getLength()]);
2689 sal_uInt16 nDispatchersGot = 0;
2690 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2691 for (sal_Int32 i=0; i<aSupportedURLs.getLength(); ++i, ++pSupportedURLs)
2697 m_pDispatchers[i]->addStatusListener(static_cast<css::frame::XStatusListener*>(
this), *pSupportedURLs);
2702 if (!nDispatchersGot)
2717 const css::util::URL* pSupportedURLs = aSupportedURLs.getConstArray();
2718 for (sal_Int32 i=0; i<aSupportedURLs.getLength(); ++i, ++pSupportedURLs)
2721 m_pDispatchers[i]->removeStatusListener(static_cast<css::frame::XStatusListener*>(
this), *pSupportedURLs);
2735 const std::vector<DbGridControlNavigationBarState>& aSupported = getSupportedGridSlots();
2736 for (
size_t i=0; i<aSupported.size(); ++i)
2738 if (aSupported[i] == nSlot)
2740 if (!m_pDispatchers[i].is())
2743 return m_pStateCache[i] ? 1 : 0;
2753 if (!m_pDispatchers)
2756 Sequence< css::util::URL>& aUrls = getSupportedURLs();
2757 const css::util::URL* pUrls = aUrls.getConstArray();
2759 const std::vector<DbGridControlNavigationBarState>& aSlots = getSupportedGridSlots();
2761 DBG_ASSERT(static_cast<sal_Int32>(aSlots.size()) == aUrls.getLength(),
"FmXGridPeer::OnExecuteGridSlot : inconsistent data returned by getSupportedURLs/getSupportedGridSlots!");
2763 for (
size_t i=0; i<aSlots.size(); ++i, ++pUrls)
2765 if (aSlots[i] == nSlot)
2767 if (m_pDispatchers[i].is())
2771 m_pDispatchers[i]->dispatch(*pUrls, Sequence< PropertyValue>());
void SetFamily(FontFamily)
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(const css::util::URL &aURL, const OUString &aTargetFrameName, sal_Int32 nSearchFlags) override
#define LINK(Instance, Class, Member)
UNO3_GETIMPLEMENTATION2_IMPL(FmXGridPeer, VCLXWindow)
virtual void SAL_CALL addSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
#define GRID_COLUMN_NOT_FOUND
void SetStrikeout(FontStrikeout)
virtual void SAL_CALL addGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &Event) override
sal_Int32 GetSelectedColumn() const
void setDataSource(const css::uno::Reference< css::sdbc::XRowSet > &rCursor, DbGridControlOptions nOpts=DbGridControlOptions::Insert|DbGridControlOptions::Update|DbGridControlOptions::Delete)
virtual rtl::Reference< FmXGridPeer > imp_CreatePeer(vcl::Window *pParent)
virtual void HideColumn(sal_uInt16 nId) override
hide a column
void SetFontSize(const Size &)
const std::vector< std::unique_ptr< DbGridColumn > > & GetColumns() const
FmXUpdateMultiplexer(::cppu::OWeakObject &rSource,::osl::Mutex &rMutex)
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
#define FM_PROP_FONTEMPHASISMARK
virtual void SAL_CALL setMode(const OUString &Mode) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
void setGridListener(FmGridListener *_pListener)
virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext() override
Reference< XInterface > FmXGridControl_NewInstance_Impl(const Reference< XMultiServiceFactory > &_rxFactory)
DbGridControlNavigationBarState
const OUString & GetFamilyName() const
virtual void SAL_CALL removeUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
void setPeer(const css::uno::Reference< css::awt::XWindowPeer > &_xPeer)
FmXModifyMultiplexer m_aModifyListeners
FmXGridControl(const css::uno::Reference< css::uno::XComponentContext > &)
virtual void SAL_CALL setFocus() override
void SAL_CALL dispose() override
virtual void SAL_CALL draw(sal_Int32 x, sal_Int32 y) override
virtual ~GridListenerDelegator()
void removeColumnListeners(const css::uno::Reference< css::beans::XPropertySet > &xCol)
void columnVisible(DbGridColumn const *pColumn)
virtual sal_uInt16 AppendColumn(const OUString &rName, sal_uInt16 nWidth, sal_uInt16 nPos=HEADERBAR_APPEND, sal_uInt16 nId=sal_uInt16(-1)) override
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &Event) override
virtual void SAL_CALL releaseDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
#define FM_PROP_DISPLAYSYNCHRON
void notifyEach(void(SAL_CALL ListenerT::*NotificationMethod)(const EventT &), const EventT &Event)
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &Event) override
const OUString & GetStyleName() const
void SAL_CALL setPosSize(sal_Int32 X, sal_Int32 Y, sal_Int32 Width, sal_Int32 Height, sal_Int16 Flags) override
void SAL_CALL setFocus() override
virtual sal_Bool SAL_CALL hasElements() override
virtual VclPtr< FmGridControl > imp_CreateControl(vcl::Window *pParent, WinBits nStyle)
virtual sal_Bool SAL_CALL approveUpdate(const css::lang::EventObject &) override
OUString GetURLPath(DecodeMechanism eMechanism=DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8) const
::comphelper::OInterfaceContainerHelper2 m_aContainerListeners
sal_Int32 findValue(const css::uno::Sequence< T1 > &_rList, const T2 &_rValue)
bool m_bInterceptingDispatch
bool hasMoreElements() const
void DisConnectFromDispatcher()
virtual void ShowColumn(sal_uInt16 nId) override
show a column
virtual void SAL_CALL removeSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) 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 setCurrentColumnPosition(sal_Int16 nPos) override
#define FM_PROP_ISMODIFIED
void EnablePermanentCursor(bool bEnable)
virtual void SAL_CALL setMode(const OUString &Mode) override
tools::Long CalcReverseZoom(tools::Long nVal)
css::uno::Reference< css::uno::XComponentContext > m_xContext
constexpr::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
virtual void SAL_CALL dispose() override
void SetStateProvider(const Link< DbGridControlNavigationBarState, int > &rProvider)
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual sal_Int32 SAL_CALL getCount() override
bool getBOOL(const Any &_rAny)
sal_Int32 addInterface(const css::uno::Reference< css::uno::XInterface > &rxIFace)
virtual sal_Int32 SAL_CALL getCount() override
sal_Int32 m_nCursorListening
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
virtual void SAL_CALL registerDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
const DbGridRowRef & GetSeekRow(GrantControlAccess) const
void SetWeight(FontWeight)
void disposeAndClear(const css::lang::EventObject &rEvt)
virtual ~FmXGridControl() override
virtual sal_Int16 SAL_CALL getCurrentColumnPosition() override
virtual void DeactivateCell(bool bUpdate=true)
::comphelper::OInterfaceContainerHelper2 maModeChangeListeners
FmXContainerMultiplexer(::cppu::OWeakObject &rSource,::osl::Mutex &rMutex)
sal_Int16 GetFieldPos() const
FmXGridControlMultiplexer m_aGridControlListeners
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual void SAL_CALL setRowSet(const css::uno::Reference< css::sdbc::XRowSet > &xDataSource) override final
void SetCharSet(rtl_TextEncoding)
virtual void SAL_CALL registerDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
virtual void SAL_CALL addGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
sal_Int32 removeInterface(const css::uno::Reference< css::uno::XInterface > &rxIFace)
virtual void SAL_CALL rowSetChanged(const css::lang::EventObject &event) override
#define FMURL_RECORD_MOVETONEW
sal_Int16 SetAlignmentFromModel(sal_Int16 nStandardAlign)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedModes() override
void SetFilterMode(bool bMode)
#define FM_PROP_ALWAYSSHOWCURSOR
virtual void SAL_CALL unloading(const css::lang::EventObject &aEvent) override
virtual void SAL_CALL loaded(const css::lang::EventObject &rEvent) override
::comphelper::OInterfaceContainerHelper2 m_aSelectionListeners
sal_uInt16 GetModelColumnPos(sal_uInt16 nId) const
sal_uInt16 GetModelColCount() const
bool IsInColumnMove() const
virtual void SAL_CALL updated(const css::lang::EventObject &) override
#define FM_PROP_BACKGROUNDCOLOR
virtual sal_Int16 SAL_CALL getCurrentColumnPosition() override
FontFamily GetFamilyType()
FmXGridPeer(const css::uno::Reference< css::uno::XComponentContext > &)
BrowserDataWin & GetDataWindow() const
B2DTuple getColumn(const B2DHomMatrix &rMatrix, sal_uInt16 nCol)
virtual void SAL_CALL removeUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
bool HasField(sal_uInt32 nPos) const
const DbGridRowRef & GetPaintRow() const
virtual void SAL_CALL removeSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
FmXUpdateMultiplexer m_aUpdateListeners
css::uno::Reference< css::accessibility::XAccessible > GetAccessible(bool bCreate=true)
std::unique_ptr< bool[]> m_pStateCache
::cppu::OWeakObject & m_rParent
virtual void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
CursorWrapper * getDataSource() const
bool IsCurrentAppending() const
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
virtual void SAL_CALL setDesignMode(sal_Bool bOn) override
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
void SelectColumnPos(sal_uInt16 nCol, bool _bSelect=true)
void EnableNavigationBar(bool bEnable)
sal_uInt16 GetViewColCount() const
virtual void SAL_CALL addUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
const css::uno::Reference< css::util::XNumberFormatter > & getNumberFormatter() const
std::unique_ptr< css::uno::Reference< css::frame::XDispatch >[]> m_pDispatchers
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
VCL_DLLPUBLIC float ConvertFontWidth(FontWidth eWidth)
virtual void SetNoSelection() override
void SetUnderline(FontLineStyle)
uno::Reference< sdbc::XRow > xRow
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
virtual void SAL_CALL resetted(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
css::uno::Reference< css::awt::XGraphics > mxGraphics
virtual sal_Bool SAL_CALL isDesignMode() override
static const std::vector< DbGridControlNavigationBarState > & getSupportedGridSlots()
FontEmphasisMark GetEmphasisMark() const
void SetPitch(FontPitch ePitch)
sal_uInt16 GetColumnIdFromViewPos(sal_uInt16 nPos) const
void InvalidateState(DbGridControlNavigationBarState nWhich)
sal_Int16 getINT16(const Any &_rAny)
#define FM_PROP_ROWHEIGHT
sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
#define SAL_N_ELEMENTS(arr)
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
bool ControlHasFocus() const
bool GoToColumnId(sal_uInt16 nColId)
void SetRelief(FontRelief)
void SetDataRowHeight(tools::Long nPixel)
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
FmXModifyMultiplexer(::cppu::OWeakObject &rSource,::osl::Mutex &rMutex)
virtual OUString GetComponentServiceName() override
FmXGridControlMultiplexer(::cppu::OWeakObject &rSource,::osl::Mutex &rMutex)
void startCursorListening()
class SAL_DLLPRIVATE GridListenerDelegator
virtual void SAL_CALL removeGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
WindowListenerMultiplexer maWindowListeners
#define DBG_UNHANDLED_EXCEPTION(...)
::comphelper::OInterfaceContainerHelper2 m_aModifyListeners
void SAL_CALL draw(sal_Int32 nX, sal_Int32 nY) override
UNDERLYING_TYPE get() const
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
FocusListenerMultiplexer maFocusListeners
virtual void SAL_CALL reloading(const css::lang::EventObject &aEvent) override
sal_Int32 GetCurrentPos() const
virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch(const css::util::URL &aURL, const OUString &aTargetFrameName, sal_Int32 nSearchFlags) override
void SetFamilyName(const OUString &rFamilyName)
OUString GetColumnTitle(sal_uInt16 nColumnId) const
css::uno::WeakReferenceHelper maAccessibleContext
void SAL_CALL draw(sal_Int32 nX, sal_Int32 nY) override
void SetColumnTitle(sal_uInt16 nColumnId, const OUString &rTitle)
#define DBG_ASSERT(sCon, aError)
virtual void SAL_CALL draw(sal_Int32 x, sal_Int32 y) override
css::uno::Reference< css::frame::XDispatchProviderInterceptor > m_xFirstDispatchInterceptor
virtual void SAL_CALL dispose() override
void SetColumnWidth(sal_uInt16 nColumnId, sal_uLong nWidth)
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) override
void InitColumnsByModels(const css::uno::Reference< css::container::XIndexContainer > &xColumns)
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
::comphelper::OInterfaceContainerHelper2 m_aUpdateListeners
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
FmXSelectionMultiplexer(::cppu::OWeakObject &rSource,::osl::Mutex &rMutex)
void markColumn(sal_uInt16 nId)
void propertyChange(const css::beans::PropertyChangeEvent &evt)
virtual void selectionChanged() override
void updateGrid(const css::uno::Reference< css::sdbc::XRowSet > &_rDatabaseCursor)
void SetOrientation(Degree10 nLineOrientation)
void ConnectToDispatcher()
virtual bool SeekRow(sal_Int32 nRow) override
css::uno::Reference< css::container::XIndexContainer > m_xColumns
void SetKerning(FontKerning nKerning)
css::uno::Sequence< css::uno::Any > getSelectionBookmarks()
void SetSlotExecutor(const Link< DbGridControlNavigationBarState, bool > &rExecutor)
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &Event) override
static css::awt::FontDescriptor ImplCreateFontDescriptor(const vcl::Font &rFont)
virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent &Event) override
void SetWordLineMode(bool bWordLine)
bool IsWordLineMode() const
virtual void SAL_CALL setCurrentColumnPosition(sal_Int16 nPos) override
tools::Rectangle GetFieldRect(sal_uInt16 nColumnId) const
tools::Long Width() const
virtual css::uno::Reference< css::container::XIndexContainer > SAL_CALL getColumns() override
#define FM_PROP_FORMATKEY
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
#define FM_PROP_RECORDMARKER
virtual void updateFromModel()
const Size & GetFontSize() const
css::uno::Reference< css::awt::XWindowPeer > SAL_CALL getPeer() override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
void columnHidden(DbGridColumn const *pColumn)
#define FM_PROP_HASNAVIGATION
#define FMURL_RECORD_MOVENEXT
FontStrikeout GetStrikeout() const
void RemoveColumn(sal_uInt16 nId)
css::uno::Type const & get()
void SetWidthType(FontWidth)
virtual void SAL_CALL createPeer(const css::uno::Reference< css::awt::XToolkit > &_rToolkit, const css::uno::Reference< css::awt::XWindowPeer > &Parent) override
#define FMURL_RECORD_MOVELAST
sal_uInt16 GetColumnIdFromModelPos(sal_uInt16 nPos) const
#define FM_PROP_FONTRELIEF
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
bool HasNavigationBar() const
virtual sal_Bool SAL_CALL supportsMode(const OUString &Mode) override
css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
void SetCursorColor(const Color &_rCol)
Reference< XComponentContext > getComponentContext(Reference< XMultiServiceFactory > const &factory)
#define FMURL_RECORD_MOVEFIRST
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &...rSn)
virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches(const css::uno::Sequence< css::frame::DispatchDescriptor > &aDescripts) override
void Create(vcl::Window *pParent, WinBits nStyle)
virtual css::uno::Any SAL_CALL getSelection() override
css::uno::Reference< css::uno::XComponentContext > m_xContext
FmXContainerMultiplexer m_aContainerListeners
virtual sal_Bool SAL_CALL select(const css::uno::Any &aSelection) override
static vcl::Font ImplCreateFont(const css::awt::FontDescriptor &rDescr)
virtual css::uno::Any SAL_CALL getProperty(const OUString &PropertyName) override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
virtual void SAL_CALL releaseDispatchProviderInterceptor(const css::uno::Reference< css::frame::XDispatchProviderInterceptor > &xInterceptor) override
MouseListenerMultiplexer maMouseListeners
virtual css::uno::Sequence< css::uno::Any > SAL_CALL queryFieldData(sal_Int32 nRow, const css::uno::Type &xType) override
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
std::unique_ptr< GridListenerDelegator > m_pGridListener
NavigationBar & GetNavigationBar()
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual void SAL_CALL addModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
UnoControlComponentInfos maComponentInfos
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
css::uno::Reference< css::awt::XControlModel > SAL_CALL getModel() override
#define FM_PROP_RESULTSET_TYPE
#define ENSURE_OR_THROW(c, m)
::comphelper::OInterfaceContainerHelper2 m_aGridControlListeners
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)
void setModel(const css::uno::Reference< css::beans::XPropertySet > &_xModel)
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &_rType) override
FontRelief GetRelief() const
virtual void SAL_CALL addSelectionChangeListener(const css::uno::Reference< css::view::XSelectionChangeListener > &xListener) override
virtual css::uno::Type SAL_CALL getElementType() override
void SetEmphasisMark(FontEmphasisMark)
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
virtual css::uno::Any SAL_CALL queryAggregation(const css::uno::Type &_rType) override
void SetStyleName(const OUString &rStyleName)
IMPL_LINK(FmXGridPeer, OnQueryGridSlotState, DbGridControlNavigationBarState, nSlot, int)
virtual void columnChanged() override
#define FM_PROP_CURSORCOLOR
virtual sal_Bool SAL_CALL supportsMode(const OUString &Mode) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedModes() override
virtual css::uno::Type SAL_CALL getElementType() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
#define FMURL_RECORD_UNDO
virtual css::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) override
VCL_DLLPUBLIC float ConvertFontWeight(FontWeight eWeight)
virtual void SAL_CALL selectionChanged(const css::lang::EventObject &aEvent) override
#define FM_PROP_TEXTLINECOLOR
virtual void Init() override
INetProtocol GetProtocol() const
void EnableHandle(bool bEnable)
VCL_DLLPUBLIC css::awt::FontSlant ConvertFontSlant(FontItalic eWeight)
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) SAL_OVERRIDE
virtual OUString SAL_CALL getMode() override
virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches(const css::uno::Sequence< css::frame::DispatchDescriptor > &aDescripts) override
sal_Int32 getINT32(const Any &_rAny)
virtual void SAL_CALL setColumns(const css::uno::Reference< css::container::XIndexContainer > &aColumns) override final
virtual void SAL_CALL addContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
static VclPtr< reference_type > Create(Arg &&...arg)
virtual css::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType(const css::uno::Type &xType) override
sal_uInt16 GetViewColumnPos(sal_uInt16 nId) const
void setDisplaySynchron(bool bSync)
virtual css::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType(const css::uno::Type &xType) override
tools::Long Height() const
virtual void SAL_CALL reloaded(const css::lang::EventObject &aEvent) override
void SAL_CALL dispose() override
css::uno::Reference< css::awt::XControlModel > mxModel
EditBrowseBoxFlags GetBrowserFlags() const
Reference< XComponentContext > getProcessComponentContext()
virtual sal_Bool SAL_CALL select(const css::uno::Any &aSelection) override
Degree10 GetOrientation() const
virtual sal_Bool SAL_CALL commit() override
#define FM_SUN_CONTROL_GRIDCONTROL
virtual ~FmXGridPeer() override
void stopCursorListening()
virtual void SAL_CALL columnChanged(const css::lang::EventObject &_event) override
virtual void SAL_CALL removeGridControlListener(const css::uno::Reference< css::form::XGridControlListener > &_listener) override
void SetItalic(FontItalic)
FontLineStyle GetUnderline() const
virtual void SAL_CALL cursorMoved(const css::lang::EventObject &event) override
FontDescriptor getDefaultFont()
bool hasProperty(const OUString &_rName, const Reference< XPropertySet > &_rxSet)
tools::Long GetDataRowHeight() const
PaintListenerMultiplexer maPaintListeners
virtual OUString SAL_CALL getImplementationName() override
void SetBrowserFlags(EditBrowseBoxFlags nFlags)
vcl::Window * get() const
sal_Int32 getLength() const
FmXSelectionMultiplexer m_aSelectionListeners
const ::svxform::DataColumn & GetField(sal_uInt32 nPos) const
virtual void SAL_CALL unloaded(const css::lang::EventObject &rEvent) override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > CreateAccessibleContext()
sal_uLong GetDefaultColumnWidth(const OUString &_rText) const
static css::uno::Sequence< css::util::URL > & getSupportedURLs()
void RowModified(sal_Int32 nRow)
css::uno::XInterface * next()
vcl::Window * GetWindow() const
virtual void SAL_CALL removeContainerListener(const css::uno::Reference< css::container::XContainerListener > &l) override
GridListenerDelegator(FmXGridPeer *_pPeer)
virtual css::uno::Any SAL_CALL getSelection() override
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override
virtual void SAL_CALL removeModifyListener(const css::uno::Reference< css::util::XModifyListener > &l) override
virtual sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel > &Model) override
KeyListenerMultiplexer maKeyListeners
#define FM_PROP_TEXTCOLOR
virtual sal_Bool SAL_CALL hasElements() override
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) SAL_OVERRIDE
virtual void ActivateCell(sal_Int32 nRow, sal_uInt16 nCol, bool bSetCellFocus=true)
virtual void SAL_CALL addUpdateListener(const css::uno::Reference< css::form::XUpdateListener > &l) override
virtual sal_Bool SAL_CALL commit() override
virtual css::uno::Reference< css::sdbc::XRowSet > SAL_CALL getRowSet() override
#define FMURL_RECORD_MOVEPREV
virtual sal_Bool SAL_CALL approveReset(const css::lang::EventObject &rEvent) override
sal_uLong GetColumnWidth(sal_uInt16 nColumnId) const
virtual void SAL_CALL setDesignMode(sal_Bool bOn) override
sal_uInt16 GetCurColumnId() const
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
css::uno::Reference< css::sdbc::XRowSet > m_xCursor
virtual void SAL_CALL modified(const css::lang::EventObject &Source) override
void DisposeAccessibleContext(css::uno::Reference< css::lang::XComponent > const &xContext)
void SAL_CALL setProperty(const OUString &PropertyName, const css::uno::Any &Value) override
rtl_TextEncoding GetCharSet() const
virtual void SAL_CALL rowChanged(const css::lang::EventObject &event) override
::osl::Mutex & GetMutex()
MouseMotionListenerMultiplexer maMouseMotionListeners
FmXGridCell * GetCell() const
css::uno::Any SAL_CALL makeAny(const SharedUNOComponent< INTERFACE, COMPONENT > &value)
virtual OUString SAL_CALL getMode() override