diff options
author | Ingrid Halama <iha@openoffice.org> | 2010-01-28 14:24:55 +0100 |
---|---|---|
committer | Ingrid Halama <iha@openoffice.org> | 2010-01-28 14:24:55 +0100 |
commit | 4851b01ed114150bbfa4d462b49596ed5f71b741 (patch) | |
tree | b563f99c2756563760944c3572ca1f4608592283 /chart2/source | |
parent | 9af6a0719109705c7aede368bc4938c1a6e6ff20 (diff) |
chartmultiline: #i82971# complex categories (part7 - add toolbox item for insertion of a complex category column within the chart data table )
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowser.cxx | 32 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowser.hxx | 4 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowserModel.cxx | 83 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowserModel.hxx | 10 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/dlg_DataEditor.cxx | 52 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/dlg_DataEditor.hrc | 9 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/dlg_DataEditor.src | 8 | ||||
-rw-r--r-- | chart2/source/controller/inc/HelpIds.hrc | 11 |
8 files changed, 93 insertions, 116 deletions
diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx index c392fd6294c6..5c97fa17b721 100644 --- a/chart2/source/controller/dialogs/DataBrowser.cxx +++ b/chart2/source/controller/dialogs/DataBrowser.cxx @@ -564,20 +564,6 @@ bool DataBrowser::MaySwapColumns() const && !m_apDataBrowserModel->isCategoriesColumn( nColIdx ); } -// bool DataBrowser::MaySortRow() const -// { -// // not implemented -// return false; -// // return ! IsReadOnly() && ( GetCurRow() >= 0 ); -// } - -// bool DataBrowser::MaySortColumn() const -// { -// // not implemented -// return false; -// // return ! IsReadOnly() && ( GetCurColumnId() > 1 ); -// } - void DataBrowser::clearHeaders() { ::std::for_each( m_aSeriesHeaders.begin(), m_aSeriesHeaders.end(), impl::applyChangesFunctor()); @@ -883,7 +869,23 @@ void DataBrowser::InsertColumn() if( IsModified() ) SaveModified(); - m_apDataBrowserModel->insertDataSeriesOrComplexCategoryLevel( nColIdx ); + m_apDataBrowserModel->insertDataSeries( nColIdx ); + RenewTable(); + } +} + +void DataBrowser::InsertTextColumn() +{ + sal_Int32 nColIdx = lcl_getColumnInDataOrHeader( GetCurColumnId(), m_aSeriesHeaders ); + + if( nColIdx >= 0 && + m_apDataBrowserModel.get()) + { + // save changes made to edit-field + if( IsModified() ) + SaveModified(); + + m_apDataBrowserModel->insertComplexCategoryLevel( nColIdx ); RenewTable(); } } diff --git a/chart2/source/controller/dialogs/DataBrowser.hxx b/chart2/source/controller/dialogs/DataBrowser.hxx index a4147af84fcb..8157a75f2c0e 100644 --- a/chart2/source/controller/dialogs/DataBrowser.hxx +++ b/chart2/source/controller/dialogs/DataBrowser.hxx @@ -124,12 +124,10 @@ public: bool MaySwapRows() const; bool MaySwapColumns() const; -// bool MaySortRow() const; -// bool MaySortColumn() const; - // mutators mutating data void InsertRow(); void InsertColumn(); + void InsertTextColumn(); void RemoveRow(); void RemoveColumn(); diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx b/chart2/source/controller/dialogs/DataBrowserModel.cxx index 49c269c7e7e5..841aa007ed90 100644 --- a/chart2/source/controller/dialogs/DataBrowserModel.cxx +++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx @@ -320,44 +320,23 @@ private: }; } -void DataBrowserModel::insertDataSeriesOrComplexCategoryLevel( sal_Int32 nAfterColumnIndex ) +void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex ) { OSL_ASSERT( m_apDialogModel.get()); Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY ); if( xDataProvider.is()) { + if( isCategoriesColumn(nAfterColumnIndex) ) + nAfterColumnIndex = getCategoryColumnCount()-1; + sal_Int32 nStartCol = 0; Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDocument )); + Reference< chart2::XChartType > xChartType; Reference< chart2::XDataSeries > xSeries; if( static_cast< tDataColumnVector::size_type >( nAfterColumnIndex ) <= m_aColumns.size()) xSeries.set( m_aColumns[nAfterColumnIndex].m_xDataSeries ); - bool bCreateASeries = true; - if( !xSeries.is() ) - { - //if the cursor is in a categories column -> create a categories column be default - bCreateASeries = false; - //only in case we do not have an series yet, we create a series - if( m_aColumns.empty() ) - bCreateASeries = true; - else if( !m_aColumns.back().m_xDataSeries.is() ) - bCreateASeries = true; - } - - if(!bCreateASeries) - { - //create a new complex category level column - - m_apDialogModel->startControllerLockTimer(); - ControllerLockGuard aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) ); - xDataProvider->insertComplexCategoryLevel( nAfterColumnIndex+1 ); - updateFromModel(); - return; - } - - Reference< chart2::XChartType > xChartType; - sal_Int32 nSeriesNumberFormat = 0; if( xSeries.is()) { @@ -382,7 +361,7 @@ void DataBrowserModel::insertDataSeriesOrComplexCategoryLevel( sal_Int32 nAfterC { sal_Int32 nOffset = 0; if( xDiagram.is() && lcl_ShowCategories( xDiagram )) - ++nOffset; + nOffset=getCategoryColumnCount(); // get shared sequences of current series Reference< chart2::XDataSeriesContainer > xSeriesCnt( xChartType, uno::UNO_QUERY ); lcl_tSharedSeqVec aSharedSequences; @@ -452,6 +431,30 @@ void DataBrowserModel::insertDataSeriesOrComplexCategoryLevel( sal_Int32 nAfterC } } +void DataBrowserModel::insertComplexCategoryLevel( sal_Int32 nAfterColumnIndex ) +{ + //create a new text column for complex categories + + OSL_ASSERT( m_apDialogModel.get()); + Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY ); + if( xDataProvider.is() ) + { + if( !isCategoriesColumn(nAfterColumnIndex) ) + nAfterColumnIndex = getCategoryColumnCount()-1; + + if(nAfterColumnIndex<0) + { + OSL_ENSURE( false, "wrong index for category level insertion" ); + return; + } + + m_apDialogModel->startControllerLockTimer(); + ControllerLockGuard aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) ); + xDataProvider->insertComplexCategoryLevel( nAfterColumnIndex+1 ); + updateFromModel(); + } +} + void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColumnIndex ) { OSL_ASSERT( m_apDialogModel.get()); @@ -742,11 +745,18 @@ bool DataBrowserModel::isCategoriesColumn( sal_Int32 nColumnIndex ) const return bIsCategories; } -Reference< chart2::data::XLabeledDataSequence > - DataBrowserModel::getCategories() const throw() +sal_Int32 DataBrowserModel::getCategoryColumnCount() { - OSL_ASSERT( m_apDialogModel.get()); - return m_apDialogModel->getCategories(); + sal_Int32 nLastTextColumnIndex = -1; + tDataColumnVector::const_iterator aIt = m_aColumns.begin(); + for( ; aIt != m_aColumns.end(); ++aIt ) + { + if( !aIt->m_xDataSeries.is() ) + nLastTextColumnIndex++; + else + break; + } + return nLastTextColumnIndex+1; } const DataBrowserModel::tDataHeaderVector& DataBrowserModel::getDataHeaders() const @@ -789,13 +799,10 @@ void DataBrowserModel::updateFromModel() tDataColumn aCategories; aCategories.m_xLabeledDataSequence.set( xCategories ); - if( nL == 0 ) - { - if( lcl_ShowCategoriesAsDataLabel( xDiagram )) - aCategories.m_aUIRoleName = DialogModel::GetRoleDataLabel(); - else - aCategories.m_aUIRoleName = lcl_getUIRoleName( xCategories ); - } + if( lcl_ShowCategoriesAsDataLabel( xDiagram )) + aCategories.m_aUIRoleName = DialogModel::GetRoleDataLabel(); + else + aCategories.m_aUIRoleName = lcl_getUIRoleName( xCategories ); aCategories.m_eCellType = TEXT; m_aColumns.push_back( aCategories ); ++nHeaderStart; diff --git a/chart2/source/controller/dialogs/DataBrowserModel.hxx b/chart2/source/controller/dialogs/DataBrowserModel.hxx index 2ae2a63ae6cf..eed123482178 100644 --- a/chart2/source/controller/dialogs/DataBrowserModel.hxx +++ b/chart2/source/controller/dialogs/DataBrowserModel.hxx @@ -61,7 +61,11 @@ public: /** Inserts a new data series after the data series to which the data column with index nAfterColumnIndex belongs. */ - void insertDataSeriesOrComplexCategoryLevel( sal_Int32 nAfterColumnIndex ); + void insertDataSeries( sal_Int32 nAfterColumnIndex ); + + /** Inserts a new text column for complex categories. + */ + void insertComplexCategoryLevel( sal_Int32 nAfterColumnIndex ); /** Removes a data series to which the data column with index nAtColumnIndex belongs. @@ -157,9 +161,7 @@ private: sal_Int32 & rInOutSequenceIndex, sal_Int32 & rInOutHeaderEnd ); - ::com::sun::star::uno::Reference< - ::com::sun::star::chart2::data::XLabeledDataSequence > - getCategories() const throw(); + sal_Int32 getCategoryColumnCount(); ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > m_xChartDocument; diff --git a/chart2/source/controller/dialogs/dlg_DataEditor.cxx b/chart2/source/controller/dialogs/dlg_DataEditor.cxx index f3b601453bee..e1870c139d5a 100644 --- a/chart2/source/controller/dialogs/dlg_DataEditor.cxx +++ b/chart2/source/controller/dialogs/dlg_DataEditor.cxx @@ -147,34 +147,22 @@ IMPL_LINK( DataEditor, ToolboxHdl, void *, EMPTYARG ) break; case TBI_DATA_INSERT_COL: m_apBrwData->InsertColumn(); -// ImplAdjustHeaderControls( true /* bRefreshFromModel */ ); + break; + case TBI_DATA_INSERT_TEXT_COL: + m_apBrwData->InsertTextColumn(); break; case TBI_DATA_DELETE_ROW: m_apBrwData->RemoveRow(); break; case TBI_DATA_DELETE_COL: m_apBrwData->RemoveColumn(); -// ImplAdjustHeaderControls( true /* bRefreshFromModel */ ); break; case TBI_DATA_SWAP_COL : m_apBrwData->SwapColumn (); -// ImplAdjustHeaderControls( true /* bRefreshFromModel */ ); break; case TBI_DATA_SWAP_ROW : m_apBrwData->SwapRow (); break; -// case TBI_DATA_SORT_COL : -// m_apBrwData->QuickSortCol(); -// break; -// case TBI_DATA_SORT_ROW : -// m_apBrwData->QuickSortRow(); -// break; -// case TBI_DATA_SORT_TABLE_COL : -// m_apBrwData->QuickSortTableCols (); -// break; -// case TBI_DATA_SORT_TABLE_ROW : -// m_apBrwData->QuickSortTableRows (); -// break; } return 0; @@ -186,27 +174,16 @@ IMPL_LINK( DataEditor, BrowserCursorMovedHdl, void *, EMPTYARG ) 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() ); + bool bIsDataValid = m_apBrwData->IsEnableItem(); - 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() ); -// m_aTbxData.EnableItem( TBI_DATA_SORT_TABLE_ROW, m_apBrwData->MaySortRow() ); + m_aTbxData.EnableItem( TBI_DATA_INSERT_ROW, bIsDataValid && m_apBrwData->MayInsertRow() ); + m_aTbxData.EnableItem( TBI_DATA_INSERT_COL, bIsDataValid && m_apBrwData->MayInsertColumn() ); + m_aTbxData.EnableItem( TBI_DATA_INSERT_TEXT_COL, bIsDataValid && 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, bIsDataValid && m_apBrwData->MaySwapColumns() ); + m_aTbxData.EnableItem( TBI_DATA_SWAP_ROW, bIsDataValid && m_apBrwData->MaySwapRows() ); return 0; } @@ -219,14 +196,11 @@ void DataEditor::SetReadOnly( bool bReadOnly ) { m_aTbxData.EnableItem( TBI_DATA_INSERT_ROW, FALSE ); m_aTbxData.EnableItem( TBI_DATA_INSERT_COL, FALSE ); + m_aTbxData.EnableItem( TBI_DATA_INSERT_TEXT_COL, FALSE ); m_aTbxData.EnableItem( TBI_DATA_DELETE_ROW, FALSE ); m_aTbxData.EnableItem( TBI_DATA_DELETE_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, FALSE ); -// m_aTbxData.EnableItem( TBI_DATA_SORT_ROW, FALSE ); -// m_aTbxData.EnableItem( TBI_DATA_SORT_TABLE_ROW, FALSE ); -// m_aTbxData.EnableItem( TBI_DATA_SORT_TABLE_COL, FALSE ); } m_apBrwData->SetReadOnly( m_bReadOnly ); diff --git a/chart2/source/controller/dialogs/dlg_DataEditor.hrc b/chart2/source/controller/dialogs/dlg_DataEditor.hrc index 4ce4433fe7fd..9d56fc0746f2 100644 --- a/chart2/source/controller/dialogs/dlg_DataEditor.hrc +++ b/chart2/source/controller/dialogs/dlg_DataEditor.hrc @@ -36,19 +36,14 @@ #define CTL_DATA 1 // images for toolbox image list +//the numbers correspond to the icon names: default_images\chart2\res\dataeditor_icon_xy #define TBI_DATA_INSERT_ROW 1 #define TBI_DATA_INSERT_COL 2 #define TBI_DATA_DELETE_ROW 3 #define TBI_DATA_DELETE_COL 4 #define TBI_DATA_SWAP_COL 5 #define TBI_DATA_SWAP_ROW 6 -#define TBI_DATA_TRANSFER 7 - -// #define TBI_DATA_SORT_ROW 7 -// #define TBI_DATA_SORT_COL 8 -// #define TBI_DATA_SORT_TABLE_ROW 9 -// #define TBI_DATA_SORT_TABLE_COL 10 -// #define TBI_DATA_TRANSFER 11 +#define TBI_DATA_INSERT_TEXT_COL 7 // image lists (normal and high-contrast) for toolbox #define IL_DIAGRAM_DATA 1 diff --git a/chart2/source/controller/dialogs/dlg_DataEditor.src b/chart2/source/controller/dialogs/dlg_DataEditor.src index 116757475bbb..67a40b21d7e3 100644 --- a/chart2/source/controller/dialogs/dlg_DataEditor.src +++ b/chart2/source/controller/dialogs/dlg_DataEditor.src @@ -83,6 +83,12 @@ ModalDialog DLG_DIAGRAM_DATA }; ToolBoxItem { + HelpID = HID_SCH_TBI_DATA_INSERT_TEXT_COL ; + Identifier = TBI_DATA_INSERT_TEXT_COL ; + Text [ en-US ] = "Insert Text Column" ; + }; + ToolBoxItem + { HelpID = HID_SCH_TBI_DATA_DELETE_ROW ; Identifier = TBI_DATA_DELETE_ROW ; Text [ en-US ] = "Delete Row" ; @@ -121,11 +127,11 @@ ModalDialog DLG_DIAGRAM_DATA { \ TBI_DATA_INSERT_ROW; \ TBI_DATA_INSERT_COL; \ + TBI_DATA_INSERT_TEXT_COL; \ TBI_DATA_DELETE_ROW; \ TBI_DATA_DELETE_COL; \ TBI_DATA_SWAP_COL; \ TBI_DATA_SWAP_ROW; \ - TBI_DATA_TRANSFER; \ }; \ IdCount = { 7; } diff --git a/chart2/source/controller/inc/HelpIds.hrc b/chart2/source/controller/inc/HelpIds.hrc index ccff9e913f97..f075a19da462 100644 --- a/chart2/source/controller/inc/HelpIds.hrc +++ b/chart2/source/controller/inc/HelpIds.hrc @@ -32,6 +32,7 @@ #include <svtools/solar.hrc> //next is 120 +//free: 20, 21, 22, 30, 31, 32, 33 //see old chart: schhids.h @@ -64,21 +65,13 @@ //#define HID_SCH_CT_INDICATE2 (HID_SCH_START + 18) //#define HID_SCH_CT_REGRESS2 (HID_SCH_START + 19) -//#define HID_SCH_TBI_EDIT_CANCEL (HID_SCH_START + 20) -//#define HID_SCH_TBI_EDIT_ACCEPT (HID_SCH_START + 21) -#define HID_SCH_TBI_DATA_TRANSFER (HID_SCH_START + 22) #define HID_SCH_TBI_DATA_INSERT_ROW (HID_SCH_START + 23) #define HID_SCH_TBI_DATA_INSERT_COL (HID_SCH_START + 24) #define HID_SCH_TBI_DATA_DELETE_ROW (HID_SCH_START + 25) #define HID_SCH_TBI_DATA_DELETE_COL (HID_SCH_START + 26) #define HID_SCH_TBI_DATA_SWAP_COL (HID_SCH_START + 27) #define HID_SCH_TBI_DATA_SWAP_ROW (HID_SCH_START + 28) -//#define HID_SCH_TBI_DATA_SORT_ROW (HID_SCH_START + 29) -//#define HID_SCH_TBI_DATA_SORT_COL (HID_SCH_START + 30) -//#define HID_SCH_TBI_DATA_SORT_TABLE_ROW (HID_SCH_START + 31) -//#define HID_SCH_TBI_DATA_SORT_TABLE_COL (HID_SCH_START + 32) - -// #define HID_SCH_TBX_EDIT (HID_SCH_START + 33) +#define HID_SCH_TBI_DATA_INSERT_TEXT_COL (HID_SCH_START + 29) #define HID_SCH_TBX_DATA (HID_SCH_START + 34) #define HID_SCH_ALIGNMENT_CTR_DIAL (HID_SCH_START + 35) |