<?php  	
    /* Required eclipse basic classes */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	
    /* Functions and modules related to Navbar objects */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	
    /* Functions and modules related to the page top eclipse menu */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	
    /* Functions used for display events */
    require_once($_SERVER['DOCUMENT_ROOT'] . "/mtj/events.func.php");
    
    $App 	= new App();
    /* Left Navbar */	
    $Nav	= new Nav();	
    /*  Page top eclipse menu */
    $Menu 	= new Menu();

    /* Find the _projectCommon.php file and include it */
    include($App->getProjectCommon());
    
	/* Begin: page-specific settings.  Change these. */
	$pageTitle 		= "Mobile Tools for Java&trade; Developer Resources";
	$pageKeywords	= "developer, resources, mtj";
	$pageAuthor		= "Diego Madruga Sandin";
		
	/* Paste your HTML content between the EOHTML markers! */	
	$html = <<<EOHTML

<div id="maincontent">
	<div id="midcolumn">
	<h1>$pageTitle</h1>
	
		<div class="homeitem">
			<h3>Development Tools</h3>
				<ul class="midlist">
					<li><b><a
						href="http://git.eclipse.org/c/mtj/org.eclipse.mtj.git/">Git Repository</a></b><br/>
						MTJ development is managed in the Git Repository.
					</li>
					<li><a href="./bugs" target="_self"><b>Bug Process</b></a><br> 
					   View opened of submit new bugs and requests for enhancements.
					</li>
					<li><b><a
						href="http://wiki.eclipse.org/index.php/Platform-releng">Release Engineering</a></b> <br>
						See the instructions, FAQs and help from the Platform-Releng team.</li>
					<!-- Dashboard is currently not useful.
					<li><b><a
						href="http://www.eclipse.org/projects/dashboard/dashboard_detail.php?project=dsdp.mtj">Project
						Dashboard</a></b> <br>
						View generated project statistics.</li>
					-->
					<li><b><a
						href="https://dev.eclipse.org/committers">Eclipse Committer
						Tools</a></b> <br>
						Information on infrastructure status, file path information,
						FAQs, etc.</li>
				</ul>
		</div>
		<div class="homeitem">
			<h3>Development Resources</h3>
				<ul class="midlist">
					<li><b><a href="http://wiki.eclipse.org/index.php/API_Central">API Guidelines</a></b><br>
						Look <a href="http://help.eclipse.org/topic/org.eclipse.platform.doc.isv/reference/misc/api-usage-rules.html">
						here</a> for general Eclipse API rules of engagement. We strive to achieve 
						<a href="http://www.eclipse.org/projects/dev_process/eclipse-quality.php">
						Eclipse Quality</a>, as outlined in the draft of
						<a href="http://www.eclipse.org/projects/dev_process/Eclipse%20Quality%20APIs%20v2.pdf">
						Eclipse Quality APIs</a>.
						</li>
					<li><b><a href="http://wiki.eclipse.org/index.php/Development_Conventions_and_Guidelines">
					    Development Conventions and Guidelines</a></b><br>
						Coding standards, naming conventions, and other
						guidelines used by the Platform. MTJ will use these conventions
						until such time as deviation is required.</li>
				</ul>
		</div>
			</div>
			
</div>

EOHTML;


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