You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

147 lines
2.5 KiB
C++

#include "StdAfx.h"
#include "WellPoleDoc.h"
#include "WellPoleView.h"
#include "ItemWellBase.h"
#include "ActionModifiedWellItem.h"
#include "ActionWellTrackAddItem.h"
#include "ActionWellTrackDeleteItem.h"
namespace NItem
{
CItemWellBase::CItemWellBase(CSigmaDoc* pDoc)
: CItemNestBase(pDoc)
{
}
CItemWellBase::~CItemWellBase(void)
{
}
void CItemWellBase::SetPos(POSITION pos)
{
if(pos == NULL)
return;
CItemNestBase::SetPos(pos);
if(GetDoc()->GetItem() == this)
{
//COne* pObj = GetDoc()->GetDraw()->GetAt(pos);
//SetDrawObj(pObj);
}
}
BOOL CItemWellBase::EndEdit(void)
{
//if(GetDrawObj() != NULL)
// GetDoc()->Invalidate(GetDrawObj());
return CItemNestBase::EndEdit();
}
BOOL CItemWellBase::IsSelected(CWellBaseObj* pObj)
{
return m_WellObjSelectlist.Find(pObj) != NULL;
}
void CItemWellBase::Select(CWellBaseObj* pObj, BOOL bAdd)
{
if (!bAdd)
{
m_WellObjSelectlist.RemoveAll();
//POSITION pos = m_selectlist.GetHeadPosition();
//POSITION current_pos = NULL;
//while (pos != NULL)
//{
// current_pos = pos;
// //得到被选中的对象
// CObjectBase* pObj = m_selectlist.GetNext(pos);
//}
//if (current_pos != NULL)
//{
// //移除被选中链表中的对象
// m_selectlist.RemoveAt(current_pos);
//}
}
if (pObj == NULL || IsSelected(pObj))
return;
//加到选择列表中
m_WellObjSelectlist.AddTail(pObj);
}
HCURSOR CItemWellBase::GetHandleCursor(int nHandle)
{
LPCTSTR id;
switch (nHandle)
{
default:
ASSERT(FALSE);
case 1:
case 5:
id = IDC_SIZENWSE;
break;
case 2:
case 6:
id = IDC_SIZENS;
break;
case 3:
case 7:
id = IDC_SIZENESW;
break;
case 4:
case 8:
id = IDC_SIZEWE;
break;
}
return AfxGetApp()->LoadStandardCursor(id);
}
void CItemWellBase::SetReUnDoAction(BOOL bNoSaveData, UINT actionType)
{
CPositionList list;
POSITION pos = GetPos();
if(NULL != pos)
{
list.AddTail(pos);
(GetDoc())->SetActionItem(new CActionModifiedWell(GetDoc(), actionType, list, bNoSaveData));
GetDoc()->Modified(TRUE);
}
}
void CItemWellBase::SetActionAddTrackItem(TRACKLIST& addTrackList)
{
(GetDoc())->SetActionItem(new CActionWellTrackAddItem(GetDoc(), IDS_STRING_ACTION_ADD, addTrackList));
GetDoc()->Modified(TRUE);
}
void CItemWellBase::SetActionDeleteTrackItem(TRACKLIST& addTrackList)
{
(GetDoc())->SetActionItem(new CActionWellTrackDeleteItem(GetDoc(), IDS_STRING_ACTION_DELETE, addTrackList));
GetDoc()->Modified(TRUE);
}
void CItemWellBase::CancelSelection(void)
{
CItemSelect::CancelSelection();
m_WellObjSelectlist.RemoveAll();
}
};