//
// Called by both the up and down button handlers.  This function actually moves the things around
// in both the GUI and the selected assigned's access spec list.
//
void CPageAccess::Move( int desired_index )
{
	Manager *manager;
	Worker *worker;
	int item_index = m_LAssignedAccess.GetNextItem( FIND_FIRST, LVNI_SELECTED );

	// Check to make sure something was selected.
	if ( m_LAssignedAccess.GetSelectedCount() == 0 )
		return;

	LockWindowUpdate();
	// Move the access spec referred to by the selected item.
	switch ( theApp.pView->m_pWorkerView->GetSelectedType() )
	{
	case ALL_MANAGERS:
		theApp.manager_list.MoveAccessSpec( item_index, desired_index );
		break;
	case MANAGER:
		manager = theApp.pView->m_pWorkerView->GetSelectedManager();
		manager->MoveAccessSpec( item_index, desired_index );
		break;
	case WORKER:
		worker = theApp.pView->m_pWorkerView->GetSelectedWorker();
		worker->MoveAccessSpec( item_index, desired_index );
		break;
	}
	ShowAssignedAccess();
	// Select the moved item so that the move buttons are still enabled.
	m_LAssignedAccess.SetItemState( desired_index, LVNI_SELECTED, LVNI_SELECTED );
	UnlockWindowUpdate();
}