<?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: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Subversive - SVN Team Client";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider";
	$pageAuthor		= "Igor Vinnykov";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">

<h2>Hot Keys</h2>
	<p>
		To customize the key assist setting refer to 																		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: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Subversive - SVN Team Client";
	$pageKeywords	= "Subversive, Subversion, SVN, Team Provider";
	$pageAuthor		= "Igor Vinnykov";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 3);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 3);

	# End: page-specific settings
	#
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">

<h2>Hot Keys</h2>
	<p>
		To customize the key assist setting refer to <a class="command-link" href='javascript:executeCommand("org.eclipse.ui.window.preferences(preferencePageId=org.eclipse.ui.preferencePages.Keys)")'><img border="0"  src="../images/command_link.png"><i>General > Keys</i> preferences page. The Subversive keys combination set follows.</p>
	<table cellpadding="5" cellspacing="0" border="1">
		<tr>
			<td class="header">Keys combination</td>
			<td class="header">Description</td>
		</tr>
		<tr>
			<td>CTRL+ALT+S</td>
			<td>Start synchronization</td>
		</tr>
		<tr>
			<td>CTRL+ALT+C</td>
			<td>Start commit action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+U</td>
			<td>Start update action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+P</td>
			<td>Start patch creating action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+I</td>
			<td>Start adding to svn:ignore action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+K</td>
			<td>Start resource locking action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+W</td>
			<td>Start properties editing action</td>
		</tr>
		<tr>
			<td>CTRL+ALT+T</td>
			<td>Show resource history</td>
		</tr>
		<tr>
			<td>CTRL+ALT+T</td>
			<td>Show resource history</td>
		</tr>
		<tr>
			<td>CTRL+ALT+A</td>
			<td>Show annotations</td>
		</tr>
		<tr>
			<td>CTRL+ALT+L</td>
			<td>Compare with latest revision</td>
		</tr>
		<tr>
			<td>CTRL+ALT+R</td>
			<td>Compare with specified revision</td>
		</tr>
	</table>
	<br/>
	<br/>
	</div>	

EOHTML;


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