<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ECF New and Noteworthy</title>
<link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css">

</head>

<body bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%">
  <tbody>
    <tr>
      <td width="69%" class="bannertext">
        <font class="indextop style">eclipse communication framework</font>
        <br><br>
        <font class="indexsub">an eclipse technology project</font>
        <br><br>
        <font class="indextop style2">New and Noteworthy</font><br>2.0.0 milestone 4</font>
        <br><br><br>
        Return to <a href="downloads.php">ECF download page</a></br>
        <br><br>
        <a href="NewAndNoteworthy_1.0.0.html">New and Noteworthy for 1.0.0</a><br>
        <a href="NewAndNoteworthy_1.1.0.html">New and Noteworthy for 1.1.0</a><br>
        <a href="NewAndNoteworthy_1.2.0.html">New and Noteworthy for 1.2.0</a><br>
        <br><br>
      </td>
      <td width="31%">
        <div align="center">
          <img src="../images/Idea.jpg" width="120" height="86" hspace="50" align="middle">
        </div>
      </td>
    </tr>
  </tbody>
</table>

<hr>

<table>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Real-Time Shared Editing over XMPP/Google Talk and Skype</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
    The ECF team is working on supporting several use cases based upon real-time shared editing.  For example, online code reviews, collborative
    debugging and testing, and distributed pair programming.  We've just started this work, and there is now some 'signs-of-life' work
    that works on the XMPP/Google Talk and Skype providers.  See the page <a href="http://wiki.eclipse.org/DocShare_Plugin">DocShare plugin wiki page</a>
    for usage instructions and screen shots.  Please feel free to provide input/feedback about desired features at both the UI level and the 
    API level via the ECF mailing list <mailto:ecf-dev@eclipse.org> or the <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=ECF&bug_severity=enhancement">ECF bugs/enhancements list.</a>
    </p>
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>URL and Eclipse View sharing</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       It's now possible to immediately share URLs and to remotely open Eclipse views via ECF the XMPP/Google Talk and/or Skype providers.
       To do so, open the context menu (right click) on the buddy of your choice in the contacts list:
       
              <p></p>       
       <img src="images/screens/showurl.png"></li>
       <br><br>
       Then the receiver will see a notification like this
       <p></p>
       <img src="images/screens/showurlreceive.png"></li>
       <br><br>
       And if they accept the request will then see
       <p></p>
       <img src="images/screens/showurlreceive1.png"></li>
       <br><br>
       The 'Send Show View Request...' has a similar sequence.
       
       <br><br>
    </td>
  </TR>

  <TR> <!----------------------------------------------------->
    <TD colSpan=2> <HR> </TD>
  </TR>
  
 <TR><TD colSpan=2><H2>ECF API Changes</H2></TD>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Discovery API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       The discovery API has been simplified and extended.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=209774">bug #209774</a> and the
       <a href="http://wiki.eclipse.org/index.php/ECF_API_Docs#Discovery_API">ECF Discovery API</a> documentation.
       <br><br>
       <b>IMPORTANT NOTE:</b>The discovery API has undergone a number of simplifications that make it easier to use, but have broken backward compatibility.  Applications
       that have been written to a previous version of the discovery API will have to be changed to use the new API.  See the <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.html">IDiscoveryContainerAdapter</a>
       class for more information.
    </td>
  </TR>

    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>FileTransfer API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    	Added support improvided simplified outgoing file transfer.  Added new provider for SCP-based file retrieve (download)
    	and file send (upload).  See documentation for <a href="http://wiki.eclipse.org/ECF_API_Docs#File_Transfer_API">ECF File Transfer API</a>.
       <br><br>
    </td>
  </TR>

</table>

</body>
</html>
