chart2/source/controller/inc/ChartController.hxx                   |    3 +
 chart2/source/controller/main/ChartController.cxx                  |    5 +
 chart2/source/controller/main/ChartController_Insert.cxx           |   26 
++++++++++
 chart2/source/controller/main/ChartController_Window.cxx           |   19 
+++++--
 chart2/source/controller/main/ControllerCommandDispatch.cxx        |    8 +++
 chart2/source/model/main/DataTable.cxx                             |    6 +-
 officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu |   11 ++++
 7 files changed, 71 insertions(+), 7 deletions(-)

New commits:
commit cdec7c46c8e231efe1022149cf2eb73cbb3bbede
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Fri Jul 29 15:49:31 2022 +0200
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Sat Aug 20 23:24:02 2022 +0200

    chart2: DataTable set properties to default to false
    
    Change-Id: If8caf59629327b623b2630776b1e650cbe4fbed1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138259
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 5861af0da5179689870d5b4f5ff56a5ea0a79901)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138528
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/chart2/source/model/main/DataTable.cxx 
b/chart2/source/model/main/DataTable.cxx
index f9c8f36fac10..b592bb147f32 100644
--- a/chart2/source/model/main/DataTable.cxx
+++ b/chart2/source/model/main/DataTable.cxx
@@ -66,10 +66,10 @@ private:
         ::chart::CharacterProperties::AddDefaultsToMap(aMap);
 
         ::chart::PropertyHelper::setPropertyValueDefault(aMap, 
DataTableProperty_HorizontalBorder,
-                                                         true);
+                                                         false);
         ::chart::PropertyHelper::setPropertyValueDefault(aMap, 
DataTableProperty_VerticalBorder,
-                                                         true);
-        ::chart::PropertyHelper::setPropertyValueDefault(aMap, 
DataTableProperty_Outilne, true);
+                                                         false);
+        ::chart::PropertyHelper::setPropertyValueDefault(aMap, 
DataTableProperty_Outilne, false);
         ::chart::PropertyHelper::setPropertyValueDefault(aMap, 
DataTableProperty_Keys, false);
 
         ::chart::PropertyHelper::setPropertyValue(
commit aed3b2e7ae5d055700d0d18ed3b9bc613a2fb74f
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Fri Jul 1 23:03:53 2022 +0200
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Sat Aug 20 23:23:54 2022 +0200

    chart2: InsertDataTable and DeleteDataTable for context menu
    
    Change-Id: I8ef0698252209af01b0741a59dec70f845f0c965
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138258
    Tested-by: Tomaž Vajngerl <qui...@gmail.com>
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>
    (cherry picked from commit 0c984c4dbe36a58859b09924e98fcf8ba8ed2d75)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138527
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/chart2/source/controller/inc/ChartController.hxx 
b/chart2/source/controller/inc/ChartController.hxx
index 5e74cec917ce..d9691aa2e577 100644
--- a/chart2/source/controller/inc/ChartController.hxx
+++ b/chart2/source/controller/inc/ChartController.hxx
@@ -438,6 +438,9 @@ private:
     void executeDispatch_OpenLegendDialog();
     void executeDispatch_InsertAxes();
     void executeDispatch_InsertGrid();
+
+    void executeDispatch_InsertDataTable();
+    void executeDispatch_DeleteDataTable();
     void executeDispatch_OpenInsertDataTableDialog();
 
     void executeDispatch_InsertMenu_DataLabels();
diff --git a/chart2/source/controller/main/ChartController.cxx 
b/chart2/source/controller/main/ChartController.cxx
index a61d84af0e9f..2e7185fdbd68 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -1228,6 +1228,10 @@ void SAL_CALL ChartController::dispatch(
         this->executeDispatch_DeleteMajorGrid();
     else if( aCommand == "DeleteMinorGrid" )
         this->executeDispatch_DeleteMinorGrid();
+    else if( aCommand == "InsertDataTable" )
+         this->executeDispatch_InsertDataTable();
+    else if( aCommand == "DeleteDataTable" )
+         this->executeDispatch_DeleteDataTable();
     //format objects
     else if( aCommand == "FormatSelection" )
         this->executeDispatch_ObjectProperties();
@@ -1628,6 +1632,7 @@ const o3tl::sorted_vector< OUString >& 
ChartController::impl_getAvailableCommand
         "DeleteXErrorBars",   "DeleteYErrorBars",
         "DeleteDataLabels",   "DeleteDataLabel",
         "InsertMenuDataTable",
+        "InsertDataTable", "DeleteDataTable",
         //format objects
         "FormatSelection",     "TransformDialog",
         "DiagramType",        "View3D",
diff --git a/chart2/source/controller/main/ChartController_Insert.cxx 
b/chart2/source/controller/main/ChartController_Insert.cxx
index 6f3b4df600ea..40f0675d76af 100644
--- a/chart2/source/controller/main/ChartController_Insert.cxx
+++ b/chart2/source/controller/main/ChartController_Insert.cxx
@@ -225,6 +225,32 @@ void 
ChartController::executeDispatch_OpenInsertDataTableDialog()
     }
 }
 
+void ChartController::executeDispatch_InsertDataTable()
+{
+    SolarMutexGuard aGuard;
+    uno::Reference<chart2::XDiagram> xDiagram = 
ChartModelHelper::findDiagram(getModel());
+    auto xDataTable = xDiagram->getDataTable();
+    if (!xDataTable.is())
+    {
+        uno::Reference<chart2::XDataTable> xNewDataTable(new DataTable);
+        if (xNewDataTable.is())
+        {
+            xDiagram->setDataTable(xNewDataTable);
+        }
+    }
+}
+
+void ChartController::executeDispatch_DeleteDataTable()
+{
+    SolarMutexGuard aGuard;
+    uno::Reference<chart2::XDiagram> xDiagram = 
ChartModelHelper::findDiagram(getModel());
+    auto xDataTable = xDiagram->getDataTable();
+    if (xDataTable.is())
+    {
+        xDiagram->setDataTable(uno::Reference<chart2::XDataTable>());
+    }
+}
+
 void ChartController::executeDispatch_InsertTitles()
 {
     UndoGuard aUndoGuard(
diff --git a/chart2/source/controller/main/ChartController_Window.cxx 
b/chart2/source/controller/main/ChartController_Window.cxx
index 92a7f9f16851..cc8125057a09 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -1021,14 +1021,19 @@ void ChartController::execute_Command( const 
CommandEvent& rCEvt )
             aMenuName = m_pDrawViewWrapper->IsTextEdit() ? 
std::u16string_view( u"drawtext" ) : std::u16string_view( u"draw" );
         else
         {
+            ObjectType eObjectType = ObjectIdentifier::getObjectType( 
m_aSelection.getSelectedCID() );
+
             // todo: the context menu should be specified by an xml file in 
uiconfig
             if( xPopupMenu.is())
             {
                 sal_Int16 nUniqueId = 1;
-                lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Cut" );
-                lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Copy" );
-                lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Paste" );
-                xPopupMenu->insertSeparator( -1 );
+                if (eObjectType != OBJECTTYPE_DATA_TABLE)
+                {
+                    lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:Cut" 
);
+                    lcl_insertMenuCommand( xPopupMenu, nUniqueId++, 
".uno:Copy" );
+                    lcl_insertMenuCommand( xPopupMenu, nUniqueId++, 
".uno:Paste" );
+                    xPopupMenu->insertSeparator( -1 );
+                }
 
                 ObjectType eObjectType = ObjectIdentifier::getObjectType( 
m_aSelection.getSelectedCID() );
                 Reference< XDiagram > xDiagram = 
ChartModelHelper::findDiagram( getModel() );
@@ -1237,8 +1242,14 @@ void ChartController::execute_Command( const 
CommandEvent& rCEvt )
                             lcl_insertMenuCommand( xPopupMenu, nUniqueId++, 
".uno:DeleteMajorGrid" );
                         if( bIsMinorGridVisible && !bIsSecondaryAxis )
                             lcl_insertMenuCommand( xPopupMenu, nUniqueId++, 
".uno:DeleteMinorGrid" );
+                        if (bIsAxisVisible)
+                            lcl_insertMenuCommand(xPopupMenu,  nUniqueId++, 
".uno:InsertDataTable");
                     }
                 }
+                else if (eObjectType == OBJECTTYPE_DATA_TABLE)
+                {
+                    lcl_insertMenuCommand(xPopupMenu,  nUniqueId++, 
".uno:DeleteDataTable");
+                }
 
                 if( eObjectType == OBJECTTYPE_DATA_STOCK_LOSS )
                     lcl_insertMenuCommand( xPopupMenu, nUniqueId++, 
".uno:FormatStockGain" );
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx 
b/chart2/source/controller/main/ControllerCommandDispatch.cxx
index 263f4551c82d..45a129c639ff 100644
--- a/chart2/source/controller/main/ControllerCommandDispatch.cxx
+++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx
@@ -364,6 +364,8 @@ struct ModelState
 
     bool bSupportsStatistics;
     bool bSupportsAxes;
+
+    bool bDataTable = false;
 };
 
 ModelState::ModelState() :
@@ -449,6 +451,8 @@ void ModelState::update( const Reference< frame::XModel > & 
xModel )
     bHasLegend = LegendHelper::hasLegend( xDiagram );
     bHasWall = DiagramHelper::isSupportingFloorAndWall( xDiagram );
     bHasFloor = bHasWall && bIsThreeD;
+
+    bDataTable = xDiagram.is() && xDiagram->getDataTable().is();
 }
 
 bool ModelState::HasAnyAxis() const
@@ -706,6 +710,10 @@ void ControllerCommandDispatch::updateCommandAvailability()
     m_aCommandAvailability[ ".uno:FormatMinorGrid" ] = bIsWritable;
     m_aCommandAvailability[ ".uno:InsertMinorGrid" ] = bIsWritable;
     m_aCommandAvailability[ ".uno:DeleteMinorGrid" ] = bIsWritable;
+
+    // data table
+    m_aCommandAvailability[ ".uno:InsertDataTable" ] = bIsWritable && 
bModelStateIsValid && !m_apModelState->bDataTable;
+    m_aCommandAvailability[ ".uno:DeleteDataTable" ] = bIsWritable && 
bModelStateIsValid && m_apModelState->bDataTable;
 }
 
 bool ControllerCommandDispatch::commandAvailable( const OUString & rCommand )
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
index cb4a5dc728d0..453b96cf86c5 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/ChartCommands.xcu
@@ -504,6 +504,17 @@
           <value xml:lang="en-US">Format Single Data Label...</value>
         </prop>
       </node>
+      <!-- data table -->
+      <node oor:name=".uno:InsertDataTable" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Insert Data Table</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:DeleteDataTable" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Delete Data Table</value>
+        </prop>
+      </node>
       <!-- data series and point -->
       <node oor:name=".uno:FormatDataSeries" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">

Reply via email to