INTEGRATION: CWS dba31a (1.6.34); FILE MERGED
2008/07/04 20:11:47 fs 1.6.34.3: #i66628# impl_getCurrentControlModel_throw: also care for grid control/columns 2008/07/03 08:41:55 fs 1.6.34.2: #i66628# +RefreshCurrentControl 2008/07/02 12:13:14 fs 1.6.34.1: #i90914# after doing a reload, refresh everything which is refreshable
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
* OpenOffice.org - a multi-platform office productivity suite
|
* OpenOffice.org - a multi-platform office productivity suite
|
||||||
*
|
*
|
||||||
* $RCSfile: formoperations.cxx,v $
|
* $RCSfile: formoperations.cxx,v $
|
||||||
* $Revision: 1.7 $
|
* $Revision: 1.8 $
|
||||||
*
|
*
|
||||||
* This file is part of OpenOffice.org.
|
* This file is part of OpenOffice.org.
|
||||||
*
|
*
|
||||||
@@ -122,7 +122,9 @@ namespace frm
|
|||||||
using ::com::sun::star::beans::PropertyValue;
|
using ::com::sun::star::beans::PropertyValue;
|
||||||
using ::com::sun::star::ui::dialogs::XExecutableDialog;
|
using ::com::sun::star::ui::dialogs::XExecutableDialog;
|
||||||
using ::com::sun::star::beans::NamedValue;
|
using ::com::sun::star::beans::NamedValue;
|
||||||
|
|
||||||
using ::com::sun::star::util::XRefreshable;
|
using ::com::sun::star::util::XRefreshable;
|
||||||
|
using ::com::sun::star::awt::XControlModel;
|
||||||
/** === end UNO using === **/
|
/** === end UNO using === **/
|
||||||
namespace FormFeature = ::com::sun::star::form::runtime::FormFeature;
|
namespace FormFeature = ::com::sun::star::form::runtime::FormFeature;
|
||||||
namespace RowChangeAction = ::com::sun::star::sdb::RowChangeAction;
|
namespace RowChangeAction = ::com::sun::star::sdb::RowChangeAction;
|
||||||
@@ -311,6 +313,13 @@ namespace frm
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FormFeature::RefreshCurrentControl:
|
||||||
|
{
|
||||||
|
Reference< XRefreshable > xControlModelRefresh( impl_getCurrentControlModel_throw(), UNO_QUERY );
|
||||||
|
aState.Enabled = xControlModelRefresh.is();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case FormFeature::SaveRecordChanges:
|
case FormFeature::SaveRecordChanges:
|
||||||
case FormFeature::UndoRecordChanges:
|
case FormFeature::UndoRecordChanges:
|
||||||
aState.Enabled = impl_isModifiedRow_throw() || m_bActiveControlModified;
|
aState.Enabled = impl_isModifiedRow_throw() || m_bActiveControlModified;
|
||||||
@@ -495,7 +504,6 @@ namespace frm
|
|||||||
switch ( _nFeature )
|
switch ( _nFeature )
|
||||||
{
|
{
|
||||||
case FormFeature::MoveToFirst:
|
case FormFeature::MoveToFirst:
|
||||||
// move
|
|
||||||
m_xCursor->first();
|
m_xCursor->first();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -550,6 +558,15 @@ namespace frm
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FormFeature::RefreshCurrentControl:
|
||||||
|
{
|
||||||
|
Reference< XRefreshable > xControlModelRefresh( impl_getCurrentControlModel_throw(), UNO_QUERY );
|
||||||
|
OSL_ENSURE( xControlModelRefresh.is(), "FormOperations::execute: how did you reach this?" );
|
||||||
|
if ( xControlModelRefresh.is() )
|
||||||
|
xControlModelRefresh->refresh();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case FormFeature::DeleteRecord:
|
case FormFeature::DeleteRecord:
|
||||||
{
|
{
|
||||||
sal_uInt32 nCount = impl_getRowCount_throw();
|
sal_uInt32 nCount = impl_getRowCount_throw();
|
||||||
@@ -1281,6 +1298,31 @@ namespace frm
|
|||||||
return lcl_safeGetPropertyValue_throw( m_xCursorProperties, PROPERTY_INSERTONLY, true );
|
return lcl_safeGetPropertyValue_throw( m_xCursorProperties, PROPERTY_INSERTONLY, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
Reference< XControlModel > FormOperations::impl_getCurrentControlModel_throw() const
|
||||||
|
{
|
||||||
|
Reference< XControl > xControl( m_xController->getCurrentControl() );
|
||||||
|
|
||||||
|
// special handling for grid controls
|
||||||
|
Reference< XGrid > xGrid( xControl, UNO_QUERY );
|
||||||
|
Reference< XControlModel > xControlModel;
|
||||||
|
|
||||||
|
if ( xGrid.is() )
|
||||||
|
{
|
||||||
|
Reference< XIndexAccess > xColumns( xControl->getModel(), UNO_QUERY_THROW );
|
||||||
|
sal_Int16 nCurrentPos = xGrid->getCurrentColumnPosition();
|
||||||
|
nCurrentPos = impl_gridView2ModelPos_nothrow( xColumns, nCurrentPos );
|
||||||
|
|
||||||
|
if ( nCurrentPos != (sal_Int16)-1 )
|
||||||
|
xColumns->getByIndex( nCurrentPos ) >>= xControlModel;
|
||||||
|
}
|
||||||
|
else if ( xControl.is() )
|
||||||
|
{
|
||||||
|
xControlModel = xControl->getModel();
|
||||||
|
}
|
||||||
|
return xControlModel;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
Reference< XPropertySet > FormOperations::impl_getCurrentBoundField_nothrow( ) const
|
Reference< XPropertySet > FormOperations::impl_getCurrentBoundField_nothrow( ) const
|
||||||
{
|
{
|
||||||
@@ -1291,25 +1333,7 @@ namespace frm
|
|||||||
Reference< XPropertySet > xField;
|
Reference< XPropertySet > xField;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Reference< XControl > xControl( m_xController->getCurrentControl() );
|
Reference< XPropertySet > xControlModel( impl_getCurrentControlModel_throw(), UNO_QUERY );
|
||||||
|
|
||||||
// special handling for grid controls
|
|
||||||
Reference< XGrid > xGrid( xControl, UNO_QUERY );
|
|
||||||
Reference< XPropertySet > xControlModel;
|
|
||||||
|
|
||||||
if ( xGrid.is() )
|
|
||||||
{
|
|
||||||
Reference< XIndexAccess > xColumns( xControl->getModel(), UNO_QUERY_THROW );
|
|
||||||
sal_Int16 nCurrentPos = xGrid->getCurrentColumnPosition();
|
|
||||||
nCurrentPos = impl_gridView2ModelPos_nothrow( xColumns, nCurrentPos );
|
|
||||||
|
|
||||||
if ( nCurrentPos != (sal_Int16)-1 )
|
|
||||||
xColumns->getByIndex( nCurrentPos ) >>= xControlModel;
|
|
||||||
}
|
|
||||||
else if ( xControl.is() )
|
|
||||||
{
|
|
||||||
xControlModel = xControlModel.query( xControl->getModel() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( xControlModel.is() && ::comphelper::hasProperty( PROPERTY_BOUNDFIELD, xControlModel ) )
|
if ( xControlModel.is() && ::comphelper::hasProperty( PROPERTY_BOUNDFIELD, xControlModel ) )
|
||||||
xControlModel->getPropertyValue( PROPERTY_BOUNDFIELD ) >>= xField;
|
xControlModel->getPropertyValue( PROPERTY_BOUNDFIELD ) >>= xField;
|
||||||
|
Reference in New Issue
Block a user