JBoolean
SVNWDManager::SaveState
	(
	ostream& output
	)
	const
{
	JPtrArray<JXWindowDirector> windowList(JPtrArrayT::kForgetAll);
	GetDirectors(&windowList);
	if (windowList.IsEmpty())
		{
		return kJFalse;
		}

	output << kCurrentStateVersion;

	const JSize windowCount = windowList.GetElementCount();
	output << ' ' << windowCount;

	for (JIndex i=1; i<=windowCount; i++)
		{
		SVNMainDirector* dir = dynamic_cast<SVNMainDirector*>(windowList.NthElement(i));

		output << ' ';
		dir->StreamOut(output);
		}

	return kJTrue;
}
JBoolean
SVNWDManager::GetBrowserForExactURL
	(
	const JCharacter*	url,
	SVNMainDirector**	dir
	)
{
	*dir = NULL;

	JString p1 = url;
	JStripTrailingDirSeparator(&p1);

	JPtrArray<JXWindowDirector> windowList(JPtrArrayT::kForgetAll);
	GetDirectors(&windowList);

	const JSize windowCount = windowList.GetElementCount();
	JString p2;
	for (JIndex i=1; i<=windowCount; i++)
		{
		SVNMainDirector* d = dynamic_cast<SVNMainDirector*>(windowList.NthElement(i));
		if (d != NULL && d->GetRepoPath(&p2) && p1 == p2)
			{
			*dir = d;
			break;
			}
		}

	return JI2B( *dir != NULL );
}
void ossimQtMainWindowWorkspace::minimizeAll()
{
    QWidgetList widgetList = windowList();
    
    for(int i = 0; i < (int)widgetList.count(); ++i)
    {
	widgetList.at(i)->showMinimized();
    }
}
void ossimQtMainWindowWorkspace::sendEventToAll(QEvent* evt)
{
  QWidgetList widgetList = windowList();
  
  for(int i = 0; i < (int)widgetList.count(); ++i)
    {
      QApplication::sendEvent(widgetList.at(i), evt);
    }
}
JBoolean
SVNWDManager::GetBrowser
	(
	const JCharacter*	path,
	SVNMainDirector**	dir
	)
{
	*dir = NULL;

	JString p1;
	JBoolean isURL = JIsURL(path);
	if (isURL)
		{
		p1 = path;
		JAppendDirSeparator(&p1);
		}
	else if (!JGetTrueName(path, &p1))
		{
		return kJFalse;
		}

	JPtrArray<JXWindowDirector> windowList(JPtrArrayT::kForgetAll);
	GetDirectors(&windowList);

	const JSize windowCount = windowList.GetElementCount();
	JString p2, p3;
	for (JIndex i=1; i<=windowCount; i++)
		{
		SVNMainDirector* d = dynamic_cast<SVNMainDirector*>(windowList.NthElement(i));
		if (d == NULL)
			{
			continue;
			}

		if (isURL && d->GetRepoPath(&p2))
			{
			JAppendDirSeparator(&p2);
			if (p1.BeginsWith(p2))
				{
				*dir = d;
				break;
				}
			}
		else if (!isURL && d->GetPath(&p3) &&
				 (JSameDirEntry(p1, p3) ||
				  (JGetTrueName(p3, &p2) && p1.BeginsWith(p2))))
			{
			*dir = d;
			break;
			}
		}

	return JI2B( *dir != NULL );
}
void ossimQtMainWindowWorkspace::refreshAll()
{
    QWidgetList widgetList = windowList();
 
    for(int i = 0; i < (int)widgetList.count(); ++i)
    {
      ossimQtRefreshDisplayEvent* evt = new ossimQtRefreshDisplayEvent;
      
      QApplication::postEvent(widgetList.at(i), evt);
    }
  
}
void ossimQtMainWindowWorkspace::restoreAll()
{
    QWidgetList widgetList = windowList();
    
    for(int i = 0; i < (int)widgetList.count(); ++i)
    {
      if((!widgetList.at(i)->isShown())||
	 (widgetList.at(i)->isMinimized()))
	{
	  widgetList.at(i)->showNormal();
	}
    }
}