<?php 
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); 
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");  
	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");  
	$App = new App(); 
	$Nav = new Nav(); 
	$Menu = new Menu();  
	include($App->getProjectCommon());    
	# All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Igor Vinnykov
	# Date:			2007-11-23
	#
	# Description: Autogenerated for eclipse.org site pages from Eclipse IDE help
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Eclipse Subversive - Documentation";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider, documentation, user guid";
	$pageAuthor		= "Igor Vinnykov";
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn" style="width:95%">

<h2>SVN Repository View</h2>
	<p><i>'SVN Repository View'</i> is a part of <i>'SVN Repository Exploring'</i> perspective. It shows SVN Repositories associated with your Workbench. If the user expands the location item the trunk, project revisions, tags and branches are shown which also are expandable, showing the files and folders of shared project contained in them.</p>
	<p>The pop-up menu allows the user to create new repository locations, resources, tags, branches and project structures, check out projects and resources, show resource history and SVN&reg; properties, add revision links, do compare, get location properties and discard repository location.</p>
	<p>This is how <i>'SVN Repository View'</i> looks like:</p>
	<img border = "0" src="../images/repos_view.png" alt="SVN Repository View" />
	<p><b><i>Toolbar</i></b></p>
	<p><b>Home</b> - redraws the view showing the repository locations as roots.</p>
	<p><b>Back</b> - redraws the view showing the previous roots.</p>
	<p><b>Go Into</b> - redraws the view showing the children of selected root.</p>
	<p><b>Refresh</b> - redraws the view refreshing the content.</p>
	<p><b>Collapse All</b> - redraws the view collapsing all expanded items.</p>
	<p><b>New repository location</b> - activates a New Repository Location Wizard.</p>
	<p><b>Show repository browser</b> - shows Repository Browser View.</p>
	<p><b><i>Pop-up menu</i></b></p>
	<p><b>New>Repository Location</b> - activates a New Repository Location Wizard.</p>
	<p><b>New>File</b> - creates a new file in the repository location.</p>
	<p><b>New>Folder</b> - creates a new folder in the repository location.</p>
	<p><b>New>Tag</b> - creates a new tag in the specified location.</p>
	<p><b>New>Branch</b> - creates a new branch in the specified location.</p>
	<p><b>New>Project Structure</b> - creates a new project structure with its own trunk, branches and tags in a specified location.</p>
	<p><b>Check Out</b> - check out selected resource to a current workspace.</p>
	<p><b>Find/Check Out As</b> - activates SVN Find/Check Out As Wizard.</p>
	<p><b>Show Resource History</b> - shows SVN History View for a selected resource.</p>
	<p><b>Show Properties</b> - shows SVN&reg; Properties View for a selected resource.</p>
	<p><b>Refresh</b> - refreshes the current folder contents.</p>
	<p><b>Compare</b> - compares two selected resources.</p>
	<p><b>Compare with...</b> - compares the selected folder with a branch or revision of the same folder.</p>
	<p><b>Create Patch...</b> - creates a patch from a selected resource in compare with another URL or revision.</p>
	<p><b>Add Revision Link...</b> - creates a revision link and adds it to a revisions folder.</p>
	<p><b>Export...</b> - exports a selected resource to a local folder.</p>
	<p><b>Import...</b> - imports a resource from a local folder.</p>
	<p><b>Locations properties...</b> (repository locations only) - provides a probability to view and set repository location properties (same as in SVN Repository Location Wizard).</p>
	<p><b>Discard location...</b> (repository locations only) - discards the selected repository location.</p>
	<img border="0" src="../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../teamSupport/repos_persp.php">SVN Repository Exploring Perspective</a>
	<br/>
	<a href="../teamSupport/new_location_wiz.php">SVN Repository Location Wizard</a>
	<br/>
	<a href="../teamSupport/repos_browser_view.php">SVN Repository Browser View</a>
	<br/>
	<a href="../teamSupport/history_view.php">SVN History View</a>
	<br/>
	<a href="../teamSupport/props_view.php">SVN Properties View</a>
	<br/>
	<br/>
	</div>	

EOHTML;


	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>