void
GRaggedFloatTableData::InsertCol
	(
	const JIndex			index,
	const JOrderedSet<JFloat>*	initData
	)
{
	JIndex trueIndex = index;
	const JIndex maxIndex = itsCols->GetElementCount()+1;
	if (trueIndex > maxIndex)
		{
		trueIndex = maxIndex;
		}

	JArray<JFloat>* colData = jnew JArray<JFloat>;
	assert( colData != NULL );
	itsCols->InsertAtIndex(trueIndex, colData);

	if (initData != NULL)
		{
		const JSize rowCount = initData->GetElementCount();
		for (JIndex i=1; i<=rowCount; i++)
			{
			colData->InsertElementAtIndex(i, initData->GetElement(i));
			}
		}

	ColsAdded(1);
	if (itsBroadcast)
		{
		Broadcast(JTableData::ColsInserted(trueIndex, 1));
		}
}
void
GRaggedFloatTableData::InsertElement
	(
	const JIndex row,
	const JIndex col,
	const JFloat value
	)
{
	JArray<JFloat>* dataCol = itsCols->NthElement(col);
	dataCol->InsertElementAtIndex(row, value);
	const JSize rowCount = dataCol->GetElementCount();
	if (itsBroadcast)
		{
		Broadcast(GRaggedFloatTableData::ElementInserted(row, col));
		}

	if (rowCount == GetRowCount())
		{
		RowsAdded(1);
		if (itsBroadcast)
			{
			Broadcast(JTableData::RowsInserted(rowCount+1, 1));
			}
		}
}
void
GRaggedFloatTableData::DuplicateRow
	(
	const JIndex index
	)
{
	const JSize colCount = itsCols->GetElementCount();
	for (JIndex i=1; i<=colCount; i++)
		{
		JArray<JFloat>* colData = itsCols->NthElement(i);
		const JSize rowCount = colData->GetElementCount();

		if (index <= rowCount)
			{
			const JFloat element = colData->GetElement(index);
			colData->InsertElementAtIndex(index, element);
			}
		}

	RowsAdded(1);
	if (itsBroadcast)
		{
		Broadcast(JTableData::RowDuplicated(index, index));
		}
}
JBoolean
JPartition::InsertCompartment
	(
	const JIndex		index,
	const JCoordinate	reqSize,
	const JCoordinate	minSize
	)
{
	JArray<JCoordinate> newSizes;
	JCoordinate trueSize;
	if (CreateSpace(*itsSizes, *itsMinSizes, itsElasticIndex,
					reqSize + kDragRegionSize, minSize + kDragRegionSize,
					&newSizes, &trueSize))
		{
		trueSize -= kDragRegionSize;

		JCoordinate position = 0;
		for (JIndex i=1; i<index; i++)
			{
			position += newSizes.GetElement(i) + kDragRegionSize;
			}

		CreateCompartmentObject(index, position, trueSize);
		newSizes.InsertElementAtIndex(index, trueSize);
		itsMinSizes->InsertElementAtIndex(index, minSize);

		if (index <= itsElasticIndex)
			{
			itsElasticIndex++;
			}

		*itsSizes = newSizes;
		SetCompartmentSizes();
		return kJTrue;
		}
	else
		{
		return kJFalse;
		}
}