[Libreoffice-commits] .: 30 commits - chart2/source chart2/uiconfig officecfg/registry

Markus Mohrhard mmohrhard at kemper.freedesktop.org
Thu Mar 22 18:56:21 PDT 2012


 chart2/source/controller/accessibility/ChartElementFactory.cxx      |    1 
 chart2/source/controller/dialogs/ObjectNameProvider.cxx             |   10 
 chart2/source/controller/dialogs/ResourceIds.hrc                    |    1 
 chart2/source/controller/dialogs/Strings.src                        |   24 +-
 chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx            |    4 
 chart2/source/controller/dialogs/dlg_ObjectProperties.cxx           |   27 +-
 chart2/source/controller/dialogs/res_ErrorBar.cxx                   |    2 
 chart2/source/controller/inc/dlg_InsertErrorBars.hxx                |    2 
 chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx   |    9 
 chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx |   71 ++++--
 chart2/source/controller/main/ChartController.cxx                   |   18 +
 chart2/source/controller/main/ChartController.hxx                   |    5 
 chart2/source/controller/main/ChartController_Insert.cxx            |  116 +++++-----
 chart2/source/controller/main/ChartController_Properties.cxx        |   35 +--
 chart2/source/controller/main/ChartController_Tools.cxx             |   46 ++-
 chart2/source/controller/main/ChartController_Window.cxx            |   14 +
 chart2/source/controller/main/ControllerCommandDispatch.cxx         |   23 +
 chart2/source/controller/main/ObjectHierarchy.cxx                   |   16 +
 chart2/source/inc/ObjectIdentifier.hxx                              |    1 
 chart2/source/inc/Strings.hrc                                       |    8 
 chart2/source/inc/chartview/ChartSfxItemIds.hxx                     |    3 
 chart2/source/tools/ObjectIdentifier.cxx                            |   26 +-
 chart2/source/tools/RangeHighlighter.cxx                            |    4 
 chart2/source/view/charttypes/AreaChart.cxx                         |   25 +-
 chart2/source/view/charttypes/VSeriesPlotter.cxx                    |   45 +++
 chart2/source/view/inc/VDataSeries.hxx                              |    8 
 chart2/source/view/inc/VSeriesPlotter.hxx                           |    8 
 chart2/source/view/main/ChartItemPool.cxx                           |    1 
 chart2/source/view/main/VDataSeries.cxx                             |   21 +
 chart2/uiconfig/menubar/menubar.xml                                 |    1 
 officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu  |   20 +
 31 files changed, 422 insertions(+), 173 deletions(-)

New commits:
commit 30cb55913638905e1651874958f9ef1732ad0daf
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Mar 18 00:14:48 2012 +0000

    Remove deprecated chart ObjectType OBJECTTYPE_DATA_ERRORS.

diff --git a/chart2/source/controller/accessibility/ChartElementFactory.cxx b/chart2/source/controller/accessibility/ChartElementFactory.cxx
index c278460..d146f94 100644
--- a/chart2/source/controller/accessibility/ChartElementFactory.cxx
+++ b/chart2/source/controller/accessibility/ChartElementFactory.cxx
@@ -57,7 +57,6 @@ AccessibleBase* ChartElementFactory::CreateChartElement( const AccessibleElement
         case OBJECTTYPE_DATA_SERIES:
         case OBJECTTYPE_DATA_LABELS:
         case OBJECTTYPE_DATA_LABEL:
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_X:
         case OBJECTTYPE_DATA_ERRORS_Y:
         case OBJECTTYPE_DATA_ERRORS_Z:
diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
index 8ede4c9..0f0ae82 100644
--- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx
+++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
@@ -283,9 +283,6 @@ rtl::OUString ObjectNameProvider::getName( ObjectType eObjectType, bool bPlural
         case OBJECTTYPE_DATA_LABEL:
                 aRet=String(SchResId(STR_OBJECT_LABEL));
                 break;
-        case OBJECTTYPE_DATA_ERRORS:
-                aRet=String(SchResId(STR_OBJECT_ERROR_BARS_Y));
-                break;
         case OBJECTTYPE_DATA_ERRORS_X:
                 aRet=String(SchResId(STR_OBJECT_ERROR_BARS_X));
                 break;
@@ -752,7 +749,6 @@ rtl::OUString ObjectNameProvider::getNameForCID(
         case OBJECTTYPE_DATA_POINT:
         case OBJECTTYPE_DATA_LABELS:
         case OBJECTTYPE_DATA_LABEL:
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_X:
         case OBJECTTYPE_DATA_ERRORS_Y:
         case OBJECTTYPE_DATA_ERRORS_Z:
diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
index cd6b1f0..ecd2435 100644
--- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
+++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
@@ -160,10 +160,9 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel
         }
     }
 
-    if( OBJECTTYPE_DATA_ERRORS == m_eObjectType ||
-            m_eObjectType == OBJECTTYPE_DATA_ERRORS_X ||
-            m_eObjectType == OBJECTTYPE_DATA_ERRORS_Y ||
-            m_eObjectType == OBJECTTYPE_DATA_ERRORS_Z)
+    if( m_eObjectType == OBJECTTYPE_DATA_ERRORS_X ||
+        m_eObjectType == OBJECTTYPE_DATA_ERRORS_Y ||
+        m_eObjectType == OBJECTTYPE_DATA_ERRORS_Z)
         m_bHasStatisticProperties = true;
 
     if( OBJECTTYPE_AXIS == m_eObjectType )
@@ -242,7 +241,6 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel
                 case OBJECTTYPE_DATA_POINT:
                 case OBJECTTYPE_DATA_LABEL:
                 case OBJECTTYPE_DATA_LABELS:
-                case OBJECTTYPE_DATA_ERRORS:
                 case OBJECTTYPE_DATA_ERRORS_X:
                 case OBJECTTYPE_DATA_ERRORS_Y:
                 case OBJECTTYPE_DATA_ERRORS_Z:
@@ -455,7 +453,6 @@ SchAttribTabDlg::SchAttribTabDlg(Window* pParent,
             AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_LINE)));
             break;
 
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_Y:
             AddTabPage(TP_YERRORBAR, String(SchResId(STR_PAGE_YERROR_BARS)), ErrorBarsTabPage::Create, NULL);
             AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_LINE)));
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index a2a0d92..19f146a 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -255,7 +255,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                                         wrapper::GraphicPropertyItemConverter::LINE_PROPERTIES );
                     break;
 
-            case OBJECTTYPE_DATA_ERRORS:
             case OBJECTTYPE_DATA_ERRORS_X:
             case OBJECTTYPE_DATA_ERRORS_Y:
             case OBJECTTYPE_DATA_ERRORS_Z:
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index eb96489..050d645 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -563,7 +563,6 @@ bool ChartController::isObjectDeleteable( const uno::Any& rSelection )
         case OBJECTTYPE_DATA_CURVE_EQUATION:
         case OBJECTTYPE_DATA_CURVE:
         case OBJECTTYPE_DATA_AVERAGE_LINE:
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_X:
         case OBJECTTYPE_DATA_ERRORS_Y:
         case OBJECTTYPE_DATA_ERRORS_Z:
@@ -725,7 +724,6 @@ bool ChartController::executeDispatch_Delete()
                 break;
             }
 
-            case OBJECTTYPE_DATA_ERRORS:
             case OBJECTTYPE_DATA_ERRORS_X:
             case OBJECTTYPE_DATA_ERRORS_Y:
             case OBJECTTYPE_DATA_ERRORS_Z:
@@ -738,8 +736,7 @@ bool ChartController::executeDispatch_Delete()
 
                     if ( aObjectType == OBJECTTYPE_DATA_ERRORS_X )
                         nId = STR_OBJECT_ERROR_BARS_X;
-                    else if ( aObjectType == OBJECTTYPE_DATA_ERRORS_Y ||
-                              aObjectType == OBJECTTYPE_DATA_ERRORS )
+                    else if ( aObjectType == OBJECTTYPE_DATA_ERRORS_Y )
                         nId = STR_OBJECT_ERROR_BARS_Y;
                     else
                         nId = STR_OBJECT_ERROR_BARS_Z;
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 3cc3538..6fcfacc 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -206,7 +206,6 @@ OUString lcl_getFormatCommandForObjectCID( const OUString& rCID )
         case OBJECTTYPE_DATA_ERRORS_X:
             aDispatchCommand = C2U(".uno:FormatXErrorBars");
             break;
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_Y:
             aDispatchCommand = C2U(".uno:FormatYErrorBars");
             break;
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index 372fe31..2510981 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -280,7 +280,7 @@ void ControllerState::update(
             if( aObjectType == OBJECTTYPE_DATA_ERRORS_X)
                 bMayFormatXErrorBars = true;
 
-            if( aObjectType == OBJECTTYPE_DATA_ERRORS_Y || aObjectType == OBJECTTYPE_DATA_ERRORS )
+            if( aObjectType == OBJECTTYPE_DATA_ERRORS_Y )
                 bMayFormatYErrorBars = true;
 
             if( aObjectType == OBJECTTYPE_DATA_CURVE )
diff --git a/chart2/source/inc/ObjectIdentifier.hxx b/chart2/source/inc/ObjectIdentifier.hxx
index 0c71e23..d1cbf81 100644
--- a/chart2/source/inc/ObjectIdentifier.hxx
+++ b/chart2/source/inc/ObjectIdentifier.hxx
@@ -68,7 +68,6 @@ enum ObjectType
     OBJECTTYPE_DATA_POINT,
     OBJECTTYPE_DATA_LABELS,
     OBJECTTYPE_DATA_LABEL,
-    OBJECTTYPE_DATA_ERRORS,
     OBJECTTYPE_DATA_ERRORS_X,
     OBJECTTYPE_DATA_ERRORS_Y,
     OBJECTTYPE_DATA_ERRORS_Z,
diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx
index 5dcc2cf..b386b79 100644
--- a/chart2/source/tools/ObjectIdentifier.cxx
+++ b/chart2/source/tools/ObjectIdentifier.cxx
@@ -875,9 +875,6 @@ OUString ObjectIdentifier::getStringForType( ObjectType eObjectType )
         case OBJECTTYPE_DATA_LABEL:
                 aRet=C2U("DataLabel");
                 break;
-        case OBJECTTYPE_DATA_ERRORS:
-                aRet=C2U("Errors");
-                break;
         case OBJECTTYPE_DATA_ERRORS_X:
                 aRet=C2U("ErrorsX");
                 break;
@@ -963,8 +960,6 @@ ObjectType ObjectIdentifier::getObjectType( const OUString& rCID )
         eRet = OBJECTTYPE_DATA_ERRORS_Y;
     else if( rCID.match(C2U("ErrorsZ"),nLastSign) )
         eRet = OBJECTTYPE_DATA_ERRORS_Z;
-    else if( rCID.match(C2U("Errors"),nLastSign) )
-        eRet = OBJECTTYPE_DATA_ERRORS;
     else if( rCID.match(C2U("Curve"),nLastSign) )
         eRet = OBJECTTYPE_DATA_CURVE;
     else if( rCID.match(C2U("Equation"),nLastSign) )
@@ -1233,7 +1228,6 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet(
                     }
                     break;
                 }
-            case OBJECTTYPE_DATA_ERRORS:
             case OBJECTTYPE_DATA_ERRORS_X:
             case OBJECTTYPE_DATA_ERRORS_Y:
             case OBJECTTYPE_DATA_ERRORS_Z:
@@ -1250,7 +1244,7 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet(
 
                             if ( eObjectType == OBJECTTYPE_DATA_ERRORS_X)
                                 errorBar = C2U("ErrorBarX");
-                            else if (eObjectType == OBJECTTYPE_DATA_ERRORS_Y || eObjectType == OBJECTTYPE_DATA_ERRORS)
+                            else if (eObjectType == OBJECTTYPE_DATA_ERRORS_Y)
                                 errorBar = C2U("ErrorBarY");
                             else
                                 errorBar = C2U("ErrorBarZ");
diff --git a/chart2/source/tools/RangeHighlighter.cxx b/chart2/source/tools/RangeHighlighter.cxx
index 4876c4e..d403335 100644
--- a/chart2/source/tools/RangeHighlighter.cxx
+++ b/chart2/source/tools/RangeHighlighter.cxx
@@ -134,8 +134,7 @@ void RangeHighlighter::determineRanges()
                         fillRangesForDataPoint( xDataSeries, nIndex );
                         return;
                     }
-                    else if( OBJECTTYPE_DATA_ERRORS == eObjectType ||
-                             OBJECTTYPE_DATA_ERRORS_X == eObjectType ||
+                    else if( OBJECTTYPE_DATA_ERRORS_X == eObjectType ||
                              OBJECTTYPE_DATA_ERRORS_Y == eObjectType ||
                              OBJECTTYPE_DATA_ERRORS_Z == eObjectType )
                     {
commit f412f4bcedf78e38a5e762c583f754ce71cee135
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 23:31:00 2012 +0000

    Create separate shape groups for each errorbar type.

diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index ce4d714..57d0d08 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -368,12 +368,15 @@ uno::Reference< drawing::XShapes > VSeriesPlotter::getErrorBarsGroupShape( VData
                                         , const uno::Reference< drawing::XShapes >& xTarget
                                         , bool bYError )
 {
-    uno::Reference< drawing::XShapes > xShapes( rDataSeries.m_xErrorBarsGroupShape );
+    uno::Reference< ::com::sun::star::drawing::XShapes > &rShapeGroup =
+            bYError ? rDataSeries.m_xErrorYBarsGroupShape : rDataSeries.m_xErrorXBarsGroupShape;
+
+    uno::Reference< drawing::XShapes > xShapes( rShapeGroup );
     if(!xShapes.is())
     {
         //create a group shape for this series and add to logic target:
         xShapes = this->createGroupShape( xTarget,rDataSeries.getErrorBarsCID(bYError) );
-        rDataSeries.m_xErrorBarsGroupShape = xShapes;
+        rShapeGroup = xShapes;
     }
     return xShapes;
 
diff --git a/chart2/source/view/inc/VDataSeries.hxx b/chart2/source/view/inc/VDataSeries.hxx
index 8f8aeb0..64679cd 100644
--- a/chart2/source/view/inc/VDataSeries.hxx
+++ b/chart2/source/view/inc/VDataSeries.hxx
@@ -185,7 +185,8 @@ private: //methods
 public: //member
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xGroupShape;
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xLabelsGroupShape;
-    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xErrorBarsGroupShape;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xErrorXBarsGroupShape;
+    ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > m_xErrorYBarsGroupShape;
 
     //the following group shapes will be created as children of m_xGroupShape on demand
     //they can be used to assure that some parts of a series shape are always in front of others (e.g. symbols in front of lines)
diff --git a/chart2/source/view/main/VDataSeries.cxx b/chart2/source/view/main/VDataSeries.cxx
index de9e1d2..5cad9ca 100644
--- a/chart2/source/view/main/VDataSeries.cxx
+++ b/chart2/source/view/main/VDataSeries.cxx
@@ -158,7 +158,8 @@ VDataSeries::VDataSeries( const uno::Reference< XDataSeries >& xDataSeries )
     , m_fLogicZPos(0.0)
     , m_xGroupShape(NULL)
     , m_xLabelsGroupShape(NULL)
-    , m_xErrorBarsGroupShape(NULL)
+    , m_xErrorXBarsGroupShape(NULL)
+    , m_xErrorYBarsGroupShape(NULL)
     , m_xFrontSubGroupShape(NULL)
     , m_xBackSubGroupShape(NULL)
     , m_xDataSeries(xDataSeries)
@@ -333,7 +334,8 @@ void VDataSeries::releaseShapes()
 {
     m_xGroupShape.set(0);
     m_xLabelsGroupShape.set(0);
-    m_xErrorBarsGroupShape.set(0);
+    m_xErrorXBarsGroupShape.set(0);
+    m_xErrorYBarsGroupShape.set(0);
     m_xFrontSubGroupShape.set(0);
     m_xBackSubGroupShape.set(0);
 
commit c57bb7b56be4eb9fc58c1de6652113d6ad15ba10
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 20:40:39 2012 +0000

    Set correct objecttype for errorbar.

diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
index b21fd14..820a5e3 100644
--- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
+++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
@@ -67,7 +67,7 @@ InsertErrorBarsDialog::InsertErrorBarsDialog(
                                    /* bNoneAvailable = */ true, eType ))
 {
     FreeResource();
-    ObjectType objType = eType == ErrorBarResources::ERROR_BAR_Y ? OBJECTTYPE_DATA_ERRORS : OBJECTTYPE_DATA_ERRORS_X;
+    ObjectType objType = eType == ErrorBarResources::ERROR_BAR_Y ? OBJECTTYPE_DATA_ERRORS_Y : OBJECTTYPE_DATA_ERRORS_X;
 
     this->SetText( ObjectNameProvider::getName_ObjectForAllSeries(objType) );
 
commit 92aedd1755a345957c9024436f652d336f463fbb
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 20:40:01 2012 +0000

    Display Format menu entry when selecting an X errorbar.

diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index 0f314f4..372fe31 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -277,6 +277,9 @@ void ControllerState::update(
             if( aObjectType == OBJECTTYPE_DATA_AVERAGE_LINE )
                 bMayFormatMeanValue = true;
 
+            if( aObjectType == OBJECTTYPE_DATA_ERRORS_X)
+                bMayFormatXErrorBars = true;
+
             if( aObjectType == OBJECTTYPE_DATA_ERRORS_Y || aObjectType == OBJECTTYPE_DATA_ERRORS )
                 bMayFormatYErrorBars = true;
 
commit 581978b90ccd68ce9aecd328b8f801b08837c0cf
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 17:15:10 2012 +0000

    Get correct datasource when calculating errorbar length.

diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index e0a6f3c..ce4d714 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -637,7 +637,8 @@ double lcl_getErrorBarLogicLength(
     uno::Reference< beans::XPropertySet > xProp,
     sal_Int32 nErrorBarStyle,
     sal_Int32 nIndex,
-    bool bPositive )
+    bool bPositive,
+    bool bYError )
 {
     double fResult;
     ::rtl::math::setNan( & fResult );
@@ -706,7 +707,7 @@ double lcl_getErrorBarLogicLength(
                 uno::Reference< chart2::data::XDataSource > xErrorBarData( xProp, uno::UNO_QUERY );
                 if( xErrorBarData.is())
                     fResult = StatisticsHelper::getErrorFromDataSource(
-                        xErrorBarData, nIndex, bPositive);
+                        xErrorBarData, nIndex, bPositive, bYError);
             }
             break;
         }
@@ -851,7 +852,7 @@ void VSeriesPlotter::createErrorBar(
 
         if( bShowPositive )
         {
-            double fLength = lcl_getErrorBarLogicLength( aData, xErrorBarProperties, nErrorBarStyle, nIndex, true );
+            double fLength = lcl_getErrorBarLogicLength( aData, xErrorBarProperties, nErrorBarStyle, nIndex, true, bYError );
             if( ::rtl::math::isFinite( fLength ) )
             {
                 double fLocalX = fX;
@@ -874,7 +875,7 @@ void VSeriesPlotter::createErrorBar(
 
         if( bShowNegative )
         {
-            double fLength = lcl_getErrorBarLogicLength( aData, xErrorBarProperties, nErrorBarStyle, nIndex, false );
+            double fLength = lcl_getErrorBarLogicLength( aData, xErrorBarProperties, nErrorBarStyle, nIndex, false, bYError );
             if( ::rtl::math::isFinite( fLength ) )
             {
                 double fLocalX = fX;
commit 6294d8f4dff5deaa4efbe2a88113a5262217092a
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 15:13:55 2012 +0000

    Update DeleteYErrorbar function to handle X and Y bars.

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index c7e7ead..2356669 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1130,8 +1130,10 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
         this->executeDispatch_InsertErrorBars(false);
     else if( aCommand.equals("InsertYErrorBars"))
         this->executeDispatch_InsertErrorBars(true);
+    else if( aCommand.equals("DeleteXErrorBars"))
+        this->executeDispatch_DeleteErrorBars(false);
     else if( aCommand.equals("DeleteYErrorBars"))
-        this->executeDispatch_DeleteYErrorBars();
+        this->executeDispatch_DeleteErrorBars(true);
     else if( aCommand.equals("InsertTrendlineEquation"))
          this->executeDispatch_InsertTrendlineEquation();
     else if( aCommand.equals("DeleteTrendlineEquation"))
diff --git a/chart2/source/controller/main/ChartController.hxx b/chart2/source/controller/main/ChartController.hxx
index 4253e2d..b142f16 100644
--- a/chart2/source/controller/main/ChartController.hxx
+++ b/chart2/source/controller/main/ChartController.hxx
@@ -637,7 +637,7 @@ private:
     void                executeDispatch_DeleteMeanValue();
     void                executeDispatch_DeleteTrendline();
     void                executeDispatch_DeleteTrendlineEquation();
-    void                executeDispatch_DeleteYErrorBars();
+    void                executeDispatch_DeleteErrorBars( bool bYError );
 
     void                executeDispatch_InsertDataLabels();
     void                executeDispatch_InsertDataLabel();
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index f9dc3d8..93a793f 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -676,7 +676,7 @@ void ChartController::executeDispatch_DeleteTrendlineEquation()
     }
 }
 
-void ChartController::executeDispatch_DeleteYErrorBars()
+void ChartController::executeDispatch_DeleteErrorBars( bool bYError )
 {
     uno::Reference< chart2::XDataSeries > xDataSeries(
         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ));
@@ -686,7 +686,7 @@ void ChartController::executeDispatch_DeleteYErrorBars()
             ActionDescriptionProvider::createDescription(
                 ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_CURVE ))),
             m_xUndoManager );
-        StatisticsHelper::removeErrorBars( xDataSeries );
+        StatisticsHelper::removeErrorBars( xDataSeries, bYError );
         aUndoGuard.commit();
     }
 }
commit d2e77741cb8d31e3011893eea3639547204ff3a1
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 14:36:02 2012 +0000

    Set errorbar type attribute when inserting or formating an errorbar.

diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index c4efa90..f9dc3d8 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -502,6 +502,7 @@ void ChartController::executeDispatch_InsertErrorBars( bool bYError )
 
         // open dialog
         SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
+        aItemSet.Put(SfxBoolItem(SCHATTR_STAT_ERRORBAR_TYPE,bYError));
         aItemConverter.FillItemSet( aItemSet );
         ObjectPropertiesDialogParameter aDialogParameter = ObjectPropertiesDialogParameter(
             ObjectIdentifier::createClassifiedIdentifierWithParent(
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index bdbe465..a2a0d92 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -774,6 +774,10 @@ bool ChartController::executeDlg_ObjectProperties_withoutUndoGuard( const ::rtl:
             return bRet;
 
         SfxItemSet aItemSet = apItemConverter->CreateEmptyItemSet();
+
+        if ( eObjectType == OBJECTTYPE_DATA_ERRORS_X || eObjectType == OBJECTTYPE_DATA_ERRORS_Y )
+            aItemSet.Put(SfxBoolItem(SCHATTR_STAT_ERRORBAR_TYPE, eObjectType == OBJECTTYPE_DATA_ERRORS_Y ));
+
         apItemConverter->FillItemSet( aItemSet );
 
         //-------------------------------------------------------------
commit d02005d6484dc722c6a18b45ff646cb5b6c16553
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 14:32:05 2012 +0000

    Return correct ItemConverter object for any errorbar type.

diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index 9bbc134..bdbe465 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -256,6 +256,9 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                     break;
 
             case OBJECTTYPE_DATA_ERRORS:
+            case OBJECTTYPE_DATA_ERRORS_X:
+            case OBJECTTYPE_DATA_ERRORS_Y:
+            case OBJECTTYPE_DATA_ERRORS_Z:
                 pItemConverter =  new wrapper::ErrorBarItemConverter(
                     xChartModel, xObjectProperties, rDrawModel.GetItemPool(),
                     rDrawModel, uno::Reference< lang::XMultiServiceFactory >( xChartModel, uno::UNO_QUERY ));
@@ -280,12 +283,6 @@ SAL_WNODEPRECATED_DECLARATIONS_PUSH
                                         pRefSize );
                     break;
             }
-            case OBJECTTYPE_DATA_ERRORS_X:
-                    break;
-            case OBJECTTYPE_DATA_ERRORS_Y:
-                    break;
-            case OBJECTTYPE_DATA_ERRORS_Z:
-                    break;
             case OBJECTTYPE_DATA_STOCK_RANGE:
                     break;
             case OBJECTTYPE_DATA_STOCK_LOSS:
commit e9d44024e51036117fdd5ad71d7bf705d1d09d85
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 14:30:06 2012 +0000

    Enable support to format chart errorbars.

diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index 9d73b31..9bbc134 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -432,6 +432,15 @@ rtl::OUString lcl_getGridCIDForCommand( const ::rtl::OString& rDispatchCommand,
     rtl::OUString aCID( ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartModel, nSubGridIndex ) );
     return aCID;
 }
+
+rtl::OUString lcl_getErrorCIDForCommand( const ObjectType eDispatchType, const ObjectType &eSelectedType, const ::rtl::OUString &rSelectedCID)
+{
+    if( eSelectedType == eDispatchType )
+        return rSelectedCID;
+
+    return ObjectIdentifier::createClassifiedIdentifierWithParent( eDispatchType, ::rtl::OUString(), rSelectedCID );
+}
+
 rtl::OUString lcl_getObjectCIDForCommand( const ::rtl::OString& rDispatchCommand, const uno::Reference< XChartDocument > & xChartDocument, const rtl::OUString& rSelectedCID )
 {
     ObjectType eObjectType = OBJECTTYPE_UNKNOWN;
@@ -591,13 +600,15 @@ rtl::OUString lcl_getObjectCIDForCommand( const ::rtl::OString& rDispatchCommand
     }
     //-------------------------------------------------------------------------
     // y error bars
+    else if( rDispatchCommand.equals("FormatXErrorBars") )
+    {
+        return lcl_getErrorCIDForCommand(OBJECTTYPE_DATA_ERRORS_X, eSelectedType, rSelectedCID );
+    }
+    //-------------------------------------------------------------------------
+    // y error bars
     else if( rDispatchCommand.equals("FormatYErrorBars") )
     {
-        if( eSelectedType == OBJECTTYPE_DATA_ERRORS )
-            return rSelectedCID;
-        else
-            return ObjectIdentifier::createClassifiedIdentifierWithParent(
-                OBJECTTYPE_DATA_ERRORS, ::rtl::OUString(), rSelectedCID );
+        return lcl_getErrorCIDForCommand(OBJECTTYPE_DATA_ERRORS_Y, eSelectedType, rSelectedCID );
     }
     //-------------------------------------------------------------------------
     // axis
commit 44c00333920da77a8af0ffd483300cf88eee53bb
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 12:54:20 2012 +0000

    Handle case XErrorbars in ErrorBarItemConverter::ApplySpecialItem.

diff --git a/chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx b/chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx
index 7108204..298e416 100644
--- a/chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/ErrorBarItemConverter.cxx
@@ -286,7 +286,9 @@ bool ErrorBarItemConverter::ApplySpecialItem(
         case SCHATTR_STAT_RANGE_NEG:
         {
             // @todo: also be able to deal with x-error bars
-            const bool bYError = true;
+            const bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+
             uno::Reference< chart2::data::XDataSource > xErrorBarSource( GetPropertySet(), uno::UNO_QUERY );
             uno::Reference< chart2::XChartDocument > xChartDoc( m_xModel, uno::UNO_QUERY );
             uno::Reference< chart2::data::XDataProvider > xDataProvider;
@@ -437,12 +439,15 @@ void ErrorBarItemConverter::FillSpecialItem(
         case SCHATTR_STAT_RANGE_POS:
         case SCHATTR_STAT_RANGE_NEG:
         {
+            const bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+
             uno::Reference< chart2::data::XDataSource > xErrorBarSource( GetPropertySet(), uno::UNO_QUERY );
             if( xErrorBarSource.is())
             {
                 uno::Reference< chart2::data::XDataSequence > xSeq(
                     StatisticsHelper::getErrorDataSequenceFromDataSource(
-                        xErrorBarSource, (nWhichId == SCHATTR_STAT_RANGE_POS) /*, true */ /* y */ ));
+                        xErrorBarSource, (nWhichId == SCHATTR_STAT_RANGE_POS), bYError ));
                 if( xSeq.is())
                     rOutItemSet.Put( SfxStringItem( nWhichId, String( xSeq->getSourceRangeRepresentation())));
             }
commit bb1979b96bcd51c2a2d85508027b42942fceecd1
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 12:48:51 2012 +0000

    Allow deleting any chart errorbar and set correct action description.

diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index 9da159c..eb96489 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -553,17 +553,29 @@ bool ChartController::isObjectDeleteable( const uno::Any& rSelection )
     {
         OUString aSelObjCID( aSelOID.getObjectCID() );
         ObjectType aObjectType(ObjectIdentifier::getObjectType( aSelObjCID ));
-        if( (OBJECTTYPE_TITLE == aObjectType) || (OBJECTTYPE_LEGEND == aObjectType) )
-            return true;
-        if( (OBJECTTYPE_DATA_SERIES == aObjectType) || (OBJECTTYPE_LEGEND_ENTRY == aObjectType) )
-            return true;
-        if( (OBJECTTYPE_DATA_CURVE_EQUATION == aObjectType) || (OBJECTTYPE_DATA_CURVE == aObjectType) ||
-            (OBJECTTYPE_DATA_AVERAGE_LINE == aObjectType) || (OBJECTTYPE_DATA_ERRORS == aObjectType))
-            return true;
-        if( (OBJECTTYPE_DATA_LABELS == aObjectType) || (OBJECTTYPE_DATA_LABEL == aObjectType) )
-            return true;
-        if( (OBJECTTYPE_AXIS == aObjectType) || (OBJECTTYPE_GRID == aObjectType) || (OBJECTTYPE_SUBGRID == aObjectType) )
+
+        switch(aObjectType)
+        {
+        case OBJECTTYPE_TITLE:
+        case OBJECTTYPE_LEGEND:
+        case OBJECTTYPE_DATA_SERIES:
+        case OBJECTTYPE_LEGEND_ENTRY:
+        case OBJECTTYPE_DATA_CURVE_EQUATION:
+        case OBJECTTYPE_DATA_CURVE:
+        case OBJECTTYPE_DATA_AVERAGE_LINE:
+        case OBJECTTYPE_DATA_ERRORS:
+        case OBJECTTYPE_DATA_ERRORS_X:
+        case OBJECTTYPE_DATA_ERRORS_Y:
+        case OBJECTTYPE_DATA_ERRORS_Z:
+        case OBJECTTYPE_DATA_LABELS:
+        case OBJECTTYPE_DATA_LABEL:
+        case OBJECTTYPE_AXIS:
+        case OBJECTTYPE_GRID:
+        case OBJECTTYPE_SUBGRID:
             return true;
+        default:
+            break;
+        }
     }
     else if ( aSelOID.isAdditionalShape() )
     {
@@ -714,16 +726,29 @@ bool ChartController::executeDispatch_Delete()
             }
 
             case OBJECTTYPE_DATA_ERRORS:
+            case OBJECTTYPE_DATA_ERRORS_X:
+            case OBJECTTYPE_DATA_ERRORS_Y:
+            case OBJECTTYPE_DATA_ERRORS_Z:
             {
                 uno::Reference< beans::XPropertySet > xErrorBarProp(
                     ObjectIdentifier::getObjectPropertySet( aCID, getModel() ));
                 if( xErrorBarProp.is())
                 {
+                    sal_Int16 nId;
+
+                    if ( aObjectType == OBJECTTYPE_DATA_ERRORS_X )
+                        nId = STR_OBJECT_ERROR_BARS_X;
+                    else if ( aObjectType == OBJECTTYPE_DATA_ERRORS_Y ||
+                              aObjectType == OBJECTTYPE_DATA_ERRORS )
+                        nId = STR_OBJECT_ERROR_BARS_Y;
+                    else
+                        nId = STR_OBJECT_ERROR_BARS_Z;
+
                     uno::Reference< frame::XModel > xModel( getModel() );
                     // using assignment for broken gcc 3.3
                     UndoGuard aUndoGuard = UndoGuard(
                         ActionDescriptionProvider::createDescription(
-                            ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_ERROR_BARS_Y ))),
+                            ActionDescriptionProvider::DELETE, String( SchResId( nId ))),
                         m_xUndoManager );
                     {
                         ControllerLockGuard aCtlLockGuard( xModel );
commit 2713c4bf0f8d4869c7c59ebc479d3140ec55b11a
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 10:34:44 2012 +0000

    Determine ranges correctly for any type of chart errorbar object.

diff --git a/chart2/source/tools/RangeHighlighter.cxx b/chart2/source/tools/RangeHighlighter.cxx
index d923b51..4876c4e 100644
--- a/chart2/source/tools/RangeHighlighter.cxx
+++ b/chart2/source/tools/RangeHighlighter.cxx
@@ -134,7 +134,10 @@ void RangeHighlighter::determineRanges()
                         fillRangesForDataPoint( xDataSeries, nIndex );
                         return;
                     }
-                    else if( OBJECTTYPE_DATA_ERRORS == eObjectType )
+                    else if( OBJECTTYPE_DATA_ERRORS == eObjectType ||
+                             OBJECTTYPE_DATA_ERRORS_X == eObjectType ||
+                             OBJECTTYPE_DATA_ERRORS_Y == eObjectType ||
+                             OBJECTTYPE_DATA_ERRORS_Z == eObjectType )
                     {
                         // select error bar ranges, or data series, if the style is
                         // not set to FROM_DATA
commit 1e27c77338450b0199df7092804e61ea047732cb
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 10:30:27 2012 +0000

    Add FormatXErrorBar, DeleteXErrorBar menu entries in chart.
    
    -Update ModelState to reflect the changes.

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 018349a..c7e7ead 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1017,6 +1017,7 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
         || aCommand.equals("FormatDataPoint")
         || aCommand.equals("FormatDataLabels")
         || aCommand.equals("FormatDataLabel")
+        || aCommand.equals("FormatXErrorBars")
         || aCommand.equals("FormatYErrorBars")
         || aCommand.equals("FormatMeanValue")
         || aCommand.equals("FormatTrendline")
@@ -1517,7 +1518,7 @@ void ChartController::impl_initializeAccessible( const uno::Reference< lang::XIn
         ( "InsertMenuYErrorBars" )   ( "InsertYErrorBars" )
         ( "InsertDataLabels" )   ( "InsertDataLabel" )
         ( "DeleteTrendline" )    ( "DeleteMeanValue" )      ( "DeleteTrendlineEquation" )
-        ( "DeleteYErrorBars" )
+        ( "DeleteXErrorBars" )   ( "DeleteYErrorBars" )
         ( "DeleteDataLabels" )   ( "DeleteDataLabel" )
         //format objects
         ( "FormatSelection" )     ( "TransformDialog" )
@@ -1543,7 +1544,7 @@ void ChartController::impl_initializeAccessible( const uno::Reference< lang::XIn
         ( "ResetAllDataPoints" )   ( "ResetDataPoint" )
         ( "FormatDataLabels" )     ( "FormatDataLabel" )
         ( "FormatMeanValue" )      ( "FormatTrendline" )      ( "FormatTrendlineEquation" )
-        ( "FormatYErrorBars" )
+        ( "FormatXErrorBars" )     ( "FormatYErrorBars" )
         ( "FormatStockLoss" )      ( "FormatStockGain" )
 
         ( "FormatMajorGrid" )      ( "InsertMajorGrid" )      ( "DeleteMajorGrid" )
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index fbea9be..3cc3538 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -203,12 +203,16 @@ OUString lcl_getFormatCommandForObjectCID( const OUString& rCID )
         case OBJECTTYPE_DATA_AVERAGE_LINE:
             aDispatchCommand = C2U(".uno:FormatMeanValue");
             break;
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_X:
+            aDispatchCommand = C2U(".uno:FormatXErrorBars");
+            break;
+        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_Y:
-        case OBJECTTYPE_DATA_ERRORS_Z:
             aDispatchCommand = C2U(".uno:FormatYErrorBars");
             break;
+        case OBJECTTYPE_DATA_ERRORS_Z:
+            aDispatchCommand = C2U(".uno:FormatZErrorBars");
+            break;
         case OBJECTTYPE_DATA_CURVE:
             aDispatchCommand = C2U(".uno:FormatTrendline");
             break;
@@ -1147,6 +1151,8 @@ void ChartController::execute_Command( const CommandEvent& rCEvt )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:FormatTrendlineEquation") );
                     if( xMeanValue.is() )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:FormatMeanValue") );
+                    if( bHasXErrorBars )
+                        lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:FormatXErrorBars") );
                     if( bHasYErrorBars )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:FormatYErrorBars") );
 
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index c6dac76..0f314f4 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -132,17 +132,20 @@ struct ControllerState
     bool bMayAddTrendlineEquation;
     bool bMayAddR2Value;
     bool bMayAddMeanValue;
+    bool bMayAddXErrorBars;
     bool bMayAddYErrorBars;
 
     bool bMayDeleteTrendline;
     bool bMayDeleteTrendlineEquation;
     bool bMayDeleteR2Value;
     bool bMayDeleteMeanValue;
+    bool bMayDeleteXErrorBars;
     bool bMayDeleteYErrorBars;
 
     bool bMayFormatTrendline;
     bool bMayFormatTrendlineEquation;
     bool bMayFormatMeanValue;
+    bool bMayFormatXErrorBars;
     bool bMayFormatYErrorBars;
 };
 
@@ -159,15 +162,18 @@ ControllerState::ControllerState() :
         bMayAddTrendlineEquation( false ),
         bMayAddR2Value( false ),
         bMayAddMeanValue( false ),
+        bMayAddXErrorBars( false ),
         bMayAddYErrorBars( false ),
         bMayDeleteTrendline( false ),
         bMayDeleteTrendlineEquation( false ),
         bMayDeleteR2Value( false ),
         bMayDeleteMeanValue( false ),
+        bMayDeleteXErrorBars( false ),
         bMayDeleteYErrorBars( false ),
         bMayFormatTrendline( false ),
         bMayFormatTrendlineEquation( false ),
         bMayFormatMeanValue( false ),
+        bMayFormatXErrorBars( false ),
         bMayFormatYErrorBars( false )
 {}
 
@@ -217,15 +223,18 @@ void ControllerState::update(
         bMayAddTrendlineEquation = false;
         bMayAddR2Value = false;
         bMayAddMeanValue = false;
+        bMayAddXErrorBars = false;
         bMayAddYErrorBars = false;
         bMayDeleteTrendline = false;
         bMayDeleteTrendlineEquation = false;
         bMayDeleteR2Value = false;
         bMayDeleteMeanValue = false;
+        bMayDeleteXErrorBars = false;
         bMayDeleteYErrorBars = false;
         bMayFormatTrendline = false;
         bMayFormatTrendlineEquation = false;
         bMayFormatMeanValue = false;
+        bMayFormatXErrorBars = false;
         bMayFormatYErrorBars = false;
         if( bHasSelectedObject )
         {
@@ -257,7 +266,10 @@ void ControllerState::update(
                 if( (OBJECTTYPE_DATA_SERIES == aObjectType || OBJECTTYPE_DATA_POINT == aObjectType)
                     && ChartTypeHelper::isSupportingStatisticProperties( xFirstChartType, nDimensionCount ))
                 {
-                    bMayFormatYErrorBars = bMayDeleteYErrorBars = StatisticsHelper::hasErrorBars( xGivenDataSeries );
+                    bMayFormatXErrorBars = bMayDeleteXErrorBars = StatisticsHelper::hasErrorBars( xGivenDataSeries, false );
+                    bMayAddXErrorBars = ! bMayDeleteXErrorBars;
+
+                    bMayFormatYErrorBars = bMayDeleteYErrorBars = StatisticsHelper::hasErrorBars( xGivenDataSeries, true );
                     bMayAddYErrorBars = ! bMayDeleteYErrorBars;
                 }
             }
@@ -573,6 +585,7 @@ void ControllerCommandDispatch::updateCommandAvailability()
     m_aCommandAvailability[ C2U(".uno:InsertMenuGrids")] = bIsWritable && m_apModelState->bSupportsAxes;
     m_aCommandAvailability[ C2U(".uno:InsertMenuTrendlines")] = bIsWritable && m_apModelState->bSupportsStatistics;
     m_aCommandAvailability[ C2U(".uno:InsertMenuMeanValues")] = bIsWritable && m_apModelState->bSupportsStatistics;
+    m_aCommandAvailability[ C2U(".uno:InsertMenuXErrorBars")] = bIsWritable && m_apModelState->bSupportsStatistics;
     m_aCommandAvailability[ C2U(".uno:InsertMenuYErrorBars")] = bIsWritable && m_apModelState->bSupportsStatistics;
     m_aCommandAvailability[ C2U(".uno:InsertSymbol")] = bIsWritable && m_apControllerState->bIsTextObject;
 
@@ -585,6 +598,7 @@ void ControllerCommandDispatch::updateCommandAvailability()
     m_aCommandAvailability[ C2U(".uno:FormatDataPoint")] = bFormatObjectAvailable;
     m_aCommandAvailability[ C2U(".uno:FormatDataLabels")] = bFormatObjectAvailable;
     m_aCommandAvailability[ C2U(".uno:FormatDataLabel")] = bFormatObjectAvailable;
+    m_aCommandAvailability[ C2U(".uno:FormatXErrorBars")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatXErrorBars;
     m_aCommandAvailability[ C2U(".uno:FormatYErrorBars")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatYErrorBars;
     m_aCommandAvailability[ C2U(".uno:FormatMeanValue")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatMeanValue;
     m_aCommandAvailability[ C2U(".uno:FormatTrendline")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayFormatTrendline;
@@ -660,6 +674,7 @@ void ControllerCommandDispatch::updateCommandAvailability()
     m_aCommandAvailability[ C2U(".uno:InsertR2Value")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddR2Value;
     m_aCommandAvailability[ C2U(".uno:DeleteR2Value")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteR2Value;
 
+    m_aCommandAvailability[ C2U(".uno:InsertXErrorBars")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddXErrorBars;
     m_aCommandAvailability[ C2U(".uno:InsertYErrorBars")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayAddYErrorBars;
 
     m_aCommandAvailability[ C2U(".uno:DeleteDataLabels")] = bIsWritable;
@@ -667,6 +682,7 @@ void ControllerCommandDispatch::updateCommandAvailability()
     m_aCommandAvailability[ C2U(".uno:DeleteTrendline") ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendline;
     m_aCommandAvailability[ C2U(".uno:DeleteTrendlineEquation") ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteTrendlineEquation;
     m_aCommandAvailability[ C2U(".uno:DeleteMeanValue") ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteMeanValue;
+    m_aCommandAvailability[ C2U(".uno:DeleteXErrorBars")] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteXErrorBars;
     m_aCommandAvailability[ C2U(".uno:DeleteYErrorBars") ] = bIsWritable && bControllerStateIsValid && m_apControllerState->bMayDeleteYErrorBars;
 
     m_aCommandAvailability[ C2U(".uno:ResetDataPoint") ] = bIsWritable;
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
index 877a219..9419ebd 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
@@ -444,6 +444,16 @@
                     <value xml:lang="en-US">Insert X Error ~Bars...</value>
                 </prop>
             </node>
+			<node oor:name=".uno:DeleteXErrorBars" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">Delete X Error ~Bars</value>
+                </prop>
+            </node>
+            <node oor:name=".uno:FormatXErrorBars" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">Format X Error Bars...</value>
+                </prop>
+            </node>
             <node oor:name=".uno:InsertYErrorBars" oor:op="replace">
                 <prop oor:name="Label" oor:type="xs:string">
                     <value xml:lang="en-US">Insert Y Error ~Bars...</value>
commit 31eaf957dac072ebe65cf59816d032585f440dbf
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sat Mar 17 09:44:52 2012 +0000

    Display XErrorBars in object hierarchy.

diff --git a/chart2/source/controller/main/ObjectHierarchy.cxx b/chart2/source/controller/main/ObjectHierarchy.cxx
index 14158ba..f0f0dba 100644
--- a/chart2/source/controller/main/ObjectHierarchy.cxx
+++ b/chart2/source/controller/main/ObjectHierarchy.cxx
@@ -488,7 +488,21 @@ void ImplObjectHierarchy::createDataSeriesTree(
                                 {
                                     aSeriesSubContainer.push_back(
                                         ObjectIdentifier( ObjectIdentifier::createClassifiedIdentifierWithParent(
-                                            OBJECTTYPE_DATA_ERRORS, OUString(), aSeriesParticle ) ) );
+                                            OBJECTTYPE_DATA_ERRORS_Y, OUString(), aSeriesParticle ) ) );
+                                }
+                            }
+
+                            if( xSeriesProp.is() &&
+                                (xSeriesProp->getPropertyValue( C2U("ErrorBarX")) >>= xErrorBarProp) &&
+                                xErrorBarProp.is())
+                            {
+                                sal_Int32 nStyle = ::com::sun::star::chart::ErrorBarStyle::NONE;
+                                if( ( xErrorBarProp->getPropertyValue( C2U("ErrorBarStyle")) >>= nStyle ) &&
+                                    ( nStyle != ::com::sun::star::chart::ErrorBarStyle::NONE ) )
+                                {
+                                    aSeriesSubContainer.push_back(
+                                        ObjectIdentifier( ObjectIdentifier::createClassifiedIdentifierWithParent(
+                                            OBJECTTYPE_DATA_ERRORS_X, OUString(), aSeriesParticle ) ) );
                                 }
                             }
                         }
commit b9b5496636285c2f920f1a0b6f6fe7ced30a5caf
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Fri Mar 16 19:29:07 2012 +0000

    Return the correct errorbar property set.
    
    Select the errorbar propertyset according to the errorbar direction
    instead of only using Y errorbar propertyset in ObjectIdentifier::getObjectPropertySet
    function.

diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx
index 7b3b231..5dcc2cf 100644
--- a/chart2/source/tools/ObjectIdentifier.cxx
+++ b/chart2/source/tools/ObjectIdentifier.cxx
@@ -1234,6 +1234,9 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet(
                     break;
                 }
             case OBJECTTYPE_DATA_ERRORS:
+            case OBJECTTYPE_DATA_ERRORS_X:
+            case OBJECTTYPE_DATA_ERRORS_Y:
+            case OBJECTTYPE_DATA_ERRORS_Z:
                 {
                     Reference< XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID(
                         rObjectCID, xChartModel ) );
@@ -1243,18 +1246,21 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet(
                         Reference< beans::XPropertySet > xErrorBarProp;
                         if( xSeriesProp.is() )
                         {
-                            xSeriesProp->getPropertyValue( C2U( "ErrorBarY" )) >>= xErrorBarProp;
+                            OUString errorBar;
+
+                            if ( eObjectType == OBJECTTYPE_DATA_ERRORS_X)
+                                errorBar = C2U("ErrorBarX");
+                            else if (eObjectType == OBJECTTYPE_DATA_ERRORS_Y || eObjectType == OBJECTTYPE_DATA_ERRORS)
+                                errorBar = C2U("ErrorBarY");
+                            else
+                                errorBar = C2U("ErrorBarZ");
+
+                            xSeriesProp->getPropertyValue( errorBar ) >>= xErrorBarProp;
                             xObjectProperties = Reference< beans::XPropertySet >( xErrorBarProp, uno::UNO_QUERY );
                         }
                     }
                     break;
                 }
-            case OBJECTTYPE_DATA_ERRORS_X:
-                    break;
-            case OBJECTTYPE_DATA_ERRORS_Y:
-                    break;
-            case OBJECTTYPE_DATA_ERRORS_Z:
-                    break;
             case OBJECTTYPE_DATA_AVERAGE_LINE:
             case OBJECTTYPE_DATA_CURVE:
             case OBJECTTYPE_DATA_CURVE_EQUATION:
commit 97b7e088d249a2a312d4f0d6354de2ccd44c2483
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Fri Mar 16 18:42:36 2012 +0000

    Get correct errorbar CID depending on the direction.

diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index 64216c6..e0a6f3c 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -365,13 +365,14 @@ uno::Reference< drawing::XShapes > VSeriesPlotter::getLabelsGroupShape( VDataSer
 }
 
 uno::Reference< drawing::XShapes > VSeriesPlotter::getErrorBarsGroupShape( VDataSeries& rDataSeries
-                                        , const uno::Reference< drawing::XShapes >& xTarget )
+                                        , const uno::Reference< drawing::XShapes >& xTarget
+                                        , bool bYError )
 {
     uno::Reference< drawing::XShapes > xShapes( rDataSeries.m_xErrorBarsGroupShape );
     if(!xShapes.is())
     {
         //create a group shape for this series and add to logic target:
-        xShapes = this->createGroupShape( xTarget,rDataSeries.getErrorBarsCID() );
+        xShapes = this->createGroupShape( xTarget,rDataSeries.getErrorBarsCID(bYError) );
         rDataSeries.m_xErrorBarsGroupShape = xShapes;
     }
     return xShapes;
@@ -941,7 +942,7 @@ void VSeriesPlotter::createErrorBar_X( const drawing::Position3D& rUnscaledLogic
     if( xErrorBarProp.is())
     {
         uno::Reference< drawing::XShapes > xErrorBarsGroup_Shapes(
-            this->getErrorBarsGroupShape(rVDataSeries, xTarget) );
+            this->getErrorBarsGroupShape(rVDataSeries, xTarget, false) );
 
         createErrorBar( xErrorBarsGroup_Shapes
             , rUnscaledLogicPosition, xErrorBarProp
@@ -963,7 +964,7 @@ void VSeriesPlotter::createErrorBar_Y( const drawing::Position3D& rUnscaledLogic
     if( xErrorBarProp.is())
     {
         uno::Reference< drawing::XShapes > xErrorBarsGroup_Shapes(
-            this->getErrorBarsGroupShape(rVDataSeries, xTarget) );
+            this->getErrorBarsGroupShape(rVDataSeries, xTarget, true) );
 
         createErrorBar( xErrorBarsGroup_Shapes
             , rUnscaledLogicPosition, xErrorBarProp
diff --git a/chart2/source/view/inc/VDataSeries.hxx b/chart2/source/view/inc/VDataSeries.hxx
index 2d808c8..8f8aeb0 100644
--- a/chart2/source/view/inc/VDataSeries.hxx
+++ b/chart2/source/view/inc/VDataSeries.hxx
@@ -158,7 +158,7 @@ public:
     rtl::OUString       getCID() const;
     rtl::OUString       getSeriesParticle() const;
     rtl::OUString       getPointCID_Stub() const;
-    rtl::OUString       getErrorBarsCID() const;
+    rtl::OUString       getErrorBarsCID( bool bYError ) const;
     rtl::OUString       getLabelsCID() const;
     rtl::OUString       getLabelCID_Stub() const;
     rtl::OUString       getDataCurveCID( sal_Int32 nCurveIndex, bool bAverageLine ) const;
diff --git a/chart2/source/view/inc/VSeriesPlotter.hxx b/chart2/source/view/inc/VSeriesPlotter.hxx
index b393225..e82defa 100644
--- a/chart2/source/view/inc/VSeriesPlotter.hxx
+++ b/chart2/source/view/inc/VSeriesPlotter.hxx
@@ -331,7 +331,7 @@ protected: //methods
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >
         getErrorBarsGroupShape( VDataSeries& rDataSeries
             , const::com::sun::star:: uno::Reference<
-                ::com::sun::star::drawing::XShapes >& xTarget );
+                ::com::sun::star::drawing::XShapes >& xTarget, bool bYError );
 
     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >
         createDataLabel( const ::com::sun::star::uno::Reference<
diff --git a/chart2/source/view/main/VDataSeries.cxx b/chart2/source/view/main/VDataSeries.cxx
index 259d2fd..de9e1d2 100644
--- a/chart2/source/view/main/VDataSeries.cxx
+++ b/chart2/source/view/main/VDataSeries.cxx
@@ -393,9 +393,10 @@ rtl::OUString VDataSeries::getPointCID_Stub() const
 {
     return m_aPointCID_Stub;
 }
-rtl::OUString VDataSeries::getErrorBarsCID() const
+rtl::OUString VDataSeries::getErrorBarsCID(bool bYError) const
 {
-    rtl::OUString aChildParticle( ObjectIdentifier::getStringForType( OBJECTTYPE_DATA_ERRORS ) );
+    rtl::OUString aChildParticle( ObjectIdentifier::getStringForType(
+                                      bYError ? OBJECTTYPE_DATA_ERRORS_Y : OBJECTTYPE_DATA_ERRORS_X ) );
     aChildParticle+=(C2U("="));
 
     return ObjectIdentifier::createClassifiedIdentifierForParticles(
commit 7eee4ece6822b99a90738bd4616023795294916d
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Fri Mar 16 18:36:56 2012 +0000

    Enable statistics if chart has any type of errorbars.

diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
index ee478ac..cd6b1f0 100644
--- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
+++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
@@ -160,7 +160,10 @@ void ObjectPropertiesDialogParameter::init( const uno::Reference< frame::XModel
         }
     }
 
-    if( OBJECTTYPE_DATA_ERRORS == m_eObjectType )
+    if( OBJECTTYPE_DATA_ERRORS == m_eObjectType ||
+            m_eObjectType == OBJECTTYPE_DATA_ERRORS_X ||
+            m_eObjectType == OBJECTTYPE_DATA_ERRORS_Y ||
+            m_eObjectType == OBJECTTYPE_DATA_ERRORS_Z)
         m_bHasStatisticProperties = true;
 
     if( OBJECTTYPE_AXIS == m_eObjectType )
commit 34cadd6397c6d1767bba431450976d4f4f0b100c
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Fri Mar 16 17:17:58 2012 +0000

    Specialize STR_OBJECT_ERROR_BARS for each errobar type.

diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
index cc9e6f6..8ede4c9 100644
--- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx
+++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx
@@ -284,16 +284,16 @@ rtl::OUString ObjectNameProvider::getName( ObjectType eObjectType, bool bPlural
                 aRet=String(SchResId(STR_OBJECT_LABEL));
                 break;
         case OBJECTTYPE_DATA_ERRORS:
-                aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe distinguish plural singular
+                aRet=String(SchResId(STR_OBJECT_ERROR_BARS_Y));
                 break;
         case OBJECTTYPE_DATA_ERRORS_X:
-                aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future
+                aRet=String(SchResId(STR_OBJECT_ERROR_BARS_X));
                 break;
         case OBJECTTYPE_DATA_ERRORS_Y:
-                aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future
+                aRet=String(SchResId(STR_OBJECT_ERROR_BARS_Y));
                 break;
         case OBJECTTYPE_DATA_ERRORS_Z:
-                aRet=String(SchResId(STR_OBJECT_ERROR_BARS));//@todo? maybe specialize in future
+                aRet=String(SchResId(STR_OBJECT_ERROR_BARS_Z));
                 break;
         case OBJECTTYPE_DATA_AVERAGE_LINE:
                 aRet=String(SchResId(STR_OBJECT_AVERAGE_LINE));
diff --git a/chart2/source/controller/dialogs/Strings.src b/chart2/source/controller/dialogs/Strings.src
index 5a3a500..067c106 100644
--- a/chart2/source/controller/dialogs/Strings.src
+++ b/chart2/source/controller/dialogs/Strings.src
@@ -331,9 +331,19 @@ String STR_OBJECT_CURVE_EQUATION
     Text[ en-US ] = "Equation";
 };
 
-String STR_OBJECT_ERROR_BARS
+String STR_OBJECT_ERROR_BARS_X
 {
-    Text [ en-US ] = "Error Bars";
+    Text [ en-US ] = "X Error Bars";
+};
+
+String STR_OBJECT_ERROR_BARS_Y
+{
+    Text [ en-US ] = "Y Error Bars";
+};
+
+String STR_OBJECT_ERROR_BARS_Z
+{
+    Text [ en-US ] = "Z Error Bars";
 };
 String STR_OBJECT_STOCK_LOSS
 {
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index 9fc38dd..c4efa90 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -484,7 +484,8 @@ void ChartController::executeDispatch_InsertErrorBars( bool bYError )
     {
         UndoLiveUpdateGuard aUndoGuard(
             ActionDescriptionProvider::createDescription(
-                ActionDescriptionProvider::INSERT, String( SchResId( STR_OBJECT_ERROR_BARS ))),
+                ActionDescriptionProvider::INSERT,
+                String( SchResId( bYError ? STR_OBJECT_ERROR_BARS_Y : STR_OBJECT_ERROR_BARS_X ))),
             m_xUndoManager );
 
         // add error bars with standard deviation
diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx
index e1a2279..9da159c 100644
--- a/chart2/source/controller/main/ChartController_Tools.cxx
+++ b/chart2/source/controller/main/ChartController_Tools.cxx
@@ -723,7 +723,7 @@ bool ChartController::executeDispatch_Delete()
                     // using assignment for broken gcc 3.3
                     UndoGuard aUndoGuard = UndoGuard(
                         ActionDescriptionProvider::createDescription(
-                            ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_ERROR_BARS ))),
+                            ActionDescriptionProvider::DELETE, String( SchResId( STR_OBJECT_ERROR_BARS_Y ))),
                         m_xUndoManager );
                     {
                         ControllerLockGuard aCtlLockGuard( xModel );
diff --git a/chart2/source/inc/Strings.hrc b/chart2/source/inc/Strings.hrc
index e1af6d6..82f6937 100644
--- a/chart2/source/inc/Strings.hrc
+++ b/chart2/source/inc/Strings.hrc
@@ -30,7 +30,7 @@
 // this includes no link dependency
 #include <svl/solar.hrc>
 
-//next free is 295
+//next free is 297
 //single free: 139
 
 //-----------------------------------------------------------------------------
@@ -179,7 +179,9 @@
 #define STR_OBJECT_FOR_ALL_SERIES           (RID_APP_START + 289)
 
 #define STR_OBJECT_AVERAGE_LINE             (RID_APP_START + 174)
-#define STR_OBJECT_ERROR_BARS               (RID_APP_START + 175)
+#define STR_OBJECT_ERROR_BARS_X             (RID_APP_START + 175)
+#define STR_OBJECT_ERROR_BARS_Y             (RID_APP_START + 295)
+#define STR_OBJECT_ERROR_BARS_Z             (RID_APP_START + 296)
 #define STR_OBJECT_CURVE                    (RID_APP_START + 176)
 #define STR_OBJECT_CURVES                   (RID_APP_START + 130)
 
commit 701efd06e852c7fa956205cf59154a39621b31a4
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Thu Mar 15 22:20:03 2012 +0000

    Add chart errorbar type property.
    
    - Make StatisticsItemConverter work with X and Y errorbars.
    - Fill errorbar type property in ErrorBarResources.
    - Set default value of errorbar type property to Y bar.

diff --git a/chart2/source/controller/dialogs/res_ErrorBar.cxx b/chart2/source/controller/dialogs/res_ErrorBar.cxx
index 49359d4..823e9ad 100644
--- a/chart2/source/controller/dialogs/res_ErrorBar.cxx
+++ b/chart2/source/controller/dialogs/res_ErrorBar.cxx
@@ -684,6 +684,8 @@ sal_Bool ErrorBarResources::FillItemSet(SfxItemSet& rOutAttrs) const
         }
     }
 
+    rOutAttrs.Put( SfxBoolItem( SCHATTR_STAT_ERRORBAR_TYPE , m_eErrorBarType == ERROR_BAR_Y ));
+
     return sal_True;
 }
 
diff --git a/chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx b/chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx
index a15fdda..d3df3e6 100644
--- a/chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/StatisticsItemConverter.cxx
@@ -58,15 +58,15 @@ using namespace ::com::sun::star;
 namespace
 {
 
-uno::Reference< beans::XPropertySet > lcl_GetYErrorBar(
-    const uno::Reference< beans::XPropertySet > & xProp )
+uno::Reference< beans::XPropertySet > lcl_GetErrorBar(
+    const uno::Reference< beans::XPropertySet > & xProp, bool bYError )
 {
     uno::Reference< beans::XPropertySet > xResult;
 
     if( xProp.is())
         try
         {
-            ( xProp->getPropertyValue( C2U( "ErrorBarY" )) >>= xResult );
+        ( xProp->getPropertyValue( bYError ? C2U( "ErrorBarY" ) : C2U("ErrorBarX") ) >>= xResult );
         }
         catch( const uno::Exception & ex )
         {
@@ -250,8 +250,11 @@ bool StatisticsItemConverter::ApplySpecialItem(
         // SCHATTR_STAT_CONSTMINUS and SCHATTR_STAT_INDICATE
         case SCHATTR_STAT_KIND_ERROR:
         {
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet() ));
+                lcl_GetErrorBar( GetPropertySet(), bYError ));
 
             SvxChartKindError eErrorKind =
                 static_cast< const SvxChartKindErrorItem & >(
@@ -288,8 +291,8 @@ bool StatisticsItemConverter::ApplySpecialItem(
                 if( !xErrorBarProp.is() )
                 {
                     xErrorBarProp = lcl_GetDefaultErrorBar();
-                    GetPropertySet()->setPropertyValue(
-                        C2U( "ErrorBarY" ), uno::makeAny( xErrorBarProp ));
+                    GetPropertySet()->setPropertyValue( bYError ? C2U( "ErrorBarY" ) : C2U("ErrorBarX"),
+                                                        uno::makeAny( xErrorBarProp ));
                 }
 
                 xErrorBarProp->setPropertyValue( C2U( "ErrorBarStyle" ),
@@ -303,8 +306,11 @@ bool StatisticsItemConverter::ApplySpecialItem(
         case SCHATTR_STAT_BIGERROR:
         {
             OSL_FAIL( "Deprectaed item" );
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet()));
+                lcl_GetErrorBar( GetPropertySet(), bYError));
             bool bOldHasErrorBar = xErrorBarProp.is();
 
             double fValue =
@@ -328,8 +334,11 @@ bool StatisticsItemConverter::ApplySpecialItem(
 
         case SCHATTR_STAT_CONSTPLUS:
         {
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet()));
+                lcl_GetErrorBar( GetPropertySet(),bYError));
             bool bOldHasErrorBar = xErrorBarProp.is();
 
             double fValue =
@@ -349,8 +358,10 @@ bool StatisticsItemConverter::ApplySpecialItem(
 
         case SCHATTR_STAT_CONSTMINUS:
         {
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet()));
+                lcl_GetErrorBar( GetPropertySet(),bYError));
             bool bOldHasErrorBar = xErrorBarProp.is();
 
             double fValue =
@@ -436,8 +447,10 @@ bool StatisticsItemConverter::ApplySpecialItem(
 
         case SCHATTR_STAT_INDICATE:
         {
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet()));
+                lcl_GetErrorBar( GetPropertySet(),bYError));
             bool bOldHasErrorBar = xErrorBarProp.is();
 
             SvxChartIndicate eIndicate =
@@ -464,9 +477,10 @@ bool StatisticsItemConverter::ApplySpecialItem(
         case SCHATTR_STAT_RANGE_POS:
         case SCHATTR_STAT_RANGE_NEG:
         {
-            // @todo: also be able to deal with x-error bars
-            const bool bYError = true;
-            uno::Reference< chart2::data::XDataSource > xErrorBarSource( lcl_GetYErrorBar( GetPropertySet()), uno::UNO_QUERY );
+            const bool bYError =
+                static_cast<const SfxBoolItem&>(rItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< chart2::data::XDataSource > xErrorBarSource( lcl_GetErrorBar( GetPropertySet(), bYError),
+                                                                         uno::UNO_QUERY );
             uno::Reference< chart2::XChartDocument > xChartDoc( m_xModel, uno::UNO_QUERY );
             uno::Reference< chart2::data::XDataProvider > xDataProvider;
 
@@ -535,9 +549,11 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_KIND_ERROR:
         {
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
             SvxChartKindError eErrorKind = CHERROR_NONE;
             uno::Reference< beans::XPropertySet > xErrorBarProp(
-                lcl_GetYErrorBar( GetPropertySet()));
+                lcl_GetErrorBar( GetPropertySet(), bYError));
             if( xErrorBarProp.is() )
             {
                 sal_Int32 nStyle = 0;
@@ -570,7 +586,9 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_PERCENT:
         {
-            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetYErrorBar( GetPropertySet()));
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetErrorBar( GetPropertySet(),bYError));
             if( xErrorBarProp.is())
             {
                 double fPos, fNeg;
@@ -582,7 +600,9 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_BIGERROR:
         {
-            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetYErrorBar( GetPropertySet()));
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetErrorBar( GetPropertySet(),bYError));
             if( xErrorBarProp.is())
             {
                 double fPos, fNeg;
@@ -594,7 +614,9 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_CONSTPLUS:
         {
-            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetYErrorBar( GetPropertySet()));
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetErrorBar( GetPropertySet(),bYError));
             if( xErrorBarProp.is())
             {
                 double fPos, fNeg;
@@ -606,7 +628,9 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_CONSTMINUS:
         {
-            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetYErrorBar( GetPropertySet()));
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetErrorBar( GetPropertySet(),bYError));
             if( xErrorBarProp.is())
             {
                 double fPos, fNeg;
@@ -649,7 +673,9 @@ void StatisticsItemConverter::FillSpecialItem(
 
         case SCHATTR_STAT_INDICATE:
         {
-            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetYErrorBar( GetPropertySet()));
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< beans::XPropertySet > xErrorBarProp( lcl_GetErrorBar( GetPropertySet(),bYError));
             SvxChartIndicate eIndicate = CHINDICATE_BOTH;
             if( xErrorBarProp.is())
             {
@@ -678,12 +704,15 @@ void StatisticsItemConverter::FillSpecialItem(
         case SCHATTR_STAT_RANGE_POS:
         case SCHATTR_STAT_RANGE_NEG:
         {
-            uno::Reference< chart2::data::XDataSource > xErrorBarSource( lcl_GetYErrorBar( GetPropertySet()), uno::UNO_QUERY );
+            bool bYError =
+                static_cast<const SfxBoolItem&>(rOutItemSet.Get(SCHATTR_STAT_ERRORBAR_TYPE)).GetValue();
+            uno::Reference< chart2::data::XDataSource > xErrorBarSource( lcl_GetErrorBar( GetPropertySet(),bYError),
+                                                                         uno::UNO_QUERY );
             if( xErrorBarSource.is())
             {
                 uno::Reference< chart2::data::XDataSequence > xSeq(
                     StatisticsHelper::getErrorDataSequenceFromDataSource(
-                        xErrorBarSource, (nWhichId == SCHATTR_STAT_RANGE_POS) /*, true */ /* y */ ));
+                        xErrorBarSource, (nWhichId == SCHATTR_STAT_RANGE_POS), bYError ));
                 if( xSeq.is())
                     rOutItemSet.Put( SfxStringItem( nWhichId, String( xSeq->getSourceRangeRepresentation())));
             }
diff --git a/chart2/source/inc/chartview/ChartSfxItemIds.hxx b/chart2/source/inc/chartview/ChartSfxItemIds.hxx
index 48b638e..61251fe 100644
--- a/chart2/source/inc/chartview/ChartSfxItemIds.hxx
+++ b/chart2/source/inc/chartview/ChartSfxItemIds.hxx
@@ -71,7 +71,8 @@
 #define SCHATTR_STAT_INDICATE               (SCHATTR_STAT_START + 6)
 #define SCHATTR_STAT_RANGE_POS              (SCHATTR_STAT_START + 7)
 #define SCHATTR_STAT_RANGE_NEG              (SCHATTR_STAT_START + 8)
-#define SCHATTR_STAT_END                    SCHATTR_STAT_RANGE_NEG
+#define SCHATTR_STAT_ERRORBAR_TYPE          (SCHATTR_STAT_START + 9)
+#define SCHATTR_STAT_END                    SCHATTR_STAT_ERRORBAR_TYPE
 
 // --------------------------------------------------------
 // these attributes are for replacement of enum eChartStyle
diff --git a/chart2/source/view/main/ChartItemPool.cxx b/chart2/source/view/main/ChartItemPool.cxx
index cbf7069..289b187 100644
--- a/chart2/source/view/main/ChartItemPool.cxx
+++ b/chart2/source/view/main/ChartItemPool.cxx
@@ -83,6 +83,7 @@ ChartItemPool::ChartItemPool():
     ppPoolDefaults[SCHATTR_STAT_INDICATE            - SCHATTR_START] = new SvxChartIndicateItem (CHINDICATE_NONE, SCHATTR_STAT_INDICATE);
     ppPoolDefaults[SCHATTR_STAT_RANGE_POS           - SCHATTR_START] = new SfxStringItem (SCHATTR_STAT_RANGE_POS, String());
     ppPoolDefaults[SCHATTR_STAT_RANGE_NEG           - SCHATTR_START] = new SfxStringItem (SCHATTR_STAT_RANGE_NEG, String());
+    ppPoolDefaults[SCHATTR_STAT_ERRORBAR_TYPE - SCHATTR_START] = new SfxBoolItem(SCHATTR_STAT_ERRORBAR_TYPE, true);
 
     ppPoolDefaults[SCHATTR_STYLE_DEEP     - SCHATTR_START] = new SfxBoolItem (SCHATTR_STYLE_DEEP, 0);
     ppPoolDefaults[SCHATTR_STYLE_3D       - SCHATTR_START] = new SfxBoolItem (SCHATTR_STYLE_3D, 0);
commit 2971651cd9d06b8ebf49323e937b78c34cd75609
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Wed Mar 14 21:23:36 2012 +0000

    Add chart insert X errorbar toolbar and popup menu entries.
    
    - Dispatch the commands to the proper functions.

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 8fb8adf..018349a 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1111,6 +1111,8 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
         this->executeDispatch_InsertMenu_Trendlines();
     else if( aCommand.equals("InsertMenuMeanValues"))
         this->executeDispatch_InsertMenu_MeanValues();
+    else if( aCommand.equals("InsertMenuXErrorBars"))
+        this->executeDispatch_InsertErrorBars(false);
     else if( aCommand.equals("InsertMenuYErrorBars"))
         this->executeDispatch_InsertErrorBars(true);
     else if( aCommand.equals("InsertSymbol"))
@@ -1123,6 +1125,8 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
         this->executeDispatch_InsertMeanValue();
     else if( aCommand.equals("DeleteMeanValue"))
         this->executeDispatch_DeleteMeanValue();
+    else if( aCommand.equals("InsertXErrorBars"))
+        this->executeDispatch_InsertErrorBars(false);
     else if( aCommand.equals("InsertYErrorBars"))
         this->executeDispatch_InsertErrorBars(true);
     else if( aCommand.equals("DeleteYErrorBars"))
@@ -1509,6 +1513,7 @@ void ChartController::impl_initializeAccessible( const uno::Reference< lang::XIn
         ( "InsertR2Value" )      ( "DeleteR2Value" )
         ( "InsertMenuTrendlines" )  ( "InsertTrendline" )
         ( "InsertMenuMeanValues" ) ( "InsertMeanValue" )
+        ( "InsertMenuXErrorBars" )  ( "InsertXErrorBars" )
         ( "InsertMenuYErrorBars" )   ( "InsertYErrorBars" )
         ( "InsertDataLabels" )   ( "InsertDataLabel" )
         ( "DeleteTrendline" )    ( "DeleteMeanValue" )      ( "DeleteTrendlineEquation" )
diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx
index 6a2a18b..fbea9be 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -1063,6 +1063,7 @@ void ChartController::execute_Command( const CommandEvent& rCEvt )
                     bool bHasEquation = RegressionCurveHelper::hasEquation( xTrendline );
                     Reference< chart2::XRegressionCurve > xMeanValue( RegressionCurveHelper::getMeanValueLine( xCurveCnt ) );
                     bool bHasYErrorBars = StatisticsHelper::hasErrorBars( xSeries, true );
+                    bool bHasXErrorBars = StatisticsHelper::hasErrorBars( xSeries, false );
                     bool bHasDataLabelsAtSeries = DataSeriesHelper::hasDataLabelsAtSeries( xSeries );
                     bool bHasDataLabelsAtPoints = DataSeriesHelper::hasDataLabelsAtPoints( xSeries );
                     bool bHasDataLabelAtPoint = false;
@@ -1159,6 +1160,8 @@ void ChartController::execute_Command( const CommandEvent& rCEvt )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:InsertTrendlineEquation") );
                     if( !xMeanValue.is() )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:InsertMeanValue") );
+                    if( !bHasXErrorBars )
+                        lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:InsertXErrorBars"));
                     if( !bHasYErrorBars )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:InsertYErrorBars") );
 
@@ -1171,6 +1174,8 @@ void ChartController::execute_Command( const CommandEvent& rCEvt )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:DeleteTrendlineEquation") );
                     if( xMeanValue.is() )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:DeleteMeanValue") );
+                    if( bHasXErrorBars )
+                        lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:DeleteXErrorBars"));
                     if( bHasYErrorBars )
                         lcl_insertMenuCommand( xPopupMenu, xMenuEx, nUniqueId++, C2U(".uno:DeleteYErrorBars") );
 
diff --git a/chart2/uiconfig/menubar/menubar.xml b/chart2/uiconfig/menubar/menubar.xml
index a52dff8..353a8ad 100644
--- a/chart2/uiconfig/menubar/menubar.xml
+++ b/chart2/uiconfig/menubar/menubar.xml
@@ -51,6 +51,7 @@
                 <menu:menuitem menu:id=".uno:InsertMenuDataLabels" menu:label="" />
                 <menu:menuitem menu:id=".uno:InsertMenuTrendlines" menu:label="" />
                 <menu:menuitem menu:id=".uno:InsertMenuMeanValues" menu:label="" />
+                <menu:menuitem menu:id=".uno:InsertMenuXErrorBars" menu:label="" />
                 <menu:menuitem menu:id=".uno:InsertMenuYErrorBars" menu:label="" />
             <menu:menuseparator/>
                 <menu:menuitem menu:id=".uno:InsertSymbol" menu:helpid="10503" menu:label="" />
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
index 42aaad1..877a219 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
@@ -40,6 +40,11 @@
                     <value xml:lang="en-US">Mean ~Value Lines</value>
                 </prop>
             </node>
+            <node oor:name=".uno:InsertMenuXErrorBars" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">X Error ~Bars...</value>
+                </prop>
+            </node>
             <node oor:name=".uno:InsertMenuYErrorBars" oor:op="replace">
                 <prop oor:name="Label" oor:type="xs:string">
                     <value xml:lang="en-US">Y Error ~Bars...</value>
@@ -434,6 +439,11 @@
 
             <!-- error bars -->
 
+			<node oor:name=".uno:InsertXErrorBars" oor:op="replace">
+                <prop oor:name="Label" oor:type="xs:string">
+                    <value xml:lang="en-US">Insert X Error ~Bars...</value>
+                </prop>
+            </node>
             <node oor:name=".uno:InsertYErrorBars" oor:op="replace">
                 <prop oor:name="Label" oor:type="xs:string">
                     <value xml:lang="en-US">Insert Y Error ~Bars...</value>
commit cc7ce5a299289028f1e8ff823b8391edca7de587
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Wed Mar 14 20:25:36 2012 +0000

    Add correct tabpage to chart property dialog.
    
    - Added needed strings resources and ids.
    - Added code to handle X and Z errorbars.

diff --git a/chart2/source/controller/dialogs/ResourceIds.hrc b/chart2/source/controller/dialogs/ResourceIds.hrc
index b2f79fc..507b541 100644
--- a/chart2/source/controller/dialogs/ResourceIds.hrc
+++ b/chart2/source/controller/dialogs/ResourceIds.hrc
@@ -71,6 +71,7 @@
 
 #define TP_TRENDLINE    918
 #define TP_YERRORBAR    919
+#define TP_XERRORBAR    923
 
 //-----------------------------------------------------------------------------
 //listbox Ids:
diff --git a/chart2/source/controller/dialogs/Strings.src b/chart2/source/controller/dialogs/Strings.src
index 6796714..5a3a500 100644
--- a/chart2/source/controller/dialogs/Strings.src
+++ b/chart2/source/controller/dialogs/Strings.src
@@ -135,11 +135,21 @@ String STR_PAGE_TRENDLINE_TYPE
     Text[ en-US ] = "Type";
 };
 
+String STR_PAGE_XERROR_BARS
+{
+    Text[ en-US ] = "X Error Bars";
+};
+
 String STR_PAGE_YERROR_BARS
 {
     Text[ en-US ] = "Y Error Bars";
 };
 
+String STR_PAGE_ZERROR_BARS
+{
+    Text[ en-US ] = "Z Error Bars";
+};
+
 String STR_PAGE_ALIGNMENT
 {
     Text [ en-US ] = "Alignment" ;
diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
index 0b586c6..ee478ac 100644
--- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
+++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx
@@ -447,14 +447,20 @@ SchAttribTabDlg::SchAttribTabDlg(Window* pParent,
             break;
         }
 
-        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_X:
+            AddTabPage(TP_XERRORBAR, String(SchResId(STR_PAGE_XERROR_BARS)), ErrorBarsTabPage::Create, NULL);
+            AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_LINE)));
+            break;
+
+        case OBJECTTYPE_DATA_ERRORS:
         case OBJECTTYPE_DATA_ERRORS_Y:
-        case OBJECTTYPE_DATA_ERRORS_Z:
             AddTabPage(TP_YERRORBAR, String(SchResId(STR_PAGE_YERROR_BARS)), ErrorBarsTabPage::Create, NULL);
             AddTabPage(RID_SVXPAGE_LINE, String(SchResId(STR_PAGE_LINE)));
             break;
 
+        case OBJECTTYPE_DATA_ERRORS_Z:
+            break;
+
         case OBJECTTYPE_GRID:
         case OBJECTTYPE_SUBGRID:
         case OBJECTTYPE_DATA_AVERAGE_LINE:
@@ -616,7 +622,18 @@ void SchAttribTabDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage)
                aSet.Put (SvxNumberInfoItem( m_pNumberFormatter, (const sal_uInt16)SID_ATTR_NUMBERFORMAT_INFO));
             rPage.PageCreated(aSet);
             break;
-
+        case TP_XERRORBAR:
+        {
+            ErrorBarsTabPage * pTabPage = dynamic_cast< ErrorBarsTabPage * >( &rPage );
+            OSL_ASSERT( pTabPage );
+            if( pTabPage )
+            {
+                pTabPage->SetAxisMinorStepWidthForErrorBarDecimals( m_fAxisMinorStepWidthForErrorBarDecimals );
+                pTabPage->SetErrorBarType( ErrorBarResources::ERROR_BAR_X );
+                pTabPage->SetChartDocumentForRangeChoosing( m_pParameter->getDocument());
+            }
+            break;
+        }
         case TP_YERRORBAR:
         {
             ErrorBarsTabPage * pTabPage = dynamic_cast< ErrorBarsTabPage * >( &rPage );
diff --git a/chart2/source/inc/Strings.hrc b/chart2/source/inc/Strings.hrc
index de3c56a..e1af6d6 100644
--- a/chart2/source/inc/Strings.hrc
+++ b/chart2/source/inc/Strings.hrc
@@ -30,7 +30,7 @@
 // this includes no link dependency
 #include <svl/solar.hrc>
 
-//next free is 293
+//next free is 295
 //single free: 139
 
 //-----------------------------------------------------------------------------
@@ -232,7 +232,9 @@
 #define STR_PAGE_ILLUMINATION                (RID_APP_START + 237)
 
 #define STR_PAGE_TRENDLINE_TYPE              (RID_APP_START + 89)
+#define STR_PAGE_XERROR_BARS                 (RID_APP_START + 293)
 #define STR_PAGE_YERROR_BARS                 (RID_APP_START + 206)
+#define STR_PAGE_ZERROR_BARS                 (RID_APP_START + 294)
 #define STR_CONTROLTEXT_ERROR_BARS_FROM_DATA (RID_APP_START + 276)
 
 #define STR_DLG_CHART_WIZARD                 (RID_APP_START + 228)
commit 3e964eeb7ca1b662705b5d6ce54102d33f310705
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Wed Mar 14 18:40:44 2012 +0000

    Set chart objecttype depending on errorbar type.

diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
index 52e4a42..b21fd14 100644
--- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
+++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
@@ -67,7 +67,9 @@ InsertErrorBarsDialog::InsertErrorBarsDialog(
                                    /* bNoneAvailable = */ true, eType ))
 {
     FreeResource();
-    this->SetText( ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) );
+    ObjectType objType = eType == ErrorBarResources::ERROR_BAR_Y ? OBJECTTYPE_DATA_ERRORS : OBJECTTYPE_DATA_ERRORS_X;
+
+    this->SetText( ObjectNameProvider::getName_ObjectForAllSeries(objType) );
 
     m_apErrorBarResources->SetChartDocumentForRangeChoosing( xChartDocument );
 }
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index 09d8a64..9fc38dd 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -474,6 +474,8 @@ void ChartController::executeDispatch_InsertTrendline()
 
 void ChartController::executeDispatch_InsertErrorBars( bool bYError )
 {
+    ObjectType objType = bYError ? OBJECTTYPE_DATA_ERRORS_Y : OBJECTTYPE_DATA_ERRORS_X;
+
     //if a series is selected insert error bars for that series only:
     uno::Reference< chart2::XDataSeries > xSeries(
         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
@@ -502,7 +504,7 @@ void ChartController::executeDispatch_InsertErrorBars( bool bYError )
         aItemConverter.FillItemSet( aItemSet );
         ObjectPropertiesDialogParameter aDialogParameter = ObjectPropertiesDialogParameter(
             ObjectIdentifier::createClassifiedIdentifierWithParent(
-                OBJECTTYPE_DATA_ERRORS, ::rtl::OUString(), m_aSelection.getSelectedCID()));
+                objType, ::rtl::OUString(), m_aSelection.getSelectedCID()));
         aDialogParameter.init( getModel() );
         ViewElementListProvider aViewElementListProvider( m_pDrawModelWrapper.get());
         SolarMutexGuard aGuard;
@@ -531,7 +533,7 @@ void ChartController::executeDispatch_InsertErrorBars( bool bYError )
         UndoGuard aUndoGuard(
             ActionDescriptionProvider::createDescription(
                 ActionDescriptionProvider::INSERT,
-                ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) ),
+                ObjectNameProvider::getName_ObjectForAllSeries( objType ) ),
             m_xUndoManager );
 
         try
commit 2ea77e4926edd4a01cd2ed969128b4ba24c0804c
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Mar 11 19:52:55 2012 +0000

    Display correct errorbar in InsertDialog.

diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index 4c63d31..09d8a64 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -546,7 +546,7 @@ void ChartController::executeDispatch_InsertErrorBars( bool bYError )
             InsertErrorBarsDialog aDlg(
                 m_pChartWindow, aItemSet,
                 uno::Reference< chart2::XChartDocument >( getModel(), uno::UNO_QUERY ),
-                ErrorBarResources::ERROR_BAR_Y);
+                bYError ? ErrorBarResources::ERROR_BAR_Y : ErrorBarResources::ERROR_BAR_X);
 
             aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
                 InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, rtl::OUString() ) );
commit 2a1d5a428d1957b238359f454989abd0329c9aa5
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Mar 11 18:02:36 2012 +0000

    Make executeDispatch_InsertYErrorBars a generic function.
    
    - Make the function usable for XError and YError bars.
    - Rename executeDispatch_InsertYErrorBars to executeDispatch_InsertErrorBars.
    - Add a new parameter that control the error bar direction.
    - Update arguments in callers.

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 3a18968..8fb8adf 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1112,7 +1112,7 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
     else if( aCommand.equals("InsertMenuMeanValues"))
         this->executeDispatch_InsertMenu_MeanValues();
     else if( aCommand.equals("InsertMenuYErrorBars"))
-        this->executeDispatch_InsertYErrorBars();
+        this->executeDispatch_InsertErrorBars(true);
     else if( aCommand.equals("InsertSymbol"))
          this->executeDispatch_InsertSpecialCharacter();
     else if( aCommand.equals("InsertTrendline"))
@@ -1124,7 +1124,7 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
     else if( aCommand.equals("DeleteMeanValue"))
         this->executeDispatch_DeleteMeanValue();
     else if( aCommand.equals("InsertYErrorBars"))
-        this->executeDispatch_InsertYErrorBars();
+        this->executeDispatch_InsertErrorBars(true);
     else if( aCommand.equals("DeleteYErrorBars"))
         this->executeDispatch_DeleteYErrorBars();
     else if( aCommand.equals("InsertTrendlineEquation"))
diff --git a/chart2/source/controller/main/ChartController.hxx b/chart2/source/controller/main/ChartController.hxx
index a1b80bd..4253e2d 100644
--- a/chart2/source/controller/main/ChartController.hxx
+++ b/chart2/source/controller/main/ChartController.hxx
@@ -629,7 +629,7 @@ private:
     void                executeDispatch_InsertMeanValue();
     void                executeDispatch_InsertTrendline();
     void                executeDispatch_InsertTrendlineEquation( bool bInsertR2=false );
-    void                executeDispatch_InsertYErrorBars();
+    void                executeDispatch_InsertErrorBars( bool bYError );
 
     void                executeDispatch_InsertR2Value();
     void                executeDispatch_DeleteR2Value();
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index a30d6d4..4c63d31 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -472,7 +472,7 @@ void ChartController::executeDispatch_InsertTrendline()
     }
 }
 
-void ChartController::executeDispatch_InsertYErrorBars()
+void ChartController::executeDispatch_InsertErrorBars( bool bYError )
 {
     //if a series is selected insert error bars for that series only:
     uno::Reference< chart2::XDataSeries > xSeries(
@@ -487,7 +487,9 @@ void ChartController::executeDispatch_InsertYErrorBars()
 
         // add error bars with standard deviation
         uno::Reference< beans::XPropertySet > xErrorBarProp(
-            StatisticsHelper::addErrorBars( xSeries, m_xCC, ::com::sun::star::chart::ErrorBarStyle::STANDARD_DEVIATION ));
+            StatisticsHelper::addErrorBars( xSeries, m_xCC,
+                                            ::com::sun::star::chart::ErrorBarStyle::STANDARD_DEVIATION,
+                                            bYError));
 
         // get an appropriate item converter
         wrapper::ErrorBarItemConverter aItemConverter(
commit 7d42654aa4e00b02940d2fcf60c2d803fc371556
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Mar 11 12:39:12 2012 +0000

    Merge InsertMenu_YErrorBar and InsertYErrorBar commands in chart controller.

diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index e9b4aba..3a18968 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1112,7 +1112,7 @@ bool lcl_isFormatObjectCommand( const rtl::OString& aCommand )
     else if( aCommand.equals("InsertMenuMeanValues"))
         this->executeDispatch_InsertMenu_MeanValues();
     else if( aCommand.equals("InsertMenuYErrorBars"))
-        this->executeDispatch_InsertMenu_YErrorBars();
+        this->executeDispatch_InsertYErrorBars();
     else if( aCommand.equals("InsertSymbol"))
          this->executeDispatch_InsertSpecialCharacter();
     else if( aCommand.equals("InsertTrendline"))
diff --git a/chart2/source/controller/main/ChartController.hxx b/chart2/source/controller/main/ChartController.hxx
index 72e13fa..a1b80bd 100644
--- a/chart2/source/controller/main/ChartController.hxx
+++ b/chart2/source/controller/main/ChartController.hxx
@@ -623,7 +623,6 @@ private:
     void                executeDispatch_InsertGrid();
 
     void                executeDispatch_InsertMenu_DataLabels();
-    void                executeDispatch_InsertMenu_YErrorBars();
     void                executeDispatch_InsertMenu_Trendlines();
     void                executeDispatch_InsertMenu_MeanValues();
 
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx
index 0a2b674..a30d6d4 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -338,58 +338,6 @@ void ChartController::executeDispatch_InsertMenu_DataLabels()
     }
 }
 
-void ChartController::executeDispatch_InsertMenu_YErrorBars()
-{
-    //if a series is selected insert error bars for that series only:
-    uno::Reference< chart2::XDataSeries > xSeries(
-        ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
-    if( xSeries.is())
-    {
-        executeDispatch_InsertYErrorBars();
-        return;
-    }
-
-    //if no series is selected insert error bars for all series
-    UndoGuard aUndoGuard(
-        ActionDescriptionProvider::createDescription(
-            ActionDescriptionProvider::INSERT, ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) ),
-        m_xUndoManager );
-
-    try
-    {
-        wrapper::AllSeriesStatisticsConverter aItemConverter(
-            getModel(), m_pDrawModelWrapper->GetItemPool() );
-        SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
-        aItemConverter.FillItemSet( aItemSet );
-
-        //prepare and open dialog
-        SolarMutexGuard aGuard;
-        InsertErrorBarsDialog aDlg(
-            m_pChartWindow, aItemSet,
-            uno::Reference< chart2::XChartDocument >( getModel(), uno::UNO_QUERY ),
-            ErrorBarResources::ERROR_BAR_Y);
-
-        aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
-            InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, rtl::OUString() ) );
-
-        if( aDlg.Execute() == RET_OK )
-        {
-            SfxItemSet aOutItemSet = aItemConverter.CreateEmptyItemSet();
-            aDlg.FillItemSet( aOutItemSet );
-
-            // lock controllers till end of block
-            ControllerLockGuard aCLGuard( getModel() );
-            bool bChanged = aItemConverter.ApplyItemSet( aOutItemSet );//model should be changed now
-            if( bChanged )
-                aUndoGuard.commit();
-        }
-    }
-    catch(const uno::RuntimeException& e)
-    {
-        ASSERT_EXCEPTION( e );
-    }
-}
-
 void ChartController::executeDispatch_InsertMeanValue()
 {
     UndoGuard aUndoGuard(
@@ -526,8 +474,10 @@ void ChartController::executeDispatch_InsertTrendline()
 
 void ChartController::executeDispatch_InsertYErrorBars()
 {
+    //if a series is selected insert error bars for that series only:
     uno::Reference< chart2::XDataSeries > xSeries(
         ObjectIdentifier::getDataSeriesForCID( m_aSelection.getSelectedCID(), getModel() ), uno::UNO_QUERY );
+
     if( xSeries.is())
     {
         UndoLiveUpdateGuard aUndoGuard(
@@ -557,7 +507,8 @@ void ChartController::executeDispatch_InsertYErrorBars()
         SchAttribTabDlg aDlg( m_pChartWindow, &aItemSet, &aDialogParameter, &aViewElementListProvider,
                               uno::Reference< util::XNumberFormatsSupplier >( getModel(), uno::UNO_QUERY ));
         aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
-            InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, m_aSelection.getSelectedCID()));
+            InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(),
+                                                                             m_xChartView, m_aSelection.getSelectedCID()));
 
         // note: when a user pressed "OK" but didn't change any settings in the
         // dialog, the SfxTabDialog returns "Cancel"
@@ -572,6 +523,49 @@ void ChartController::executeDispatch_InsertYErrorBars()
             aUndoGuard.commit();
         }
     }
+    else
+    {
+        //if no series is selected insert error bars for all series
+        UndoGuard aUndoGuard(
+            ActionDescriptionProvider::createDescription(
+                ActionDescriptionProvider::INSERT,
+                ObjectNameProvider::getName_ObjectForAllSeries( OBJECTTYPE_DATA_ERRORS ) ),
+            m_xUndoManager );
+
+        try
+        {
+            wrapper::AllSeriesStatisticsConverter aItemConverter(
+                getModel(), m_pDrawModelWrapper->GetItemPool() );
+            SfxItemSet aItemSet = aItemConverter.CreateEmptyItemSet();
+            aItemConverter.FillItemSet( aItemSet );
+
+            //prepare and open dialog
+            SolarMutexGuard aGuard;
+            InsertErrorBarsDialog aDlg(
+                m_pChartWindow, aItemSet,
+                uno::Reference< chart2::XChartDocument >( getModel(), uno::UNO_QUERY ),
+                ErrorBarResources::ERROR_BAR_Y);
+
+            aDlg.SetAxisMinorStepWidthForErrorBarDecimals(
+                InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( getModel(), m_xChartView, rtl::OUString() ) );
+
+            if( aDlg.Execute() == RET_OK )
+            {
+                SfxItemSet aOutItemSet = aItemConverter.CreateEmptyItemSet();
+                aDlg.FillItemSet( aOutItemSet );
+
+                // lock controllers till end of block
+                ControllerLockGuard aCLGuard( getModel() );
+                bool bChanged = aItemConverter.ApplyItemSet( aOutItemSet );//model should be changed now
+                if( bChanged )
+                    aUndoGuard.commit();
+            }
+        }
+        catch(const uno::RuntimeException& e)
+        {
+            ASSERT_EXCEPTION( e );
+        }
+    }
 }
 
 void ChartController::executeDispatch_InsertTrendlineEquation( bool bInsertR2 )
commit 68e482e9d8e29944a00fb53959f2e728e78a9782
Author: Rafael Dominguez <venccsralph at gmail.com>
Date:   Sun Mar 11 12:08:58 2012 +0000

    Create respective error bars in areachart when creating shapes.

diff --git a/chart2/source/view/charttypes/AreaChart.cxx b/chart2/source/view/charttypes/AreaChart.cxx
index 8aaaf23..2c2e827 100644
--- a/chart2/source/view/charttypes/AreaChart.cxx
+++ b/chart2/source/view/charttypes/AreaChart.cxx
@@ -836,7 +836,7 @@ void AreaChart::createShapes()
                     if( !bIsVisible )
                         continue;
 
-                    bool bCreateErrorBar = false;
+                    bool bCreateYErrorBar = false, bCreateXErrorBar = false;
                     {
                         uno::Reference< beans::XPropertySet > xErrorBarProp(pSeries->getYErrorBarProperties(nIndex));
                         if( xErrorBarProp.is() )
@@ -845,14 +845,25 @@ void AreaChart::createShapes()
                             bool bShowNegative = false;
                             xErrorBarProp->getPropertyValue( C2U( "ShowPositiveError" )) >>= bShowPositive;
                             xErrorBarProp->getPropertyValue( C2U( "ShowNegativeError" )) >>= bShowNegative;
-                            bCreateErrorBar = bShowPositive || bShowNegative;
+                            bCreateYErrorBar = bShowPositive || bShowNegative;
+                        }
+
+                        xErrorBarProp = pSeries->getXErrorBarProperties(nIndex);
+                        if ( xErrorBarProp.is() )
+                        {
+                            bool bShowPositive = false;
+                            bool bShowNegative = false;
+                            xErrorBarProp->getPropertyValue( C2U( "ShowPositiveError" )) >>= bShowPositive;

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list