Some of the most exciting features included with the Lync Client Platform SDK are the new user interface controls for WPF and Silverlight.  These controls enable many of the most commonly accessed features of Lync to be embedded, quickly and easily, in line of business applications.  Connectivity is a snap, because all of these controls rely upon a running instance of Lync to be present on the user’s desktop.  The controls establish their connection with Lync automatically, and require no special configuration by the developer or user of the application.

The controls ship with a default look-and-feel which emulates the behavior of the Lync desktop client, but like any other WPF or Silverlight control, they can be customized extensively by either restyling or retemplating.  We’ll discuss the customization of these controls more in a future post, but lets begin by introducing the controls:

ContactCard

A simple control which displays the presence, photo, and contact information about any user.  Information is displayed in the format of a business card, with a set of buttons across the bottom which enable the user to initiate a conversation by email, IM, voice, and various other modalities.  Similar to the popup contact cards in the Lync client, this card can be expanded to show a set of tabs which display additional information about the contact and his organization.

ContactList

Displays the user’s saved contacts and groups, just like Lync does, including the ability to sort by Groups, Status, or Relationship
ContactSearch
ContactSearchInputBox
ContactSearchResultList
A set of controls which enable searching for contacts by Name or Skill.  The ContactSearchInputBox and ContactSearchResultList are designed to allow separate placement of the search user interface elements on the page, whereas the ContactSearch control is an all-in-one option which displays the results in a list below the search input box, just as it appears in the Lync client.
CustomContactList
CustomContactListItem
A simple set of controls which provide the capability to define a customizable list of contacts to display. This control offers developers the ability to customize the view for displaying results with photos, or a more compact option which only shows the name and presence. It’s perfect for use on internal team sites and portals.
MyStatusArea
MyPresenceChooser
MyNoteBox
The MyStatusArea control shows the user’s name, photo, and basic presence information, arranged in a layout similar to that seen at the top of the Lync client.  It includes capabilities which allow the user to edit his presence note, or to change his current status.  For more flexible layout options, these capabilities are also available separately by using the MyNoteBox and MyPresenceChooser controls, respectively.
PresenceIndicator A small control which displays a color-coded presence indicator, and optionally the photo, of a specified contact.  When clicked, this control shows a popup version of the contact card, which features a “quick-connect” menu of options for initiating a conversation.
ScheduleMeetingButton
SendEmailButton
SendFileButton
ShareDesktopButton
StartAudioCallButton
StartInstantMessagingButton
StartVideoCallButton
These controls enable developers to quickly embed buttons in their applications which can be used to start a conversation with a specified contact in any of the modalities indicated.  When clicked, they launch Lync’s conversation window using UI automation.

As you can see, the Lync controls enable a wide range of ready-to-use features that make it very easy for developers to integrate collaboration functionality directly within their business applications and websites.  In our next post, we will present a “Hello World” sample application that demonstrates just how easy this is.