summaryrefslogtreecommitdiff
path: root/chart2/source/controller/chartapiwrapper
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/controller/chartapiwrapper')
-rw-r--r--chart2/source/controller/chartapiwrapper/AxisWrapper.cxx36
-rw-r--r--chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx58
-rw-r--r--chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx24
-rw-r--r--chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx31
-rw-r--r--chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx160
-rw-r--r--chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx18
-rw-r--r--chart2/source/controller/chartapiwrapper/LegendWrapper.cxx4
-rw-r--r--chart2/source/controller/chartapiwrapper/TitleWrapper.cxx32
-rw-r--r--chart2/source/controller/chartapiwrapper/TitleWrapper.hxx3
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx1
-rw-r--r--chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx2
11 files changed, 253 insertions, 116 deletions
diff --git a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
index 53906a67b..73d6e99d4 100644
--- a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx
@@ -149,43 +149,43 @@ void lcl_AddPropertiesToVector(
Property( C2U( "AutoMax" ),
PROP_AXIS_AUTO_MAX,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "AutoMin" ),
PROP_AXIS_AUTO_MIN,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "AutoStepMain" ),
PROP_AXIS_AUTO_STEPMAIN,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "AutoStepHelp" ),
PROP_AXIS_AUTO_STEPHELP,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "Logarithmic" ),
PROP_AXIS_LOGARITHMIC,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "ReverseDirection" ),
PROP_AXIS_REVERSEDIRECTION,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
//todo: this property is missing in the API
rOutProperties.push_back(
@@ -219,8 +219,8 @@ void lcl_AddPropertiesToVector(
Property( C2U( "AutoOrigin" ),
PROP_AXIS_AUTO_ORIGIN,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
//Properties for interval marks:
rOutProperties.push_back(
@@ -312,15 +312,15 @@ void lcl_AddPropertiesToVector(
Property( C2U( "Overlap" ),
PROP_AXIS_OVERLAP,
::getCppuType( reinterpret_cast< const sal_Int32 * >(0)),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "GapWidth" ),
PROP_AXIS_GAP_WIDTH,
::getCppuType( reinterpret_cast< const sal_Int32 * >(0)),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
}
const Sequence< Property > & lcl_GetPropertySequence()
diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
index a2c7ed5a5..bada356de 100644
--- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
+++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
@@ -38,6 +38,7 @@
#include "chartview/ExplicitValueProvider.hxx"
#include "chartview/DrawModelWrapper.hxx"
#include "AxisHelper.hxx"
+#include "DiagramHelper.hxx"
using namespace ::com::sun::star;
using namespace ::com::sun::star::chart2;
@@ -118,7 +119,7 @@ Reference< chart2::XDiagram > Chart2ModelContact::getChart2Diagram() const
return ChartModelHelper::findDiagram( this->getChartModel() );
}
-ExplicitValueProvider* Chart2ModelContact::getExplicitValueProvider() const
+uno::Reference< lang::XUnoTunnel > Chart2ModelContact::getChartView() const
{
if(!m_xChartView.is())
{
@@ -128,7 +129,12 @@ ExplicitValueProvider* Chart2ModelContact::getExplicitValueProvider() const
if( xFact.is() )
m_xChartView = Reference< lang::XUnoTunnel >( xFact->createInstance( CHART_VIEW_SERVICE_NAME ), uno::UNO_QUERY );
}
+ return m_xChartView;
+}
+ExplicitValueProvider* Chart2ModelContact::getExplicitValueProvider() const
+{
+ getChartView();
if(!m_xChartView.is())
return 0;
@@ -192,30 +198,54 @@ awt::Size Chart2ModelContact::GetPageSize() const
return ChartModelHelper::getPageSize(m_xChartModel);
}
-awt::Rectangle Chart2ModelContact::GetDiagramRectangleInclusive() const
+awt::Rectangle Chart2ModelContact::SubstractAxisTitleSizes( const awt::Rectangle& rPositionRect )
{
- awt::Rectangle aRect;
+ awt::Rectangle aRect = ExplicitValueProvider::substractAxisTitleSizes(
+ m_xChartModel, getChartView(), rPositionRect );
+ return aRect;
+}
+
+awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingTitle() const
+{
+ awt::Rectangle aRect( GetDiagramRectangleIncludingAxes() );
- ExplicitValueProvider* pProvider( getExplicitValueProvider() );
- if( pProvider )
- {
- aRect = pProvider->getRectangleOfObject( lcl_getCIDForDiagram( m_xChartModel ) );
- }
//add axis title sizes to the diagram size
- aRect = ExplicitValueProvider::calculateDiagramPositionAndSizeInclusiveTitle(
- m_xChartModel, m_xChartView, aRect );
+ aRect = ExplicitValueProvider::addAxisTitleSizes(
+ m_xChartModel, getChartView(), aRect );
return aRect;
}
-awt::Size Chart2ModelContact::GetDiagramSizeInclusive() const
+awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingAxes() const
{
- return ToSize( this->GetDiagramRectangleInclusive() );
+ awt::Rectangle aRect(0,0,0,0);
+ uno::Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartModel ) );
+
+ if( DiagramPositioningMode_INCLUDING == DiagramHelper::getDiagramPositioningMode( xDiagram ) )
+ aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel);
+ else
+ {
+ ExplicitValueProvider* pProvider( getExplicitValueProvider() );
+ if( pProvider )
+ aRect = pProvider->getRectangleOfObject( C2U("PlotAreaIncludingAxes") );
+ }
+ return aRect;
}
-awt::Point Chart2ModelContact::GetDiagramPositionInclusive() const
+awt::Rectangle Chart2ModelContact::GetDiagramRectangleExcludingAxes() const
{
- return ToPoint( this->GetDiagramRectangleInclusive() );
+ awt::Rectangle aRect(0,0,0,0);
+ uno::Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartModel ) );
+
+ if( DiagramPositioningMode_EXCLUDING == DiagramHelper::getDiagramPositioningMode( xDiagram ) )
+ aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel);
+ else
+ {
+ ExplicitValueProvider* pProvider( getExplicitValueProvider() );
+ if( pProvider )
+ aRect = pProvider->getDiagramRectangleExcludingAxes();
+ }
+ return aRect;
}
awt::Size Chart2ModelContact::GetLegendSize() const
diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx
index 68898d528..6f2420f0e 100644
--- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx
+++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx
@@ -93,15 +93,24 @@ public:
*/
::com::sun::star::awt::Size GetPageSize() const;
- /** Returns the size of the diagram object in logic coordinates inclusive
- the space reserved for axis titles.
+ /** calculates the current axes title sizes and substract that space them from the given recangle
*/
- ::com::sun::star::awt::Size GetDiagramSizeInclusive() const;
+ ::com::sun::star::awt::Rectangle SubstractAxisTitleSizes( const ::com::sun::star::awt::Rectangle& rPositionRect );
- /** Returns the position of the diagram in logic coordinates inclusive
- the space reserved for axis titles.
+ /** Returns the position and size of the diagram in logic coordinates (100th mm) including
+ the space used for axes including axes titles.
*/
- ::com::sun::star::awt::Point GetDiagramPositionInclusive() const;
+ ::com::sun::star::awt::Rectangle GetDiagramRectangleIncludingTitle() const;
+
+ /** Returns the position and size of the diagram in logic coordinates (100th mm) including
+ the space used for axes excluding axes titles.
+ */
+ ::com::sun::star::awt::Rectangle GetDiagramRectangleIncludingAxes() const;
+
+ /** Returns the position and size of the diagram in logic coordinates (100th mm) excluding
+ the space used for axes (inner plot area).
+ */
+ ::com::sun::star::awt::Rectangle GetDiagramRectangleExcludingAxes() const;
/** Returns the size of the object in logic coordinates.
*/
@@ -134,7 +143,8 @@ public:
private: //methods
ExplicitValueProvider* getExplicitValueProvider() const;
- ::com::sun::star::awt::Rectangle GetDiagramRectangleInclusive() const;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XUnoTunnel > getChartView() const;
public: //member
::com::sun::star::uno::Reference<
diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
index 8c3187234..7b4f72039 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
@@ -172,20 +172,20 @@ void lcl_AddPropertiesToVector(
Property( C2U( "HasMainTitle" ),
PROP_DOCUMENT_HAS_MAIN_TITLE,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "HasSubTitle" ),
PROP_DOCUMENT_HAS_SUB_TITLE,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
rOutProperties.push_back(
Property( C2U( "HasLegend" ),
PROP_DOCUMENT_HAS_LEGEND,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
// really needed?
rOutProperties.push_back(
@@ -198,8 +198,8 @@ void lcl_AddPropertiesToVector(
Property( C2U( "DataSourceLabelsInFirstColumn" ),
PROP_DOCUMENT_LABELS_IN_FIRST_COLUMN,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
//add-in
rOutProperties.push_back(
@@ -225,7 +225,8 @@ void lcl_AddPropertiesToVector(
Property( C2U( "RefreshAddInAllowed" ),
PROP_DOCUMENT_UPDATE_ADDIN,
::getBooleanCppuType(),
- beans::PropertyAttribute::BOUND ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::TRANSIENT ));
// table:null-date // i99104
rOutProperties.push_back(
@@ -757,6 +758,7 @@ Reference< drawing::XShape > SAL_CALL ChartDocumentWrapper::getTitle()
{
if( !m_xTitle.is() )
{
+ ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( m_spChart2ModelContact->getChart2Document(), uno::UNO_QUERY ));
m_xTitle = new TitleWrapper( TitleHelper::MAIN_TITLE, m_spChart2ModelContact );
}
return m_xTitle;
@@ -767,6 +769,7 @@ Reference< drawing::XShape > SAL_CALL ChartDocumentWrapper::getSubTitle()
{
if( !m_xSubTitle.is() )
{
+ ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( m_spChart2ModelContact->getChart2Document(), uno::UNO_QUERY ));
m_xSubTitle = new TitleWrapper( TitleHelper::SUB_TITLE, m_spChart2ModelContact );
}
return m_xSubTitle;
@@ -1514,6 +1517,16 @@ void SAL_CALL ChartDocumentWrapper::setDelegator(
const uno::Reference< uno::XInterface >& rDelegator )
throw (uno::RuntimeException)
{
+ if( m_bIsDisposed )
+ {
+ if( rDelegator.is() )
+ throw lang::DisposedException(
+ C2U("ChartDocumentWrapper is disposed" ),
+ static_cast< ::cppu::OWeakObject* >( this ));
+ else
+ return;
+ }
+
if( rDelegator.is())
{
m_xDelegator = rDelegator;
diff --git a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx
index 976a58a66..79424e79c 100644
--- a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx
@@ -59,6 +59,7 @@
#include "DisposeHelper.hxx"
#include <comphelper/InlineContainer.hxx>
#include "WrappedAutomaticPositionProperties.hxx"
+#include "CommonConverters.hxx"
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/chart2/XTitled.hpp>
@@ -737,49 +738,23 @@ Reference<
awt::Point SAL_CALL DiagramWrapper::getPosition()
throw (uno::RuntimeException)
{
- awt::Point aPosition;
-
- Reference< beans::XPropertySet > xProp( this->getInnerPropertySet() );
- if( xProp.is() )
- {
- bool bSet = false;
- chart2::RelativePosition aRelativePosition;
- uno::Any aAPosition( xProp->getPropertyValue( C2U( "RelativePosition" ) ) );
- if( aAPosition >>= aRelativePosition )
- {
- awt::Size aPageSize( m_spChart2ModelContact->GetPageSize() );
- aPosition.X = static_cast<sal_Int32>(aRelativePosition.Primary*aPageSize.Width);
- aPosition.Y = static_cast<sal_Int32>(aRelativePosition.Secondary*aPageSize.Height);
-
- aPosition = RelativePositionHelper::getUpperLeftCornerOfAnchoredObject(
- aPosition, DiagramWrapper::getSize(), aRelativePosition.Anchor );
-
- bSet = true;
- }
- if(!bSet)
- aPosition = m_spChart2ModelContact->GetDiagramPositionInclusive();
- }
-
+ awt::Point aPosition = ToPoint( m_spChart2ModelContact->GetDiagramRectangleIncludingAxes() );
return aPosition;
}
void SAL_CALL DiagramWrapper::setPosition( const awt::Point& aPosition )
throw (uno::RuntimeException)
{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
Reference< beans::XPropertySet > xProp( this->getInnerPropertySet() );
if( xProp.is() )
{
- if( aPosition.X < 0 || aPosition.Y < 0 )
+ if( aPosition.X < 0 || aPosition.Y < 0 || aPosition.X > 1 || aPosition.Y > 1 )
{
- if( !TitleHelper::getTitle( TitleHelper::X_AXIS_TITLE, m_spChart2ModelContact->getChartModel() ).is() &&
- !TitleHelper::getTitle( TitleHelper::Y_AXIS_TITLE, m_spChart2ModelContact->getChartModel() ).is() )
- {
- DBG_ERROR("DiagramWrapper::setPosition called with negative position -> automatic values are taken instead" );
- uno::Any aEmpty;
- xProp->setPropertyValue( C2U( "RelativePosition" ), aEmpty );
- return;
- }
- //else: The saved didagram size does include the axis title sizes thus the position and size could be negative
+ DBG_ERROR("DiagramWrapper::setPosition called with a position out of range -> automatic values are taken instead" );
+ uno::Any aEmpty;
+ xProp->setPropertyValue( C2U( "RelativePosition" ), aEmpty );
+ return;
}
awt::Size aPageSize( m_spChart2ModelContact->GetPageSize() );
@@ -789,31 +764,14 @@ void SAL_CALL DiagramWrapper::setPosition( const awt::Point& aPosition )
aRelativePosition.Primary = double(aPosition.X)/double(aPageSize.Width);
aRelativePosition.Secondary = double(aPosition.Y)/double(aPageSize.Height);
xProp->setPropertyValue( C2U( "RelativePosition" ), uno::makeAny(aRelativePosition) );
+ xProp->setPropertyValue( C2U( "PosSizeExcludeAxes" ), uno::makeAny(false) );
}
}
awt::Size SAL_CALL DiagramWrapper::getSize()
throw (uno::RuntimeException)
{
- awt::Size aSize;
-
- Reference< beans::XPropertySet > xProp( this->getInnerPropertySet() );
- if( xProp.is() )
- {
- bool bSet = false;
- chart2::RelativeSize aRelativeSize;
- uno::Any aASize( xProp->getPropertyValue( C2U( "RelativeSize" ) ) );
- if(aASize>>=aRelativeSize)
- {
- awt::Size aPageSize( m_spChart2ModelContact->GetPageSize() );
- aSize.Width = static_cast<sal_Int32>(aRelativeSize.Primary*aPageSize.Width);
- aSize.Height = static_cast<sal_Int32>(aRelativeSize.Secondary*aPageSize.Height);
- bSet = true;
- }
- if(!bSet)
- aSize = m_spChart2ModelContact->GetDiagramSizeInclusive();
- }
-
+ awt::Size aSize = ToSize( m_spChart2ModelContact->GetDiagramRectangleIncludingAxes() );
return aSize;
}
@@ -821,6 +779,7 @@ void SAL_CALL DiagramWrapper::setSize( const awt::Size& aSize )
throw (beans::PropertyVetoException,
uno::RuntimeException)
{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
Reference< beans::XPropertySet > xProp( this->getInnerPropertySet() );
if( xProp.is() )
{
@@ -832,18 +791,14 @@ void SAL_CALL DiagramWrapper::setSize( const awt::Size& aSize )
if( aRelativeSize.Primary > 1 || aRelativeSize.Secondary > 1 )
{
- if( !TitleHelper::getTitle( TitleHelper::X_AXIS_TITLE, m_spChart2ModelContact->getChartModel() ).is() &&
- !TitleHelper::getTitle( TitleHelper::Y_AXIS_TITLE, m_spChart2ModelContact->getChartModel() ).is() )
- {
- DBG_ERROR("DiagramWrapper::setSize called with sizes bigger than page -> automatic values are taken instead" );
- uno::Any aEmpty;
- xProp->setPropertyValue( C2U( "RelativeSize" ), aEmpty );
- return;
- }
- //else: The saved didagram size does include the axis title sizes thus the position and size could be out of range
+ DBG_ERROR("DiagramWrapper::setSize called with sizes bigger than page -> automatic values are taken instead" );
+ uno::Any aEmpty;
+ xProp->setPropertyValue( C2U( "RelativeSize" ), aEmpty );
+ return;
}
xProp->setPropertyValue( C2U( "RelativeSize" ), uno::makeAny(aRelativeSize) );
+ xProp->setPropertyValue( C2U( "PosSizeExcludeAxes" ), uno::makeAny(false) );
}
}
@@ -854,6 +809,81 @@ OUString SAL_CALL DiagramWrapper::getShapeType()
return C2U( "com.sun.star.chart.Diagram" );
}
+// ____ XDiagramPositioning ____
+
+void SAL_CALL DiagramWrapper::setAutomaticDiagramPositioning() throw (uno::RuntimeException)
+{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
+ uno::Reference< beans::XPropertySet > xDiaProps( this->getDiagram(), uno::UNO_QUERY );
+ if( xDiaProps.is() )
+ {
+ xDiaProps->setPropertyValue( C2U( "RelativeSize" ), Any() );
+ xDiaProps->setPropertyValue( C2U( "RelativePosition" ), Any() );
+ }
+}
+::sal_Bool SAL_CALL DiagramWrapper::isAutomaticDiagramPositioning( ) throw (uno::RuntimeException)
+{
+ uno::Reference< beans::XPropertySet > xDiaProps( this->getDiagram(), uno::UNO_QUERY );
+ if( xDiaProps.is() )
+ {
+ Any aRelativeSize( xDiaProps->getPropertyValue( C2U( "RelativeSize" ) ) );
+ Any aRelativePosition( xDiaProps->getPropertyValue( C2U( "RelativePosition" ) ) );
+ if( aRelativeSize.hasValue() && aRelativePosition.hasValue() )
+ return false;
+ }
+ return true;
+}
+void SAL_CALL DiagramWrapper::setDiagramPositionExcludingAxes( const awt::Rectangle& rPositionRect ) throw (uno::RuntimeException)
+{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
+ DiagramHelper::setDiagramPositioning( m_spChart2ModelContact->getChartModel(), rPositionRect );
+ uno::Reference< beans::XPropertySet > xDiaProps( this->getDiagram(), uno::UNO_QUERY );
+ if( xDiaProps.is() )
+ xDiaProps->setPropertyValue(C2U("PosSizeExcludeAxes"), uno::makeAny(true) );
+}
+::sal_Bool SAL_CALL DiagramWrapper::isExcludingDiagramPositioning() throw (uno::RuntimeException)
+{
+ uno::Reference< beans::XPropertySet > xDiaProps( this->getDiagram(), uno::UNO_QUERY );
+ if( xDiaProps.is() )
+ {
+ Any aRelativeSize( xDiaProps->getPropertyValue( C2U( "RelativeSize" ) ) );
+ Any aRelativePosition( xDiaProps->getPropertyValue( C2U( "RelativePosition" ) ) );
+ if( aRelativeSize.hasValue() && aRelativePosition.hasValue() )
+ {
+ sal_Bool bPosSizeExcludeAxes = false;
+ xDiaProps->getPropertyValue( C2U( "PosSizeExcludeAxes" ) ) >>= bPosSizeExcludeAxes;
+ return bPosSizeExcludeAxes;
+ }
+ }
+ return false;
+}
+awt::Rectangle SAL_CALL DiagramWrapper::calculateDiagramPositionExcludingAxes( ) throw (uno::RuntimeException)
+{
+ return m_spChart2ModelContact->GetDiagramRectangleExcludingAxes();
+}
+void SAL_CALL DiagramWrapper::setDiagramPositionIncludingAxes( const awt::Rectangle& rPositionRect ) throw (uno::RuntimeException)
+{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
+ DiagramHelper::setDiagramPositioning( m_spChart2ModelContact->getChartModel(), rPositionRect );
+ uno::Reference< beans::XPropertySet > xDiaProps( this->getDiagram(), uno::UNO_QUERY );
+ if( xDiaProps.is() )
+ xDiaProps->setPropertyValue(C2U("PosSizeExcludeAxes"), uno::makeAny(false) );
+}
+awt::Rectangle SAL_CALL DiagramWrapper::calculateDiagramPositionIncludingAxes( ) throw (uno::RuntimeException)
+{
+ return m_spChart2ModelContact->GetDiagramRectangleIncludingAxes();
+}
+void SAL_CALL DiagramWrapper::setDiagramPositionIncludingAxesAndAxisTitles( const awt::Rectangle& rPositionRect ) throw (uno::RuntimeException)
+{
+ ControllerLockGuard aCtrlLockGuard( m_spChart2ModelContact->getChartModel() );
+ awt::Rectangle aRect( m_spChart2ModelContact->SubstractAxisTitleSizes(rPositionRect) );
+ DiagramWrapper::setDiagramPositionIncludingAxes( aRect );
+}
+::com::sun::star::awt::Rectangle SAL_CALL DiagramWrapper::calculateDiagramPositionIncludingAxesAndAxisTitles( ) throw (::com::sun::star::uno::RuntimeException)
+{
+ return m_spChart2ModelContact->GetDiagramRectangleIncludingTitle();
+}
+
// ____ XAxisZSupplier ____
Reference<
drawing::XShape > SAL_CALL DiagramWrapper::getZAxisTitle()
@@ -1221,7 +1251,13 @@ void WrappedDataRowSourceProperty::setPropertyValue( const Any& rOuterValue, con
{
::com::sun::star::chart::ChartDataRowSource eChartDataRowSource = ::com::sun::star::chart::ChartDataRowSource_ROWS;
if( ! (rOuterValue >>= eChartDataRowSource) )
- throw lang::IllegalArgumentException( C2U("Property DataRowSource requires ::com::sun::star::chart::ChartDataRowSource value"), 0, 0 );
+ {
+ sal_Int32 nNew = ::com::sun::star::chart::ChartDataRowSource_ROWS;
+ if( !(rOuterValue >>= nNew) )
+ throw lang::IllegalArgumentException( C2U("Property DataRowSource requires ::com::sun::star::chart::ChartDataRowSource value"), 0, 0 );
+ else
+ eChartDataRowSource = ::com::sun::star::chart::ChartDataRowSource(nNew);
+ }
m_aOuterValue = rOuterValue;
diff --git a/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx b/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx
index aa5334c08..1b4c81353 100644
--- a/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx
+++ b/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx
@@ -30,12 +30,13 @@
#include "WrappedPropertySet.hxx"
#include "ServiceMacros.hxx"
#include "DiagramHelper.hxx"
-#include <cppuhelper/implbase11.hxx>
+#include <cppuhelper/implbase12.hxx>
#include <comphelper/uno3.hxx>
#include <cppuhelper/interfacecontainer.hxx>
#include <com/sun/star/chart2/XChartDocument.hpp>
#include <com/sun/star/chart2/XDiagram.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/chart/XDiagramPositioning.hpp>
#include <com/sun/star/chart2/XDiagramProvider.hpp>
#include <com/sun/star/chart2/XChartTypeTemplate.hpp>
#include <com/sun/star/chart2/XChartTypeManager.hpp>
@@ -61,7 +62,7 @@ namespace wrapper
class Chart2ModelContact;
-class DiagramWrapper : public ::cppu::ImplInheritanceHelper11<
+class DiagramWrapper : public ::cppu::ImplInheritanceHelper12<
WrappedPropertySet
, ::com::sun::star::chart::XDiagram
, ::com::sun::star::chart::XAxisZSupplier
@@ -73,6 +74,7 @@ class DiagramWrapper : public ::cppu::ImplInheritanceHelper11<
, ::com::sun::star::lang::XServiceInfo
, ::com::sun::star::lang::XComponent
// , ::com::sun::star::lang::XEventListener
+ , ::com::sun::star::chart::XDiagramPositioning
, ::com::sun::star::chart2::XDiagramProvider
, ::com::sun::star::chart::XSecondAxisTitleSupplier
>
@@ -209,6 +211,18 @@ public:
// virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source )
// throw (::com::sun::star::uno::RuntimeException);
+ // ____ XDiagramPositioning ____
+
+ virtual void SAL_CALL setAutomaticDiagramPositioning( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Bool SAL_CALL isAutomaticDiagramPositioning( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDiagramPositionExcludingAxes( const ::com::sun::star::awt::Rectangle& PositionRect ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::sal_Bool SAL_CALL isExcludingDiagramPositioning( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL calculateDiagramPositionExcludingAxes( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDiagramPositionIncludingAxes( const ::com::sun::star::awt::Rectangle& PositionRect ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL calculateDiagramPositionIncludingAxes( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setDiagramPositionIncludingAxesAndAxisTitles( const ::com::sun::star::awt::Rectangle& PositionRect ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL calculateDiagramPositionIncludingAxesAndAxisTitles( ) throw (::com::sun::star::uno::RuntimeException);
+
// ____ XDiagramProvider ____
virtual ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XDiagram > SAL_CALL getDiagram()
diff --git a/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx b/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx
index ff584c84a..7d207fa6e 100644
--- a/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx
@@ -242,8 +242,8 @@ void lcl_AddPropertiesToVector(
Property( C2U( "Alignment" ),
PROP_LEGEND_ALIGNMENT,
::getCppuType( reinterpret_cast< const ::com::sun::star::chart::ChartLegendPosition * >(0)),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::MAYBEDEFAULT ));
+ //#i111967# no PropertyChangeEvent is fired on change so far
+ beans::PropertyAttribute::MAYBEDEFAULT ));
}
const Sequence< Property > & lcl_GetPropertySequence()
diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
index 1de93691d..f37668734 100644
--- a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx
@@ -30,6 +30,8 @@
#include "TitleWrapper.hxx"
#include "macros.hxx"
#include "ContainerHelper.hxx"
+#include "ControllerLockGuard.hxx"
+
#include <comphelper/InlineContainer.hxx>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/chart2/RelativePosition.hpp>
@@ -225,6 +227,9 @@ TitleWrapper::TitleWrapper( ::chart::TitleHelper::eTitleType eTitleType,
m_aEventListenerContainer( m_aMutex ),
m_eTitleType(eTitleType)
{
+ ControllerLockGuard aCtrlLockGuard( Reference< frame::XModel >( m_spChart2ModelContact->getChart2Document(), uno::UNO_QUERY ));
+ if( !getTitleObject().is() ) //#i83831# create an empty title at the model, thus references to properties can be mapped mapped correctly
+ TitleHelper::createTitle( m_eTitleType, OUString(), m_spChart2ModelContact->getChartModel(), m_spChart2ModelContact->m_xContext );
}
TitleWrapper::~TitleWrapper()
@@ -451,6 +456,33 @@ Any SAL_CALL TitleWrapper::getPropertyDefault( const OUString& rPropertyName )
return aRet;
}
+void SAL_CALL TitleWrapper::addPropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener )
+ throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
+{
+ sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
+ if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
+ {
+ Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY );
+ if( xPropSet.is() )
+ xPropSet->addPropertyChangeListener( rPropertyName, xListener );
+ }
+ else
+ WrappedPropertySet::addPropertyChangeListener( rPropertyName, xListener );
+}
+void SAL_CALL TitleWrapper::removePropertyChangeListener( const OUString& rPropertyName, const Reference< beans::XPropertyChangeListener >& xListener )
+ throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
+{
+ sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName );
+ if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) )
+ {
+ Reference< beans::XPropertySet > xPropSet( getFirstCharacterPropertySet(), uno::UNO_QUERY );
+ if( xPropSet.is() )
+ xPropSet->removePropertyChangeListener( rPropertyName, xListener );
+ }
+ else
+ WrappedPropertySet::removePropertyChangeListener( rPropertyName, xListener );
+}
+
// ================================================================================
//ReferenceSizePropertyProvider
diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx
index 932e4cdbd..835c69e2d 100644
--- a/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx
+++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx
@@ -104,6 +104,9 @@ protected:
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
diff --git a/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx
index a1093c286..ae27c41df 100644
--- a/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx
+++ b/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx
@@ -976,7 +976,6 @@ void WrappedStatisticPropertySetProperty::setValueToSeries(
const Reference< beans::XPropertySet >& /* xSeriesPropertySet */
, Reference< beans::XPropertySet > /* xNewValue */ ) const
{
- OSL_ENSURE( false, "Trying to set a read-only property" );
}
//-----------------------------------------------------------------------------
diff --git a/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx
index afe6f5525..3d6f9fc37 100644
--- a/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx
+++ b/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx
@@ -386,7 +386,6 @@ void WrappedSymbolBitmapURLProperty::setValueToSeries(
{
bool bMatchesPrefix =
aNewGraphicURL.matchAsciiL( RTL_CONSTASCII_STRINGPARAM( UNO_NAME_GRAPHOBJ_URLPREFIX ));
- OSL_ENSURE( bMatchesPrefix, "Invalid URL for Symbol Bitmap" );
if( bMatchesPrefix )
{
GraphicObject aGrObj = GraphicObject(
@@ -407,6 +406,7 @@ void WrappedSymbolBitmapURLProperty::setValueToSeries(
C2U("URL"), -1, uno::makeAny( aNewGraphicURL ),
beans::PropertyState_DIRECT_VALUE );
aSymbol.Graphic.set( xGraphProv->queryGraphic( aArgs ));
+ OSL_ENSURE( aSymbol.Graphic.is(), "Invalid URL for Symbol Bitmap" );
xSeriesPropertySet->setPropertyValue( C2U("Symbol"), uno::makeAny( aSymbol ) );
}
catch( const uno::Exception & ex )