	<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="Author" content="IBM">
   <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
   <title>Platform Debug Release Notes</title>
</head>
<body>
<h1>Eclipse 3.6 Debug Platform Build Notes</h1>

<h2>Summary of API changes in 3.6</h2>

<h3>AbstractLaunchHistoryAction</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Method addition: <code>public void runWithEvent(IAction action, Event event)</code> </li>
  <li>Method addition: <code>public void init(IAction action)</code> </li>
  <li>Implemented Interface: <code>org.eclipse.ui.IActionDelegate2</code></li>
</ul>
<p><strong>Description: </strong>The implementation of <code>org.eclipse.ui.IActionDelegate2</code> and the addition of the two implemented
methods allows for the Ctrl key modifier to be used to open the last launched launch configuration when clicking on any launch history action.
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>ILaunchManager</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Method addition: <code>public String generateLaunchConfigurationName(String namePrefix)</code> </li>
  <li>Method addition: <code>public boolean isValidLaunchConfigurationName(String configname) throws IllegalArgumentException</code> </li>
  <li>Constant addition: <code>public static final String ATTR_PRIVATE</code></li>
</ul>
<p><strong>Description: </strong>The <code>generateLaunchConfigurationName(String namePrefix)</code> method is a replacement for the traditional <code>generateUniqueLaunchConfigurationNameFrom(configname)</code> method - which has been deprecated. 
The new method behaves the same as its predecessor but also provides error checking on the new name to ensure it does not use any system reserved characters or names, like <code>com</code> on Windows for example. If an invalid name or character is found
the method makes an effort to correct the name in one of two ways:
<ul>
<li>If an invalid name is given the configuration will be renamed to <code>launch_configuration</code></li>
<li>Any invalid characters found will be replaced with <code>_</code></li>
</ul>
<strong>Action required:</strong> This is a backwards compatible change. No action required.
</p>
<p>
<strong>Description:</strong> The <code>isValidLaunchConfigurationName(String configname)</code> method is used to validate the specified configuration name and throws an <code>IllegalArgumentException</code>. This method provides
the validation for the <code>generateLaunchConfigurationName(String namePrefix)</code> method.</p>
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>
<p><strong>Description:</strong> The <code>ATTR_PRIVATE</code> constant is a launch configuration attribute key used to identify whether a launch configuration should appear in the debug user interface (launch history, launch dialog, etc.). The value is a boolean. This attribute was previously defined in the debug UI plug-in, but was moved to core for headless plug-is that need to specify a value for this attribute. </p>
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>DebugCommandAction base class</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Class addition: <code>org.eclipse.debug.ui.actions.DebugCommandAction</code> </li>
  <li>Class addition: <code>org.eclipse.debug.ui.actions.DebugCommandHandler</code> </li>
  <li>Class addition: <code>org.eclipse.debug.core.commands.AbstractDebugCommand</code></li>
</ul>
<p><strong>Description:</strong>The <code>IDebugCommandHandler</code> interface allows debugger to implement debug action handlers which execute asynchronously.  Most of the debugger actions user this interface to communicate with the debug model.  However, debuggers which need to add their own asynchronous actions had to duplicate the debug framework actions which invoke the <code>IDebugCommandHandler</code> handlers.  <code>DebugCommandAction</code> and <code>DebugCommandHandler</code> are base classes which can be extended by debuggers to implement new types of actions with asynchronous execution handlers.  Also, this change includes a standard base class <code>AbstractDebugCommand</code> to help implement the <code>IDebugCommandHandler</code> interface.</p>
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>IRestartHandler</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Interface addition: <code>org.eclipse.debug.core.commands.IRestartHandler</code></li>
</ul>
<p><strong>Description:</strong>The <code>IRestartHandler</code> interface enables a new "Restart" command.  If a debugger supplies the <code>IRestartHandler</code> as an adapter to debug model elements, the new Restart command will be enabled.  The restart command appears in the Debug view context menu and can be configured as a short cut.</p>
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>RefreshUtil</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Class addition: <code>org.eclipse.debug.core.RefreshUtil</code></li>
</ul>
<p><strong>Description:</strong>The <code>RefreshUtil</code> class provides API to create and restore mementos for resource collections as well as a convenience API for refreshing resources. This support was moved to <code>org.eclipse.debug.core</code> from <code>org.eclispe.debug.ui</code> such that headless plug-ins can leverage these features. </p>
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>Launch Time Stamps</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Constant addition: <code>DebugPlugin - public static final String ATTR_LAUNCH_TIMESTAMP</code></li>
</ul>
<p><strong>Description:</strong>A time stamp value is added to all launch objects representing the time a
 launch configuration's <code>launch(...)</code> method was called. The value of the launch attribute is a 
 <code>String</code> representing a <code>long</code> generated from <code>System.currentTimeMillis()</code>. The attribute value
 can be obtained from <code>ILaunch.getAttrbute(DebugPlugin.ATTR_LAUNCH_TIMESTAMP)</code>.
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<h3>IDetailPane3</h3>
<p><strong>What is affected:</strong>
<ul>
  <li>Interface addition: <code>org.eclipse.debug.ui.IDetailPane3</code></li>
</ul>
<p><strong>Description:</strong>An optional interface that detail pane extensions may implement in order
 to interact with the containing part's <code>ISaveablePart</code> function.
<p><strong>Action required:</strong> This is a backwards compatible change. No action required. </p>

<p>&nbsp;</p>
</body>
</html>
