/*
    TCFbERowRowCachedTable.cpp    November 29, 2004.

    Copyright (C) 2003-2005 CFbE Research Group,
    Software Engineering Laboratory,
    Graduate School of Information Science,
    Nara Institute of Science and Technology,
    All rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, (at your option) or
    any later version.

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with GNU Emacs; see the file COPYING.  If not, write to the
    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/
//---------------------------------------------------------------------------
#pragma hdrstop

#include "TCFbERowRowCachedTable.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
// コンストラクタ（空キャッシュを作成
__fastcall TCFbERowRowCachedTable::TCFbERowRowCachedTable(void)
    : TCFbECachedTable()
{
}

//---------------------------------------------------------------------------
// 指定された行列を備えた空テーブルを作成
__fastcall TCFbERowRowCachedTable::TCFbERowRowCachedTable(TStringList* RowLabelList, TStringList* ColumnLabelList)
    : TCFbECachedTable(RowLabelList, RowLabelList)
{
}

//---------------------------------------------------------------------------
// デストラクタ
__fastcall TCFbERowRowCachedTable::~TCFbERowRowCachedTable()
{
}

//---------------------------------------------------------------------------
// 以下，protected method
//---------------------------------------------------------------------------
// 親キャッシュのセルが更新された
void __fastcall TCFbERowRowCachedTable::ParentCellIsUpdated(int RowIndex, int ColumnIndex)
{
    if (!this->FIsLinkedToParent) {
        return;
    }

    for (int i = 0; i < this->GetNumberOfRows(); i++) {
        this->UnableElementByIndex(i, RowIndex);
        this->UnableElementByIndex(RowIndex, i);
    }
}

//---------------------------------------------------------------------------
// 親キャッシュの行が追加された
int __fastcall  TCFbERowRowCachedTable::ParentAddRow(const char* RowLabel)
{
    this->AddRow(RowLabel);
    return this->AddColumn(RowLabel);
}

//---------------------------------------------------------------------------
// 親キャッシュの列が追加された
int __fastcall  TCFbERowRowCachedTable::ParentAddColumn(const char* ColumnLabel)
{
    return -1; // 何もしない
}

//---------------------------------------------------------------------------
// 親キャッシュの行が削除された
void __fastcall TCFbERowRowCachedTable::ParentDeleteRowByIndex(int TargetRowIndex)
{
    this->DeleteRowByIndex(TargetRowIndex);
    this->DeleteColumnByIndex(TargetRowIndex);
}

//---------------------------------------------------------------------------
// 親キャッシュの列が削除された
void __fastcall TCFbERowRowCachedTable::ParentDeleteColumnByIndex(int TargetColumnIndex)
{
    return; // 何もしない
}

//---------------------------------------------------------------------------
// 自分自身のクローンを作成する
TCFbECachedTable* __fastcall TCFbERowRowCachedTable::CreateClone(void)
{
    TCFbERowRowCachedTable* Clone = new TCFbERowRowCachedTable();
    Clone->Assign(this);
    return Clone;       
}

//---------------------------------------------------------------------------
// 自分自身の行と列が入れ替わったクローンを作成する
TCFbECachedTable* __fastcall TCFbERowRowCachedTable::CreateRotatedClone(void)
{
    TCFbERowRowCachedTable* Clone = new TCFbERowRowCachedTable();
    Clone->RotatedAssign(this);
    return Clone;
}

//---------------------------------------------------------------------------

