void
SVNListBase::Receive
	(
	JBroadcaster*	sender,
	const Message&	message
	)
{
	if (sender == itsMessageLink && message.Is(JMessageProtocolT::kMessageReady))
		{
		ReceiveMessageLine();
		}
	else if (sender == itsErrorLink && message.Is(JMessageProtocolT::kMessageReady))
		{
		ReceiveErrorLine();
		}

	else if (sender == itsEditMenu && message.Is(JXMenu::kNeedsUpdate))
		{
		if (HasFocus())
			{
			UpdateEditMenu();
			}
		}
	else if (sender == itsEditMenu && message.Is(JXMenu::kItemSelected))
		{
		if (HasFocus())
			{
			const JXMenu::ItemSelected* selection =
				dynamic_cast<const JXMenu::ItemSelected*>(&message);
			assert( selection != NULL );
			HandleEditMenu(selection->GetIndex());
			}
		}

	else if (sender == itsContextMenu && message.Is(JXMenu::kNeedsUpdate))
		{
		UpdateContextMenu(itsContextMenu);
		}
	else if (sender == itsContextMenu && message.Is(JXMenu::kItemSelected))
		{
		const JXMenu::ItemSelected* selection =
			dynamic_cast<const JXMenu::ItemSelected*>(&message);
		assert( selection != NULL );
		HandleContextMenu(selection->GetIndex());
		}

	else
		{
		JXStringList::Receive(sender, message);
		}
}
void
JXInputField::Receive
	(
	JBroadcaster*	sender,
	const Message&	message
	)
{
	if (sender == itsContextMenu && message.Is(JXTextMenu::kNeedsUpdate))
		{
		UpdateContextMenu();
		}
	else if (sender == itsContextMenu && message.Is(JXTextMenu::kItemSelected))
		{
		const JXMenu::ItemSelected* selection =
			dynamic_cast(const JXMenu::ItemSelected*, &message);
		assert( selection != NULL );
		HandleContextMenu(selection->GetIndex());
		}

	else
		{
void
JXTabGroup::Receive
	(
	JBroadcaster*	sender,
	const Message&	message
	)
{
	if (sender == itsContextMenu && message.Is(JXTextMenu::kNeedsUpdate))
		{
		UpdateContextMenu();
		}
	else if (sender == itsContextMenu && message.Is(JXTextMenu::kItemSelected))
		{
		const JXMenu::ItemSelected* selection =
			dynamic_cast<const JXMenu::ItemSelected*>(&message);
		assert( selection != NULL );
		HandleContextMenu(selection->GetIndex());
		}

	else
		{
		JXWidget::Receive(sender, message);
		}
}
void
GPMProcessTreeList::Receive
	(
	JBroadcaster*	sender,
	const Message&	message
	)
{
	if (sender == itsList && message.Is(GPMProcessList::kPrepareForUpdate))
		{
		if (itsSelectedEntry != NULL)
			{
			StopListening(itsSelectedEntry);
			itsSelectedEntry = NULL;
			}

		if (GetSelectedProcess(&itsSelectedEntry))
			{
			ClearWhenGoingAway(itsSelectedEntry, &itsSelectedEntry);
			}
		}

	else if (sender == itsList && message.Is(GPMProcessList::kListChanged))
		{
		JTableSelection& s = GetTableSelection();
		s.ClearSelection();

		JIndex index;
		if (itsSelectedEntry != NULL &&
			GetTreeList()->FindNode(itsSelectedEntry, &index))
			{
			s.SelectRow(index);

			StopListening(itsSelectedEntry);
			itsSelectedEntry = NULL;
			}

		Refresh();
		}

	else if (sender == itsContextMenu && message.Is(JXMenu::kNeedsUpdate))
		{
		UpdateContextMenu();
		}
	else if (sender == itsContextMenu && message.Is(JXMenu::kItemSelected))
		{
		 const JXMenu::ItemSelected* selection =
			dynamic_cast<const JXMenu::ItemSelected*>(&message);
		assert( selection != NULL );
		HandleContextMenu(selection->GetIndex());
		}

	else
		{
		if (sender == &(GetTableSelection()) && message.Is(JTableData::kRectChanged))
			{
			const GPMProcessEntry* entry;
			if (IsVisible() && GetSelectedProcess(&entry))
				{
				itsFullCmdDisplay->SetText(entry->GetFullCommand());
				}
			}

		JXNamedTreeListWidget::Receive(sender, message);
		}
}