*** orig/chart2/source/controller/dialogs/DataBrowser.cxx Wed Jul 25 16:30:12 2007 --- new/chart2/source/controller/dialogs/DataBrowser.cxx Fri Dec 7 16:09:16 2007 *************** *** 161,176 **** --- 161,180 ---- public: SeriesHeaderEdit( Window * pParent ); virtual ~SeriesHeaderEdit(); + virtual void MouseButtonDown( const MouseEvent& rMEvt ); void setStartColumn( sal_Int32 nStartColumn ); sal_Int32 getStartColumn() const; + bool m_bShowWarningBox; + private: sal_Int32 m_nStartColumn; }; SeriesHeaderEdit::SeriesHeaderEdit( Window * pParent ) : Edit( pParent ), + m_bShowWarningBox( false ), m_nStartColumn( 0 ) {} SeriesHeaderEdit::~SeriesHeaderEdit() *************** *** 185,190 **** --- 189,202 ---- { return m_nStartColumn; } + void SeriesHeaderEdit::MouseButtonDown( const MouseEvent& rMEvt ) + { + Edit::MouseButtonDown( rMEvt ); + + if( m_bShowWarningBox ) + WarningBox( this, WinBits( WB_OK ), + String( SchResId( STR_INVALID_NUMBER ))).Execute(); + } class SeriesHeader { *************** *** 524,529 **** --- 536,542 ---- m_bIsReadOnly( false ), m_bIsDirty( false ), m_bLiveUpdate( bLiveUpdate ), + m_bDataValid( true ), m_aNumberEditField( & EditBrowseBox::GetDataWindow(), WB_NOBORDER ), m_aTextEditField( & EditBrowseBox::GetDataWindow(), WB_NOBORDER ), m_rNumberEditController( new ::svt::FormattedFieldCellController( & m_aNumberEditField )), *************** *** 814,821 **** --- 827,889 ---- m_aCellModifiedLink = rLink; } + void DataBrowser::MouseButtonDown( const BrowserMouseEvent& rEvt ) + { + if( !m_bDataValid ) + ShowWarningBox(); + else + EditBrowseBox::MouseButtonDown( rEvt ); + } + + void DataBrowser::ShowWarningBox() + { + WarningBox( this, WinBits( WB_OK ), + String( SchResId( STR_INVALID_NUMBER ))).Execute(); + } + + bool DataBrowser::ShowQueryBox() + { + QueryBox* pQueryBox = new QueryBox( this, WB_YES_NO, String( SchResId( STR_INCORRECT_INPUT ))); + + if( pQueryBox->Execute() == RET_YES ) + return true; + else + return false; + } + + bool DataBrowser::IsDataValid() + { + bool bValid = true; + const sal_Int32 nRow = lcl_getRowInData( GetCurRow()); + const sal_Int32 nCol = lcl_getColumnInData( GetCurColumnId()); + + if( m_apDataBrowserModel->getCellType( nCol, nRow ) == DataBrowserModel::NUMBER ) + { + sal_uInt32 nDummy = 0; + double fDummy = 0.0; + String aText( m_aNumberEditField.GetText()); + + if( aText.Len() > 0 && + m_spNumberFormatterWrapper.get() && + m_spNumberFormatterWrapper->getSvNumberFormatter() && + ! m_spNumberFormatterWrapper->getSvNumberFormatter()->IsNumberFormat( + aText, nDummy, fDummy )) + { + bValid = false; + } + } + + return bValid; + } + + bool DataBrowser::IsEnableItem() + { + return m_bDataValid; + } + void DataBrowser::CellModified() { + m_bDataValid = IsDataValid(); SetDirty(); if( m_aCellModifiedLink.IsSet()) m_aCursorMovedHdlLink.Call( this ); *************** *** 880,885 **** --- 948,954 ---- if( IsModified() ) SaveModified(); + m_bDataValid = true; m_apDataBrowserModel->removeDataSeries( nColIdx ); RenewTable(); } *************** *** 912,917 **** --- 981,987 ---- if( IsModified() ) SaveModified(); + m_bDataValid = true; m_apDataBrowserModel->removeDataPointForAllSeries( nRowIdx ); RenewTable(); } *************** *** 1081,1086 **** --- 1151,1162 ---- ? GetRowCount() - 1 : 0; + if( !m_bDataValid ) + { + const_cast< DataBrowser* >( this )->ShowWarningBox(); + return sal_False; + } + return ( nRow != nBadRow || nCol != nBadCol ); } *************** *** 1167,1174 **** ! m_spNumberFormatterWrapper->getSvNumberFormatter()->IsNumberFormat( aText, nDummy, fDummy )) { ! WarningBox( this, WinBits( WB_OK ), ! String( SchResId( STR_INVALID_NUMBER ))).Execute(); bChangeValid = sal_False; } else --- 1243,1250 ---- ! m_spNumberFormatterWrapper->getSvNumberFormatter()->IsNumberFormat( aText, nDummy, fDummy )) { ! //WarningBox( this, WinBits( WB_OK ), ! //String( SchResId( STR_INVALID_NUMBER ))).Execute(); bChangeValid = sal_False; } else *************** *** 1199,1211 **** return bChangeValid; } ! void DataBrowser::EndEditing() { if( IsModified()) SaveModified(); // apply changes made to series headers ::std::for_each( m_aSeriesHeaders.begin(), m_aSeriesHeaders.end(), impl::applyChangesFunctor()); } sal_Int16 DataBrowser::GetFirstVisibleColumNumber() const --- 1275,1292 ---- return bChangeValid; } ! bool DataBrowser::EndEditing() { if( IsModified()) SaveModified(); // apply changes made to series headers ::std::for_each( m_aSeriesHeaders.begin(), m_aSeriesHeaders.end(), impl::applyChangesFunctor()); + + if( m_bDataValid ) + return true; + else + return ShowQueryBox(); } sal_Int16 DataBrowser::GetFirstVisibleColumNumber() const *************** *** 1276,1285 **** { if( pEdit ) { ! DeactivateCell(); ! MakeFieldVisible( GetCurRow(), static_cast< sal_uInt16 >( pEdit->getStartColumn()), true /* bComplete */ ); ! ActivateCell(); ! m_aCursorMovedHdlLink.Call( this ); } return 0; } --- 1357,1373 ---- { if( pEdit ) { ! pEdit->m_bShowWarningBox = !m_bDataValid; ! ! if( !m_bDataValid ) ! GoToCell( 0, 0 ); ! else ! { ! //DeactivateCell(); ! MakeFieldVisible( GetCurRow(), static_cast< sal_uInt16 >( pEdit->getStartColumn()), true /* bComplete */ ); ! ActivateCell(); ! m_aCursorMovedHdlLink.Call( this ); ! } } return 0; } *** orig/chart2/source/controller/dialogs/DataBrowser.hxx Tue Sep 18 22:53:14 2007 --- new/chart2/source/controller/dialogs/DataBrowser.hxx Fri Dec 7 16:05:29 2007 *************** *** 87,92 **** --- 87,93 ---- virtual void CellModified(); virtual void ColumnResized( USHORT nColId ); virtual void EndScroll(); + virtual void MouseButtonDown( const BrowserMouseEvent& rEvt ); void SetDirty(); *************** *** 149,154 **** --- 150,156 ---- void RemoveColumn(); using BrowseBox::RemoveColumn; + using BrowseBox::MouseButtonDown; void SwapRow(); void SwapColumn(); *************** *** 166,172 **** void SetCellModifiedHdl( const Link& rLink ); /// confirms all pending changes to be ready to be closed ! void EndEditing(); // calls the protected inline-function BrowseBox::GetFirstVisibleColNumber() sal_Int16 GetFirstVisibleColumNumber() const; --- 168,174 ---- void SetCellModifiedHdl( const Link& rLink ); /// confirms all pending changes to be ready to be closed ! bool EndEditing(); // calls the protected inline-function BrowseBox::GetFirstVisibleColNumber() sal_Int16 GetFirstVisibleColumNumber() const; *************** *** 177,182 **** --- 179,189 ---- sal_uInt32 GetNumberFormatKey( sal_Int32 nRow, sal_uInt16 nCol ) const; + bool IsEnableItem(); + bool IsDataValid(); + void ShowWarningBox(); + bool ShowQueryBox(); + private: ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > m_xChartDoc; *************** *** 192,197 **** --- 199,205 ---- bool m_bIsReadOnly; bool m_bIsDirty; bool m_bLiveUpdate; + bool m_bDataValid; FormattedField m_aNumberEditField; Edit m_aTextEditField; *** orig/chart2/source/controller/dialogs/Strings.src Tue Oct 23 00:43:46 2007 --- new/chart2/source/controller/dialogs/Strings.src Fri Dec 7 15:20:00 2007 *************** *** 499,503 **** --- 499,508 ---- Text [ en-US ] = "Select Range for data labels" ; }; + String STR_INCORRECT_INPUT + { + Text [ en-US ] = "Your last input is incorrect.\nIgnore this change and close the dialog?" ; + }; + //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- *** orig/chart2/source/controller/dialogs/dlg_DataEditor.cxx Wed May 23 01:32:56 2007 --- new/chart2/source/controller/dialogs/dlg_DataEditor.cxx Fri Dec 7 15:20:00 2007 *************** *** 204,217 **** if( m_bReadOnly ) return 0; ! m_aTbxData.EnableItem( TBI_DATA_INSERT_ROW, m_apBrwData->MayInsertRow() ); ! m_aTbxData.EnableItem( TBI_DATA_INSERT_COL, m_apBrwData->MayInsertColumn() ); ! m_aTbxData.EnableItem( TBI_DATA_DELETE_ROW, m_apBrwData->MayDeleteRow() ); ! m_aTbxData.EnableItem( TBI_DATA_DELETE_COL, m_apBrwData->MayDeleteColumn() ); ! ! m_aTbxData.EnableItem( TBI_DATA_SWAP_COL, m_apBrwData->MaySwapColumns() ); ! m_aTbxData.EnableItem( TBI_DATA_SWAP_ROW, m_apBrwData->MaySwapRows() ); // m_aTbxData.EnableItem( TBI_DATA_SORT_COL, m_apBrwData->MaySortColumn() ); // m_aTbxData.EnableItem( TBI_DATA_SORT_ROW, m_apBrwData->MaySortRow() ); // m_aTbxData.EnableItem( TBI_DATA_SORT_TABLE_COL, m_apBrwData->MaySortColumn() ); --- 204,226 ---- if( m_bReadOnly ) return 0; ! if( m_apBrwData->IsEnableItem() ) ! { ! m_aTbxData.EnableItem( TBI_DATA_INSERT_ROW, m_apBrwData->MayInsertRow() ); ! m_aTbxData.EnableItem( TBI_DATA_INSERT_COL, m_apBrwData->MayInsertColumn() ); ! m_aTbxData.EnableItem( TBI_DATA_DELETE_ROW, m_apBrwData->MayDeleteRow() ); ! m_aTbxData.EnableItem( TBI_DATA_DELETE_COL, m_apBrwData->MayDeleteColumn() ); + m_aTbxData.EnableItem( TBI_DATA_SWAP_COL, m_apBrwData->MaySwapColumns() ); + m_aTbxData.EnableItem( TBI_DATA_SWAP_ROW, m_apBrwData->MaySwapRows() ); + } + else + { + m_aTbxData.EnableItem( TBI_DATA_INSERT_ROW, FALSE ); + m_aTbxData.EnableItem( TBI_DATA_INSERT_COL, FALSE ); + m_aTbxData.EnableItem( TBI_DATA_SWAP_COL, FALSE ); + m_aTbxData.EnableItem( TBI_DATA_SWAP_ROW, FALSE ); + } // m_aTbxData.EnableItem( TBI_DATA_SORT_COL, m_apBrwData->MaySortColumn() ); // m_aTbxData.EnableItem( TBI_DATA_SORT_ROW, m_apBrwData->MaySortRow() ); // m_aTbxData.EnableItem( TBI_DATA_SORT_TABLE_COL, m_apBrwData->MaySortColumn() ); *************** *** 353,365 **** BOOL DataEditor::Close() { ! ApplyChangesToModel(); ! return ModalDialog::Close(); } ! void DataEditor::ApplyChangesToModel() { ! m_apBrwData->EndEditing(); } // sets the correct toolbar icons depending on the current mode (e.g. high contrast) --- 362,376 ---- BOOL DataEditor::Close() { ! if( ApplyChangesToModel() ) ! return ModalDialog::Close(); ! else ! return TRUE; } ! bool DataEditor::ApplyChangesToModel() { ! return m_apBrwData->EndEditing(); } // sets the correct toolbar icons depending on the current mode (e.g. high contrast) *** orig/chart2/source/controller/inc/dlg_DataEditor.hxx Wed May 23 01:58:22 2007 --- new/chart2/source/controller/inc/dlg_DataEditor.hxx Fri Dec 7 15:20:01 2007 *************** *** 86,92 **** virtual BOOL Close(); void SetReadOnly( bool bReadOnly ); ! void ApplyChangesToModel(); private: bool m_bReadOnly; --- 86,92 ---- virtual BOOL Close(); void SetReadOnly( bool bReadOnly ); ! bool ApplyChangesToModel(); private: bool m_bReadOnly; *** orig/chart2/source/inc/Strings.hrc Tue Oct 23 00:52:54 2007 --- new/chart2/source/inc/Strings.hrc Fri Dec 7 15:20:01 2007 *************** *** 316,321 **** --- 316,323 ---- #define STR_COLUMN_LABEL (RID_APP_START + 262) #define STR_ROW_LABEL (RID_APP_START + 263) + #define STR_INCORRECT_INPUT (RID_APP_START + 267) + //----------------------------------------------------------------------------- /* ////#define STR_DIAGRAM_X_AXIS (RID_APP_START + 34)