<!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>1.2.0</font>
        <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>Presence and Chat UI Improvements</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       A number of UI changes/additions were contributed:
       <p></p>
		Buddy list pictures now show when hovering over a buddy for supporting providers (XMPP/Google Talk):
       <p></p>
       <img src="images/screens/avatar.png"></li>
       <p></p>
       Several improvements to chat UI (IRC/XMPP), including operations on members (e.g. WHOIS for IRC), user count, better handling of 
       text scrolling, etc.
       <p></p>       
       <img src="images/screens/chatviewui.png"></li>
       <br><br>
    </td>
  </TR>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>BugDay Fixes/Enhancements</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    
       ECF had an excellent number of <a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Technology&product=ECF&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=2007-06-25&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">bugs fixed</a> via
       <a href="http://wiki.eclipse.org/BugDay">Bug Day</a> participation.  Thanks to all contributors in the community for the excellent work!
       <br><br>
       <br><br>
    </td>
  </TR>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Jingle-Based VOIP</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       See terrific work for the Google SOC by Moritz Post <a href="http://wiki.eclipse.org/VoIP_via_the_ECF_Call_API_and_the_Jingle_Protocol">here</a>.  
       <br><br>
       <br><br>
    </td>
  </TR>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>ECF Server Applications</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       See <a href="http://wiki.eclipse.org/ECF_Servers">ECF Servers wiki page</a>.  Also servers associated with each of the 
       new providers described below (Websphere CE, Weblogic, JGroups).  
       <br><br>
       <br><br>
    </td>
  </TR>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Browse Contacts</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    
       Added the ability to open a browse contacts dialog and interactively search through contacts.
       <p></p>
       <img src="images/screens/browsecontacts.png">
       <p></p>
       See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=195770">bug #195770</a> and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=195772">bug #196772</a>.
       <br><br>
       <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%">
       Significant additions to the discovery API.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=200791">bug #200791</a> and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=199259">bug #199259</a>.
       <br><br>
    </td>
  </TR>


    <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Presence API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    	Added support for sending/receiving subject/topic updates for a chat room (IChatRoomAdminListener/IChatRoomAdminSender).
       <br><br>
    </td>
  </TR>

  <TR>
  
       <br><br>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>New Providers:  IBM Websphere CE, BEA Weblogic, JGroups Multicast</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        See the <a href="http://ecf1.osuosl.org">ECF @ OSUOSL website</a>.
       <br><br>
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Changed EE for org.eclipse.ecf.provider</B>
        </P>
    </TD>
    <TD vAlign=top width="70%"><p>
     Refactored classes out of bundle and changed execution environment for <b>org.eclipse.ecf.provider</b> bundle to CDC 1.1/Foundation 1.1.  Allows this bundle 
     to be used in other runtime environments.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=202100">bug #202100</a>.</p>
      <br><br>
    </TD>
   </tr>

    <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>FileTransfer API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    	Added support file transfer pause and resume.  See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=204386">#204386</a>.  Also
    	added new API for partial file transfers.  See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=205011">#205011</a>.
       <br><br>
       Added support for pause/resume for both the <b>org.eclipse.ecf.provider.filetransfer</b> and the <b>org.eclipse.ecf.provider.filetransfer.httpclient</b> 
       implementations.
       <br><br>
    </td>
  </TR>

    <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>ECF Remote Services Improvments</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        ECF has a little-known API for accessing remote OSGi services called the <a href="http://wiki.eclipse.org/index.php/ECF_API_Docs#Remote_Services_API">Remote Services API</a>.  
        This API allows the registration, discovery, and remote access to arbitrary services.  Services can be accessed via the
        usual OSGi services registry API (i.e. BundleContext.getServiceReference), or via a more explicit remote service API.  See
        blog posting about addressing issues of network transparency <a href="http://eclipseecf.blogspot.com/2007/10/remote-osgi-services-questions-of.html">here</a>.
       <br><br>
       The remote services API can be used by clients in either a network transparent manner or not...to be decided at registration and lookup time
       by the service publisher
       and the service client, respectively.  See example/test code <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/tests/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/?root=Technology_Project">here</a>.
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Automated Build</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        ECF now has an automated build and server setup to run automated daily builds.  
        <br><br>
       <br><br>
    </TD>
   </tr>


</table>

</body>
</html>
