summaryrefslogtreecommitdiff
path: root/sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx
diff options
context:
space:
mode:
authorTomaž Vajngerl <quikee@gmail.com>2013-07-22 18:35:07 +0200
committerTomaž Vajngerl <quikee@gmail.com>2013-07-23 20:52:45 +0200
commitba17605d5e75dc926c3f7c61795c77d855aa3458 (patch)
treefabd2a9533f295bfe175794855b6957e0afbae7d /sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx
parent19efbd8d9886e7a346b73aaabe644c56cb2a8e05 (diff)
Add ANOVA (analysis of variance) calculation to Statistics.
Currently supported calculation is one factor ANOVA calculation. Additionally refactor "descriptive statistics" and extract common functionallity with ANOVA into StatisticsInputOutput class. Change-Id: Ib9c3083019058c63738b3e92097411ba1b428648
Diffstat (limited to 'sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx')
-rw-r--r--sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx155
1 files changed, 8 insertions, 147 deletions
diff --git a/sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx b/sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx
index a37d2edf6f23..ed9d57bc75a5 100644
--- a/sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/DescriptiveStatisticsDialog.cxx
@@ -55,124 +55,27 @@ static const StatisticCalculation lclCalcDefinitions[] =
{ 0, NULL }
};
+static const OUString lclWildcardRange("%RANGE%");
+
}
ScDescriptiveStatisticsDialog::ScDescriptiveStatisticsDialog(
SfxBindings* pSfxBindings, SfxChildWindow* pChildWindow,
Window* pParent, ScViewData* pViewData ) :
- ScAnyRefDlg ( pSfxBindings, pChildWindow, pParent,
- "DescriptiveStatisticsDialog", "modules/scalc/ui/descriptivestatisticsdialog.ui" ),
- mViewData ( pViewData ),
- mDocument ( pViewData->GetDocument() ),
- mAddressDetails ( mDocument->GetAddressConvention(), 0, 0 ),
- mCurrentAddress ( pViewData->GetCurX(), pViewData->GetCurY(), pViewData->GetTabNo() ),
- mDialogLostFocus( false )
-{
- get(mpInputRangeLabel, "input-range-label");
- get(mpInputRangeEdit, "input-range-edit");
- get(mpInputRangeButton, "input-range-button");
- mpInputRangeEdit->SetReferences(this, mpInputRangeLabel);
- mpInputRangeButton->SetReferences(this, mpInputRangeEdit);
-
- get(mpOutputRangeLabel, "output-range-label");
- get(mpOutputRangeEdit, "output-range-edit");
- get(mpOutputRangeButton, "output-range-button");
- mpOutputRangeEdit->SetReferences(this, mpOutputRangeLabel);
- mpOutputRangeButton->SetReferences(this, mpOutputRangeEdit);
-
- get(mpButtonOk, "ok");
- get(mpButtonApply, "apply");
- get(mpButtonClose, "close");
-
- Init();
- GetRangeFromSelection();
-}
-
-void ScDescriptiveStatisticsDialog::Init()
-{
- mpButtonOk->SetClickHdl( LINK( this, ScDescriptiveStatisticsDialog, OkClicked ) );
- mpButtonClose->SetClickHdl( LINK( this, ScDescriptiveStatisticsDialog, CloseClicked ) );
- mpButtonApply->SetClickHdl( LINK( this, ScDescriptiveStatisticsDialog, ApplyClicked ) );
- mpButtonOk->Enable(false);
- mpButtonApply->Enable(false);
-
- Link aLink = LINK( this, ScDescriptiveStatisticsDialog, GetFocusHandler );
- mpInputRangeEdit->SetGetFocusHdl( aLink );
- mpInputRangeButton->SetGetFocusHdl( aLink );
- mpOutputRangeEdit->SetGetFocusHdl( aLink );
- mpOutputRangeButton->SetGetFocusHdl( aLink );
-
- aLink = LINK( this, ScDescriptiveStatisticsDialog, LoseFocusHandler );
- mpInputRangeEdit->SetLoseFocusHdl( aLink );
- mpInputRangeButton->SetLoseFocusHdl( aLink );
- mpOutputRangeEdit->SetLoseFocusHdl( aLink );
- mpOutputRangeButton->SetLoseFocusHdl( aLink );
-
- mpOutputRangeEdit->GrabFocus();
-}
-
-void ScDescriptiveStatisticsDialog::GetRangeFromSelection()
-{
- OUString aCurrentString;
- mViewData->GetSimpleArea(mInputRange);
- mInputRange.Format(aCurrentString, SCR_ABS_3D, mDocument, mAddressDetails);
- mpInputRangeEdit->SetText(aCurrentString);
-}
+ ScStatisticsInputOutputDialog(
+ pSfxBindings, pChildWindow, pParent, pViewData,
+ "DescriptiveStatisticsDialog", "modules/scalc/ui/descriptivestatisticsdialog.ui" )
+{}
ScDescriptiveStatisticsDialog::~ScDescriptiveStatisticsDialog()
{}
-void ScDescriptiveStatisticsDialog::SetActive()
-{
- if ( mDialogLostFocus )
- {
- mDialogLostFocus = false;
- if( mpActiveEdit )
- mpActiveEdit->GrabFocus();
- }
- else
- {
- GrabFocus();
- }
- RefInputDone();
-}
-
sal_Bool ScDescriptiveStatisticsDialog::Close()
{
return DoClose( ScDescriptiveStatisticsDialogWrapper::GetChildWindowId() );
}
-void ScDescriptiveStatisticsDialog::SetReference( const ScRange& rReferenceRange, ScDocument* pDocument )
-{
- if ( mpActiveEdit )
- {
- if ( rReferenceRange.aStart != rReferenceRange.aEnd )
- RefInputStart( mpActiveEdit );
-
- String aReferenceString;
-
- if ( mpActiveEdit == mpInputRangeEdit )
- {
- mInputRange = rReferenceRange;
- mInputRange.Format( aReferenceString, SCR_ABS_3D, pDocument, mAddressDetails );
- mpInputRangeEdit->SetRefString( aReferenceString );
- }
- else if ( mpActiveEdit == mpOutputRangeEdit )
- {
- mOutputAddress = rReferenceRange.aStart;
-
- sal_uInt16 nFormat = ( mOutputAddress.Tab() == mCurrentAddress.Tab() ) ? SCA_ABS : SCA_ABS_3D;
- mOutputAddress.Format( aReferenceString, nFormat, pDocument, pDocument->GetAddressConvention() );
- mpOutputRangeEdit->SetRefString( aReferenceString );
-
- // Enable OK, Cancel if output range is set
- mpButtonOk->Enable(!mpOutputRangeEdit->GetText().isEmpty());
- mpButtonApply->Enable(!mpOutputRangeEdit->GetText().isEmpty());
- }
- }
-}
-
-void ScDescriptiveStatisticsDialog::ApplyCalculationsFormulas( )
+void ScDescriptiveStatisticsDialog::CalculateInputAndWriteToOutput( )
{
OUString aUndo(SC_RESSTR(STR_DESCRIPTIVE_STATISTICS_UNDO_NAME));
ScDocShell* pDocShell = mViewData->GetDocShell();
@@ -211,7 +114,6 @@ void ScDescriptiveStatisticsDialog::ApplyCalculationsFormulas( )
);
aColumnRange.Format( aReferenceString, SCR_ABS, mDocument, mAddressDetails );
- OUString sRange("%RANGE%");
OUString aFormulaString;
OUString aFormulaTemplate;
@@ -219,7 +121,7 @@ void ScDescriptiveStatisticsDialog::ApplyCalculationsFormulas( )
{
aAddress = ScAddress(outCol, outRow, outTab);
aFormulaTemplate = OUString::createFromAscii(lclCalcDefinitions[i].aFormula);
- aFormulaString = aFormulaTemplate.replaceAll(sRange, aReferenceString);
+ aFormulaString = aFormulaTemplate.replaceAll(lclWildcardRange, aReferenceString);
pDocShell->GetDocFunc().SetFormulaCell(aAddress, new ScFormulaCell(mDocument, aAddress, aFormulaString), true);
outRow++;
}
@@ -233,45 +135,4 @@ void ScDescriptiveStatisticsDialog::ApplyCalculationsFormulas( )
pDocShell->PostPaint( aOutputRange, PAINT_GRID );
}
-IMPL_LINK( ScDescriptiveStatisticsDialog, OkClicked, PushButton*, /*pButton*/ )
-{
- ApplyClicked(NULL);
- CloseClicked(NULL);
- return 0;
-}
-
-
-IMPL_LINK( ScDescriptiveStatisticsDialog, ApplyClicked, PushButton*, /*pButton*/ )
-{
- ApplyCalculationsFormulas();
- return 0;
-}
-
-IMPL_LINK( ScDescriptiveStatisticsDialog, CloseClicked, PushButton*, /*pButton*/ )
-{
- Close();
- return 0;
-}
-
-IMPL_LINK( ScDescriptiveStatisticsDialog, GetFocusHandler, Control*, pCtrl )
-{
- mpActiveEdit = NULL;
-
- if( (pCtrl == (Control*) mpInputRangeEdit) || (pCtrl == (Control*) mpInputRangeButton) )
- mpActiveEdit = mpInputRangeEdit;
- else if( (pCtrl == (Control*) mpOutputRangeEdit) || (pCtrl == (Control*) mpOutputRangeButton) )
- mpActiveEdit = mpOutputRangeEdit;
-
- if( mpActiveEdit )
- mpActiveEdit->SetSelection( Selection( 0, SELECTION_MAX ) );
-
- return 0;
-}
-
-IMPL_LINK_NOARG(ScDescriptiveStatisticsDialog, LoseFocusHandler)
-{
- mDialogLostFocus = !IsActive();
- return 0;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */