void MyActiveSelectionObserver::tableSelection()
{
	int row=2;
	int col=2;
	do
	{
		InterfacePtr<ITableSelectionSuite> iTableSelectionSuite(fCurrentSelection, UseDefaultIID());
		if (!iTableSelectionSuite)
		{
			break;
		}
		else
		{
			InterfacePtr<const IIntegratorTarget> iIntegratorTarget_table(iTableSelectionSuite, UseDefaultIID());
			if(iIntegratorTarget_table == nil)
				return;

			RangeData rangeData(0,RangeData::kLeanForward);
			UIDRef tableRef;

			std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_table(iIntegratorTarget_table->GetTarget(ITableTarget::kDefaultIID));
			for(IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_table->size(); i++)
			{
				ITableTarget* tableTarget = (ITableTarget*)selectionSuites_table->at(i).get();
				if(!tableTarget)
					continue;

				InterfacePtr<ITableModel> tableModel(tableTarget->QueryModel());
				if(!tableModel)
				{
					CAlert::InformationAlert("tableModel failed");
					break;
				}

				//tableRef = tableTarget->GetModel();
				bool16 hasContent=tableTarget->HasContent();
				//CAlert::InformationAlert("Table is selected.");



				if(hasContent==kTrue)
				{
					//CAlert::InformationAlert("Has Content.");
					//GridArea selectedText=iTableSelectionSuite->GetSelection();

					//InterfacePtr<ITableSuite> tableSuite(fCurrentSelection, UseDefaultIID());
					/*    Number of columns visible to user.
					int32 userNumCols=tableSuite->GetUserNumColsInTable();
					PMString UNC("No.of cols :");
					UNC.AppendNumber(userNumCols);
					CAlert::InformationAlert(UNC);
					*/
					/*        //text cell selection  (click+ esc)
					bool16 textCellSelected=tableSuite->IsAnyTextCellSelected();
					if(textCellSelected==kTrue)
					{
					CAlert::InformationAlert("Text Cell is selected.");
					}
					*/


					//this->cellTextSelection(iTableSelectionSuite);

					//GridAddress gridAdd= iTableSelectionSuite->GetAnchor();
					GridAddress gridAdd(row, col);

					GridID targetCellGridID = tableModel->GetGridID(gridAdd);
					if(!targetCellGridID)
					{
						CAlert::InformationAlert("targetCellGridID failed");
						break;
					}

					InterfacePtr<ITextStoryThreadDict> textStoryThreadDict(tableModel, UseDefaultIID());
					if (textStoryThreadDict == nil) 
					{
						CAlert::InformationAlert("textStoryThreadDict failed");
						break;
					}

					InterfacePtr<ITextStoryThread> textStoryThread(textStoryThreadDict->QueryThread(targetCellGridID));
					if (textStoryThread == nil)
					{
						CAlert::InformationAlert("textStoryThread failed");
						break;
					}

					this->getText(textStoryThread);
				}

				/*Remove this if needed*/			//this->InspectTableObject(pageItemRef);
				//	CAlert::InformationAlert("Frame is selected:");
				//}	
				/*
				/////////////////**************************************
				SDKLayoutHelper layoutHelper;
				InterfacePtr<ITextModel> textModel(layoutHelper.GetTextModelRef(graphicFrameData), UseDefaultIID());
				if (!textModel) 
				{
				break;
				}

				// Ask which TextIndex	 should be selected.
				Utils<ISnipRunParameterUtils> parameterUtils;
				int32 totalLength = textModel->TotalLength();
				TextIndex at = 0;
				if (totalLength > 1) 
				{
				at = parameterUtils->GetInt32("TextIndex", 0, 0, totalLength-1);
				if (parameterUtils->WasDialogCancelled()) 
				{
				break;
				}	
				}

				InterfacePtr<ITextFrameColumn> textFrameColumn(this->QueryTextFrameContaining(textModel, at));
				if (!textFrameColumn) 
				{
				break;
				}
				UIDRef graphicFrameRef = this->GetGraphicFrameRef(textFrameColumn, kFalse);*/
				/*if (graphicFrameRef == UIDRef::gNull) 
				{
				break;
				}
				*/
				/*		// Select that frame.
				//if (selectionManager->SelectionExists (kInvalidClass, ISelectionManager::kAnySelection)) 
				//{
				// Clear the selection
				//	selectionManager->DeselectAll(nil);
				//}
				//layoutSelectionSuite->SelectPageItems(UIDList(graphicFrameRef), Selection::kReplace, Selection::kAlwaysCenterInView);
				//				}				
				//}
				//}
				//}*/
				/*
				InterfacePtr<ITextSelectionSuite> iTextSelectionSuite(fCurrentSelection, UseDefaultIID());
				if (iTextSelectionSuite == nil) 
				{
				CAlert::InformationAlert("iTextSelectionSuite Failed");
				}
				else
				{
				InterfacePtr<const IIntegratorTarget> iIntegratorTarget_text(iTextSelectionSuite, UseDefaultIID());
				if(iIntegratorTarget_text == nil)
				break;

				InterfacePtr<const IIntegratorTarget> iIntegratorTarget_text(iTextSelectionSuite, UseDefaultIID());
				if(iIntegratorTarget_text == nil)
				break;

				RangeData rangeData(0,RangeData::kLeanForward);
				UIDRef textRef;

				std::auto_ptr<IIntegratorTarget::TargetSuiteCollection> selectionSuites_text(iIntegratorTarget_text->GetTarget(ITextTarget::kDefaultIID));
				for(IIntegratorTarget::TargetSuiteCollection::size_type i = 0; i < selectionSuites_text->size(); i++)
				{
				ITextTarget* target = (ITextTarget*)selectionSuites_text->at(i).get();
				if(!target)
				continue;

				rangeData = target->GetRange();	
				textRef = target->GetTextModel();

				if(textRef == nil)
				break;

				InterfacePtr<ITextModel> textModel(textRef,UseDefaultIID());

				TextIterator begin(textModel,rangeData.Start(nil));
				TextIterator end(textModel,rangeData.End());


				for (TextIterator iter = begin; iter != end; iter++) 
				{
				const UTF32TextChar characterCode = *iter;
				result.Append(characterCode);
				}

				CAlert::InformationAlert("Selected text is:"+result);
				}*/
			}
		}
	}while (kFalse);
}