areaeditor/
/*
** AreaEditor - a program for editing SMAUG and ROM area files.
** Author: Nick Gammon
** http://www.gammon.com.au/
** See Copyright Notice at the end of AreaEditor.h
*/

// DeleteXrefDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AreaEditor.h"
#include "AreaEditorDoc.h"
#include "DeleteXrefDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDeleteXrefDlg dialog


CDeleteXrefDlg::CDeleteXrefDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDeleteXrefDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDeleteXrefDlg)
	m_strAboutToDelete = _T("");
	//}}AFX_DATA_INIT

  m_pxrefList = NULL;
  m_pxrefOwnerList = NULL;

}


void CDeleteXrefDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDeleteXrefDlg)
	DDX_Control(pDX, IDC_XREF_LIST, m_ctlXrefList);
	DDX_Text(pDX, IDC_ABOUT_TO_DELETE, m_strAboutToDelete);
	//}}AFX_DATA_MAP

  if (!pDX->m_bSaveAndValidate)
    {

    CString strType,
            strMessage;

    // these 2 lists had better stay in sync!
    POSITION ownerpos = m_pxrefOwnerList->GetHeadPosition ();

    for (POSITION pos = m_pxrefList->GetHeadPosition (); pos; )
      {
      CMUDitem * owner = NULL;

      CMUDitem * item = m_pxrefList->GetNext (pos);
      
      if (ownerpos)
        owner = m_pxrefOwnerList->GetNext (ownerpos);

      strType = item->Type ();
      if (!strType.IsEmpty ())
	      strType.SetAt (0, UPPER(strType[0])); // capitalise first character

      strMessage = strType;
      strMessage += ": ";
      if (owner)
        {
        strMessage += owner->Summary ();
        strMessage += ": ";
        }

      strMessage += item->Summary ();

      item->AddToListBox (m_ctlXrefList, strMessage);
      }
    OnSelectAll ();
    }
}


BEGIN_MESSAGE_MAP(CDeleteXrefDlg, CDialog)
	//{{AFX_MSG_MAP(CDeleteXrefDlg)
	ON_BN_CLICKED(IDC_DESELECT_ALL, OnDeselectAll)
	ON_BN_CLICKED(IDC_SELECT_ALL, OnSelectAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDeleteXrefDlg message handlers

void CDeleteXrefDlg::OnDeselectAll() 
{
 for (int i = 0; i < m_ctlXrefList.GetCount (); i++)
   m_ctlXrefList.SetSel(i, FALSE);	
}

void CDeleteXrefDlg::OnSelectAll() 
{
 for (int i = 0; i < m_ctlXrefList.GetCount (); i++)
   m_ctlXrefList.SetSel(i, TRUE);		
}