<?php 
	set_include_path($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common" . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/projects" . PATH_SEPARATOR . get_include_path());
	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";
			
	include("_projectCommon.php");    # All on the same line to unclutter the user's desktop'
	
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">


<h2>Console</h2>
	<p>
		These preferences can be changed on 
			<i>'Team>SVN>Console'</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 is recommended to limit the console buffer size to improve performance. Also it might not be useful to get all SVN&reg; messages, so the user can customize the console to get only warnings and errors.
					</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">Show SVN output in the 'Console View'</td>
			<td align ="center" valign="center">Specifies either show or not Subversion&reg; output in the 'Console View'</td>
			<td align ="center" valign="center">Enadled</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Show Console Automatically</td>
			<td align ="center" valign="center">If 'Never' chosen 'Console View' is never shown automatically. On other cases user can specify when to show it: 'On output', 'On error', 'On warning or error'.</td>
			<td align ="center" valign="center">Never</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Fixed width console</td>
			<td align ="center" valign="center">Specifies if the console has fixed width.</td>
			<td align ="center" valign="center">Disabled</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Line width</td>
			<td align ="center" valign="center">Specifies line width for console in characters if the fixed width property is set to 'Enabled'</td>
			<td align ="center" valign="center">80</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Limit console output</td>
			<td align ="center" valign="center">Specifies either console output should be limited or not.</td>
			<td align ="center" valign="center">Enabled</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Console buffer size</td>
			<td align ="center" valign="center">Specifies buffer size for console in characters if the limited console output property is set to 'Enabled'</td>
			<td align ="center" valign="center">500000</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Command line</td>
			<td align ="center" valign="center">Specifies a command line color in SVN console.</td>
			<td align ="center" valign="center">
				<img border="0" src="../images/black_color.png" alt="grey"/>
			</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Message</td>
			<td align ="center" valign="center">Specifies a message color in SVN console.</td>
			<td align ="center" valign="center">
				<img border="0" src="../images/blue_color.png" alt="grey"/>
			</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Warning</td>
			<td align ="center" valign="center">Specifies a warning message color in SVN console.</td>
			<td align ="center" valign="center">
				<img border="0" src="../images/redbrown_color.png" alt="grey"/>
			</td>
		</tr>
		<tr>
			<td align ="center" valign="center">Error</td>
			<td align ="center" valign="center">Specifies an error message color in SVN console.</td>
			<td align ="center" valign="center">
				<img border="0" src="../images/red_color.png" alt="grey"/>
			</td>
		</tr>
	</table><br/>
	This is how <i>'Console'</i> properties page looks like:
	<br/><br/><img border="0" src="../images/pref_console.png" alt="Console properties page"/>
	<br/>
	<img border="0" src="../images/rel_tops.png" alt="Related topics"/>
	<br/>
	<a href="../teamSupport/console.php">SVN Console</a>
	<br/>
	<br/>
	</div>	

EOHTML;


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