void
ArxDbgUiTdcObjReactorsBase::OnObjAttach() 
{
    CString newHandle, str;
    AcDbObjectId objId;

        // see if specified handle is valid
    m_ebHandle.GetWindowText(newHandle);
    if (ArxDbgUtils::handleStrToObjId(acdbHostApplicationServices()->workingDatabase(),
					newHandle, objId, false) != Acad::eOk) {
        str.Format(_T("\"%s\" is not a valid handle."), newHandle);
        ArxDbgUtils::alertBox(str);
        m_ebHandle.SetSel(0, -1); // reset to select all
        m_ebHandle.SetFocus();
        return;
    }

	AcDbObjectIdArray newObjIds;
	newObjIds.append(objId);

	attachObjReactors(newObjIds);

    m_ebHandle.SetWindowText(_T(""));    // reset edit box to be empty for new handle

	displayObjList();
}
void
ArxDbgUiTdcCloneSet::OnShow() 
{
	ArxDbgUiTdmObjects dbox(m_objIds, this, _T("Objects in Clone Set"));
	dbox.DoModal();

	displayObjList();
}
void
ArxDbgUiTdcCloneSet::OnRemoveAll() 
{
	int index = m_lbDbList.GetCurSel();
	if (index == LB_ERR) {
		ASSERT(0);
		return;
	}

	AcDbDatabase* curDb = static_cast<AcDbDatabase*>(m_dbPtrs[index]);
	m_cloneSet.removeAll(curDb);

	displayObjList();
}
BOOL
ArxDbgUiTdcObjReactorsBase::OnInitDialog() 
{
	CAcUiTabChildDialog::OnInitDialog();

    m_attachEntButton.AutoLoad();
    m_detachEntButton.AutoLoad();
    m_detachSelectedEntsButton.AutoLoad();
    m_detachSelectedObjsButton.AutoLoad();

	displayObjList();
	displayEntList();

	return TRUE;
}
BOOL
ArxDbgUiTdcCloneSet::OnInitDialog() 
{
	CAcUiTabChildDialog::OnInitDialog();

    m_selectButton.AutoLoad();

	displayDbList();

	m_lbDbList.SetCurSel(getIndexFor(acdbHostApplicationServices()->workingDatabase()));

	displayObjList();

	return TRUE;
}
void
ArxDbgUiTdcCloneSet::OnBrowse()
{
	int index = m_lbDbList.GetCurSel();
	if (index == LB_ERR) {
		ASSERT(0);
		return;
	}

	AcDbDatabase* curDb = static_cast<AcDbDatabase*>(m_dbPtrs[index]);

	ArxDbgUiTdmDatabase dbox(curDb, this);
	dbox.DoModal();

	displayObjList();
}
void
ArxDbgUiTdcObjReactorsBase::OnObjDetachSelected() 
{
	AcDbObjectIdArray selObjIds;

    int count = m_lbObjList.GetSelCount();
    if (count > 0) {
        int* intArray = new int[count];
        if (m_lbObjList.GetSelItems(count, intArray) != LB_ERR) {
            for (int i=0; i<count; i++) {
                selObjIds.append(m_objsAttached[intArray[i]]);
            }
        }
        delete [] intArray;
	}

	detachSelectedObjs(selObjIds);
	displayObjList();
}
void
ArxDbgUiTdcCloneSet::OnRemove()
{
	AcDbObjectIdArray selObjIds;

    int count = m_lbObjList.GetSelCount();
    if (count > 0) {
        int* intArray = new int[count];
        if (m_lbObjList.GetSelItems(count, intArray) != LB_ERR) {
            for (int i=0; i<count; i++) {
                selObjIds.append(m_objIds[intArray[i]]);
            }
        }
        delete [] intArray;
	}

	m_cloneSet.removeObjects(selObjIds);
	displayObjList();
}
void
ArxDbgUiTdcCloneSet::OnDatabaseChanged() 
{
	displayObjList();
}