<!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 subproject</font>
        <br><br>
        <font class="indextop style2">New and Noteworthy</font><br>1.0.0 Milestone 6</font>
        <br><br><br>
        Return to <a href="downloads.php">ECF download page</a></br>
        Return to <a href="comm_resources.php">ECF communication resources page</a>
        <br><br>
        <a href="NewAndNoteworthy_0.4.0.html">New and Noteworthy for 0.4.0</a><br>
        <a href="NewAndNoteworthy_0.5.2.html">New and Noteworthy for 0.5.2</a><br>
        <a href="NewAndNoteworthy_0.5.4.html">New and Noteworthy for 0.5.4</a><br>
        <a href="NewAndNoteworthy_0.6.0.html">New and Noteworthy for 0.6.0</a><br>
        <a href="NewAndNoteworthy_0.6.2.html">New and Noteworthy for 0.6.2</a><br>
        <a href="NewAndNoteworthy_0.7.0.html">New and Noteworthy for 0.7.0</a><br>
        <a href="NewAndNoteworthy_0.7.5.html">New and Noteworthy for 0.7.5</a><br>
        <a href="NewAndNoteworthy_0.7.6.html">New and Noteworthy for 0.7.6</a><br>
        <a href="NewAndNoteworthy_0.8.0.html">New and Noteworthy for 0.8.0</a><br>
        <a href="NewAndNoteworthy_0.8.1.html">New and Noteworthy for 0.8.1</a><br>
        <a href="NewAndNoteworthy_0.8.2.html">New and Noteworthy for 0.8.2</a><br>
        <a href="NewAndNoteworthy_0.8.4.html">New and Noteworthy for 0.8.4</a><br>
        <a href="NewAndNoteworthy_0.8.5.html">New and Noteworthy for 0.8.5</a><br>
        <a href="NewAndNoteworthy_0.8.6.html">New and Noteworthy for 0.8.6</a><br>
        <a href="NewAndNoteworthy_0.8.7.html">New and Noteworthy for 0.8.7</a><br>
        <a href="NewAndNoteworthy_0.8.9.html">New and Noteworthy for 0.8.9</a><br>
        <a href="NewAndNoteworthy_0.9.0.html">New and Noteworthy for 0.9.0</a><br>
        <a href="NewAndNoteworthy_0.9.1.html">New and Noteworthy for 0.9.1</a><br>
        <a href="NewAndNoteworthy_0.9.2.html">New and Noteworthy for 0.9.2</a><br>
        <a href="NewAndNoteworthy_0.9.3.html">New and Noteworthy for 0.9.3</a><br>
        <a href="NewAndNoteworthy_0.9.4.html">New and Noteworthy for 0.9.4</a><br>
        <a href="NewAndNoteworthy_0.9.5.html">New and Noteworthy for 0.9.5</a><br>
        <a href="NewAndNoteworthy_0.9.6.html">New and Noteworthy for 0.9.6</a><br>
        <a href="NewAndNoteworthy_1.0.0M5.html">New and Noteworthy for 1.0.0 Milestone 5</a><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 colSpan=2><H2>New ECF Providers for MSN and Bittorrent Protocol Support</H2></TD>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>MSN Provider</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        MSN Messenger provider added to support ECF-based instant message and presence via MSN Messenger Accounts.  
        <p></p>
              <img src="images/screens/dropdownui.png">
              <p></p>
              <img src="images/screens/msnconnect.png">
              <p></p>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Bittorrent Provider</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        Bittorrent provider added for file retrieval.  
        <p></p>
              <img src="images/screens/dropdownui.png">
              <p></p>
              <img src="images/screens/bittorrent.png">
              <p></p>
    </td>
  </TR>

  <TR> <!----------------------------------------------------->
    <TD colSpan=2> <HR> </TD>
  </TR>
  
    <TR><TD colSpan=2><H2>Feature Additions</H2></TD>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Peer-to-Peer File Transfer for XMPP Accounts</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
        Peer-to-peer file transfer (using the ECF file transfer API) was added for XMPP accounts.
        
        <p></p>
              <img src="images/screens/imfiletransfermenu.png">
              <p></p>
    </td>
  </TR>

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

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Instant Messaging History API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      Added history API for accessing chat history information.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=177014">bug #177014</a>
      for details.
            <br><br>
    </TD>
   </tr>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Chat Robot API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
      Added robot API and extension points for creating robots that can chat via IM or chat rooms.  See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=180078">180078</a>
      for details.  This API allows robots to be defined via two new extension points in the new plugin <b>org.eclipse.ecf.presence.bot</b>.
      <p></p>
      For example, here's the definition of an imrobot 'Fliwatuet' that will connect to the account at <b>fliwatuet@ecf.eclipse.org</b> and
      then receive messages and notifications via the imcommand handler class <b>org.eclipse.ecf.presence.bot.DefaultIMMessageHandler</b>:
      </p>
      <p>
      
            <pre>
   &lt;extension
         point=&quot;org.eclipse.ecf.presence.bot.imRobot&quot;&gt;
      &lt;imRobot
            connectId=&quot;fliwatuet@ecf.eclipse.org&quot;
            containerFactoryName=&quot;ecf.xmpp.smack&quot;
            id=&quot;org.eclipse.ecf.presence.imbot&quot;
            connectPassword=&quot;password&quot;/&gt;
      &lt;/imRobot&gt;
   &lt;/extension&gt;

   &lt;extension
         point=&quot;org.eclipse.ecf.presence.bot.imMessageHandler&quot;&gt;
      &lt;handler
            imRobotId=&quot;org.eclipse.ecf.presence.imbot&quot;
            class=&quot;org.eclipse.ecf.presence.imbot.MyIMMessageHandler&quot;&gt;
      &lt;/handler&gt;
   &lt;/extension&gt;
	</pre>
      
      <p></p>
      Here's an example for use of the chatroomrobot extension point for connecting to an IRC channel:
      
      <pre>
   &lt;extension
         point=&quot;org.eclipse.ecf.presence.bot.chatRoomRobot&quot;&gt;
      &lt;chatRoomRobot
            chatRoom=&quot;#eclipse-ecf&quot;
            connectId=&quot;irc://slewis2_@irc.freenode.net&quot;
            containerFactoryName=&quot;ecf.irc.irclib&quot;
            id=&quot;org.eclipse.ecf.presence.bot.ircbot&quot;&gt;
      &lt;/chatRoomRobot&gt;
   &lt;/extension&gt;

   &lt;extension
         point=&quot;org.eclipse.ecf.presence.bot.chatRoomMessageHandler&quot;&gt;
      &lt;handler
            chatRoomRobotId=&quot;org.eclipse.ecf.presence.bot.ircbot&quot;
            class=&quot;org.eclipse.ecf.presence.bot.MyChatRoomMessageHandler&quot;&gt;
      &lt;/handler&gt;
   &lt;/extension&gt;
      </pre>
      
      </p>
      See also the <a href="http://wiki.eclipse.org/index.php/Bot_Framework">Bot Framework</a> tutorial.
            <br><br>
    </TD>
   </tr>


  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Discovery API Simplification</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
      Small simplifications to the discovery API.  For example, removed some methods from <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.html">IDiscoveryContainerAdapter</a>.
      <br><br>
    </TD>
   </tr>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Support for All Equinox-based Runtimes</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    Removed references to packages and classes that are Eclipse-based.  For details see
    <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=176322">bug #176322</a>.  With this change, all non-ui ECF
    bundles (i.e. those whose name does not end with *.ui) are able to operate in all Equinox configurations...e.g. 
    servers, RCP apps, eRCP, and/or Eclipse.
      <br><br>
    </TD>
   </tr>

</table>

</body>
</html>
