<?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'
/*******************************************************************************
 * Copyright (c) 2006 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Wayne Beaton (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

#*****************************************************************************
#
# faq.php
#
# Author: 		Wayne Beaton
# Date:			June 5, 2006
#
# Description:
#
#
#****************************************************************************

# Begin: page-specific settings.  Change these.
$pageTitle 		= "UDC New and Noteworthy";
$pageKeywords	= "Eclipse, usage data, usagedata";
$pageAuthor		= "Wayne Beaton";


ob_start();
?>
<link
	rel="stylesheet" type="text/css" href="layout.css" media="screen" />
<div id="maincontent">

<div id="midcolumn">
<h1><?= $pageTitle ?></h1>

<div class="homeitem3col">
<a name="1.1.0M7"></a>
<h3>1.1.0M7</h3>

<h4>System Information</h4>
<p>The Usage Data Collector now collects information about the user's
environment. 

<ul>
	<li>Operating System</li>
	<li>System Architecture</li>
	<li>Window System</li>
	<li>Locale</li>
	<li>Number of processors available</li>
	<li>And a number of system properties:
	<ul>
		<li>java.runtime.name</li>
		<li>java.runtime.version</li>
		<li>java.specification.name</li>
		<li>java.specification.vendor</li>
		<li>java.specification.version</li>
		<li>java.vendor</li>
		<li>java.version</li>
		<li>java.vm.info</li>
		<li>java.vm.name</li>
		<li>java.vm.specification.name</li>
		<li>java.vm.specification.vendor</li>
		<li>java.vm.specification.version</li>
		<li>java.vm.vendor</li>
		<li>java.vm.version</li>
	</ul>
	</li>
</ul>
</div>
</div>

<? include "rightcol.php"; ?></div>
<?php
$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>