<?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>Annotate</h2>
	<p>
		These preferences can be changed on 
			<i>'Team>SVN>Annotate'</i>
		 properties page.</p>
	<table cellpadding="1" cellspacing="0" border="0">
		<tr>
			<td valign="top" align="left">
				<p align="left">
					<i>
						<b>Tip:</b>
					</i>
				</p>
			</td>
			<td valign="top">
				<p>
					<i>
						It's recommended to view annotations in the Repository Exploring perspective. Using Quick Diff is very comfortable, because the user can examine all the revision changes at once, but it can be performed only on local files, not repository ones. If your team is rather big it's convenient to use different colors to highlight the changes in Quick Diff mode.
					</i>
				</p>
			</td>
		</tr>
	</table>
		<table cellpadding="5" cellspacing="0" border="1" width="100%">
			<tr>
				<td class="header" align ="center" valign="center">Option</td>
				<td class="header" align ="center" valign="center">Description</td>
				<td class="header" align ="center" valign="center">Default</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Open perspective after a 'Show Annotation' operation.</td>
				<td align ="center" valign="center">Specifies if the specified perspective should be opened after a  'Show Annotation' operation.</td>
				<td align ="center" valign="center">Prompt</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Perspective for 'Annotate View'</td>
				<td align ="center" valign="center">Allows user to choose a perspective for 'Annotate View' to show in.</td>
				<td align ="center" valign="center">SVN Repository Exploring</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Use Quick Diff annotate mode for local file annotations</td>
				<td align ="center" valign="center">Configure using of Quick Diff feature for local file annotations.</td>
				<td align ="center" valign="center">Prompt</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Use same color for all authors</td>
				<td align ="center" valign="center">Defines if the one and only color should be used for annotation blocks of every author's made changes.</td>
				<td align ="center" valign="center">Enabled</td>
			</tr>
			<tr>
				<td align ="center" valign="center">Annotation Block Color</td>
				<td align ="center" valign="center">Specifies a color for annotation blocks.</td>
				<td align ="center" valign="center">
					<img border="0" cellpadding="0" cellspacing="0" src="../images/grey_color.png" alt="grey"/>
				</td>
			</tr>
		</table><br/>
		This is how <i>'Annotate'</i> properties page looks like:
		<br/><br/><img border="0" src="../images/pref_annotate.png" alt="Annotate properties page"/>
	<br/>
	<img border="0" src="../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../teamSupport/annotation_view.php">SVN Annotation View</a>
	<br/>
	<a href="../teamSupport/repos_persp.php">SVN Repository Exploring Perspective</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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