<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FClipboard</id>
		<title>Java/SWT JFace Eclipse/Clipboard - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSWT_JFace_Eclipse%2FClipboard"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Clipboard&amp;action=history"/>
		<updated>2026-04-22T00:51:00Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Clipboard&amp;diff=5656&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Clipboard&amp;diff=5656&amp;oldid=prev"/>
				<updated>2010-06-01T05:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:55, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Clipboard&amp;diff=5655&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/SWT_JFace_Eclipse/Clipboard&amp;diff=5655&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Clipboard Composite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.dnd.RTFTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;
import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;
import org.eclipse.swt.events.SelectionListener;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
public class Ch12ClipboardComposite extends Composite {&lt;br /&gt;
  public Ch12ClipboardComposite(Composite parent) {&lt;br /&gt;
    super(parent, SWT.NONE);&lt;br /&gt;
    FillLayout layout = new FillLayout();&lt;br /&gt;
    setLayout(layout);&lt;br /&gt;
    Button b = new Button(this, SWT.NONE);&lt;br /&gt;
    b.setText(&amp;quot;Copy to system clipboard&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionListener() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        Clipboard clipboard = new Clipboard(getDisplay());&lt;br /&gt;
        String rtfData = &amp;quot;{\\rtf1\\b\\i Hello World}&amp;quot;;&lt;br /&gt;
        RTFTransfer rtfTransfer = RTFTransfer.getInstance();&lt;br /&gt;
        clipboard.setContents(new Object[] { rtfData },&lt;br /&gt;
            new Transfer[] { rtfTransfer });&lt;br /&gt;
        clipboard.dispose();&lt;br /&gt;
      }&lt;br /&gt;
      public void widgetDefaultSelected(SelectionEvent e) {&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copy and Paste ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * All Right Reserved. &lt;br /&gt;
 * Copyright (c) 1998, 2004 Jackwind Li Guojie&lt;br /&gt;
 * &lt;br /&gt;
 * Created on 2004-4-28 10:43:40 by JACK&lt;br /&gt;
 * $Id$&lt;br /&gt;
 * &lt;br /&gt;
 *****************************************************************************/&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.dnd.RTFTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.TextTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;
import org.eclipse.swt.dnd.TransferData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.ToolBar;&lt;br /&gt;
import org.eclipse.swt.widgets.ToolItem;&lt;br /&gt;
public class CopyPaste {&lt;br /&gt;
  Display display = new Display();&lt;br /&gt;
  Shell shell = new Shell(display);&lt;br /&gt;
  public CopyPaste() {&lt;br /&gt;
    shell.setLayout(new GridLayout());&lt;br /&gt;
    &lt;br /&gt;
    ToolBar toolBar = new ToolBar(shell, SWT.FLAT);&lt;br /&gt;
    ToolItem itemCopy = new ToolItem(toolBar, SWT.PUSH);&lt;br /&gt;
    ToolItem itemPaste = new ToolItem(toolBar, SWT.PUSH);&lt;br /&gt;
    itemCopy.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    itemPaste.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    itemCopy.addListener(SWT.Selection, new Listener() {&lt;br /&gt;
      public void handleEvent(Event event) {&lt;br /&gt;
        Clipboard clipboard = new Clipboard(display);&lt;br /&gt;
        String plainText = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
        String rtfText = &amp;quot;{\\rtf1\\b Hello World}&amp;quot;;&lt;br /&gt;
        TextTransfer textTransfer = TextTransfer.getInstance();&lt;br /&gt;
        RTFTransfer rftTransfer = RTFTransfer.getInstance();&lt;br /&gt;
        clipboard.setContents(new String[]{plainText, rtfText}, new Transfer[]{textTransfer, rftTransfer});&lt;br /&gt;
        clipboard.dispose();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    itemPaste.addListener(SWT.Selection, new Listener() {&lt;br /&gt;
      public void handleEvent(Event event) {&lt;br /&gt;
        Clipboard clipboard = new Clipboard(display);&lt;br /&gt;
        &lt;br /&gt;
        TransferData[] transferDatas = clipboard.getAvailableTypes();&lt;br /&gt;
        for(int i=0; i&amp;lt;transferDatas.length; i++) {&lt;br /&gt;
          // Checks whether RTF format is available.&lt;br /&gt;
          if(RTFTransfer.getInstance().isSupportedType(transferDatas[i])) {&lt;br /&gt;
            System.out.println(&amp;quot;Data is available in RTF format&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        String plainText = (String)clipboard.getContents(TextTransfer.getInstance());&lt;br /&gt;
        String rtfText = (String)clipboard.getContents(RTFTransfer.getInstance());&lt;br /&gt;
        &lt;br /&gt;
        System.out.println(&amp;quot;PLAIN: &amp;quot; + plainText + &amp;quot;\n&amp;quot; + &amp;quot;RTF: &amp;quot; + rtfText);&lt;br /&gt;
        &lt;br /&gt;
        clipboard.dispose();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    shell.pack();&lt;br /&gt;
    shell.open();&lt;br /&gt;
    //textUser.forceFocus();&lt;br /&gt;
    // Set up the event loop.&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch()) {&lt;br /&gt;
        // If no more entries in event queue&lt;br /&gt;
        display.sleep();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  private void init() {&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new CopyPaste();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copy and paste data with the clipboard ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Clipboard example snippet: copy and paste data with the clipboard&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.dnd.TextTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;
import org.eclipse.swt.layout.FormAttachment;&lt;br /&gt;
import org.eclipse.swt.layout.FormData;&lt;br /&gt;
import org.eclipse.swt.layout.FormLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Event;&lt;br /&gt;
import org.eclipse.swt.widgets.Listener;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Text;&lt;br /&gt;
public class Snippet94 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    final Clipboard cb = new Clipboard(display);&lt;br /&gt;
    final Shell shell = new Shell(display);&lt;br /&gt;
    shell.setLayout(new FormLayout());&lt;br /&gt;
    final Text text = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL&lt;br /&gt;
        | SWT.H_SCROLL);&lt;br /&gt;
    Button copy = new Button(shell, SWT.PUSH);&lt;br /&gt;
    copy.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    copy.addListener(SWT.Selection, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        String textData = text.getSelectionText();&lt;br /&gt;
        TextTransfer textTransfer = TextTransfer.getInstance();&lt;br /&gt;
        cb.setContents(new Object[] { textData },&lt;br /&gt;
            new Transfer[] { textTransfer });&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    Button paste = new Button(shell, SWT.PUSH);&lt;br /&gt;
    paste.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    paste.addListener(SWT.Selection, new Listener() {&lt;br /&gt;
      public void handleEvent(Event e) {&lt;br /&gt;
        TextTransfer transfer = TextTransfer.getInstance();&lt;br /&gt;
        String data = (String) cb.getContents(transfer);&lt;br /&gt;
        if (data != null) {&lt;br /&gt;
          text.insert(data);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    FormData data = new FormData();&lt;br /&gt;
    data.right = new FormAttachment(100, -5);&lt;br /&gt;
    data.top = new FormAttachment(0, 5);&lt;br /&gt;
    copy.setLayoutData(data);&lt;br /&gt;
    data = new FormData();&lt;br /&gt;
    data.right = new FormAttachment(100, -5);&lt;br /&gt;
    data.top = new FormAttachment(copy, 5);&lt;br /&gt;
    paste.setLayoutData(data);&lt;br /&gt;
    data = new FormData();&lt;br /&gt;
    data.left = new FormAttachment(0, 5);&lt;br /&gt;
    data.top = new FormAttachment(0, 5);&lt;br /&gt;
    data.right = new FormAttachment(copy, -5);&lt;br /&gt;
    data.bottom = new FormAttachment(100, -5);&lt;br /&gt;
    text.setLayoutData(data);&lt;br /&gt;
    shell.setSize(200, 200);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    cb.dispose();&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enable/disable menu depending on clipboard content availability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Clipboard example snippet: enable/disable menu depending on clipboard content availability&lt;br /&gt;
 *&lt;br /&gt;
 * For a list of all SWT example snippets see&lt;br /&gt;
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets&lt;br /&gt;
 */&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.dnd.TextTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;
import org.eclipse.swt.dnd.TransferData;&lt;br /&gt;
import org.eclipse.swt.events.MenuAdapter;&lt;br /&gt;
import org.eclipse.swt.events.MenuEvent;&lt;br /&gt;
import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;
import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.Menu;&lt;br /&gt;
import org.eclipse.swt.widgets.MenuItem;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Text;&lt;br /&gt;
public class Snippet122 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    final Clipboard cb = new Clipboard(display);&lt;br /&gt;
    Shell shell = new Shell(display);&lt;br /&gt;
    shell.setLayout(new FillLayout());&lt;br /&gt;
    final Text text = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.WRAP);&lt;br /&gt;
    Menu menu = new Menu(shell, SWT.POP_UP);&lt;br /&gt;
    final MenuItem copyItem = new MenuItem(menu, SWT.PUSH);&lt;br /&gt;
    copyItem.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    copyItem.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String selection = text.getSelectionText();&lt;br /&gt;
        if (selection.length() == 0)&lt;br /&gt;
          return;&lt;br /&gt;
        Object[] data = new Object[] { selection };&lt;br /&gt;
        Transfer[] types = new Transfer[] { TextTransfer.getInstance() };&lt;br /&gt;
        cb.setContents(data, types);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    final MenuItem pasteItem = new MenuItem(menu, SWT.PUSH);&lt;br /&gt;
    pasteItem.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    pasteItem.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String string = (String) (cb.getContents(TextTransfer&lt;br /&gt;
            .getInstance()));&lt;br /&gt;
        if (string != null)&lt;br /&gt;
          text.insert(string);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    menu.addMenuListener(new MenuAdapter() {&lt;br /&gt;
      public void menuShown(MenuEvent e) {&lt;br /&gt;
        // is copy valid?&lt;br /&gt;
        String selection = text.getSelectionText();&lt;br /&gt;
        copyItem.setEnabled(selection.length() &amp;gt; 0);&lt;br /&gt;
        // is paste valid?&lt;br /&gt;
        TransferData[] available = cb.getAvailableTypes();&lt;br /&gt;
        boolean enabled = false;&lt;br /&gt;
        for (int i = 0; i &amp;lt; available.length; i++) {&lt;br /&gt;
          if (TextTransfer.getInstance()&lt;br /&gt;
              .isSupportedType(available[i])) {&lt;br /&gt;
            enabled = true;&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        pasteItem.setEnabled(enabled);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    text.setMenu(menu);&lt;br /&gt;
    shell.setSize(200, 200);&lt;br /&gt;
    shell.open();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    cb.dispose();&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SWT Clipboard Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.io.ByteArrayInputStream;&lt;br /&gt;
import java.io.ByteArrayOutputStream;&lt;br /&gt;
import java.io.DataInputStream;&lt;br /&gt;
import java.io.DataOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import org.eclipse.swt.SWT;&lt;br /&gt;
import org.eclipse.swt.custom.ScrolledComposite;&lt;br /&gt;
import org.eclipse.swt.custom.StyledText;&lt;br /&gt;
import org.eclipse.swt.dnd.ByteArrayTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Clipboard;&lt;br /&gt;
import org.eclipse.swt.dnd.DND;&lt;br /&gt;
import org.eclipse.swt.dnd.FileTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.HTMLTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.RTFTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.TextTransfer;&lt;br /&gt;
import org.eclipse.swt.dnd.Transfer;&lt;br /&gt;
import org.eclipse.swt.dnd.TransferData;&lt;br /&gt;
import org.eclipse.swt.events.SelectionAdapter;&lt;br /&gt;
import org.eclipse.swt.events.SelectionEvent;&lt;br /&gt;
import org.eclipse.swt.graphics.Point;&lt;br /&gt;
import org.eclipse.swt.graphics.Rectangle;&lt;br /&gt;
import org.eclipse.swt.layout.FillLayout;&lt;br /&gt;
import org.eclipse.swt.layout.GridData;&lt;br /&gt;
import org.eclipse.swt.layout.GridLayout;&lt;br /&gt;
import org.eclipse.swt.widgets.Button;&lt;br /&gt;
import org.eclipse.swt.widgets.rubo;&lt;br /&gt;
import org.eclipse.swt.widgets.ruposite;&lt;br /&gt;
import org.eclipse.swt.widgets.DirectoryDialog;&lt;br /&gt;
import org.eclipse.swt.widgets.Display;&lt;br /&gt;
import org.eclipse.swt.widgets.FileDialog;&lt;br /&gt;
import org.eclipse.swt.widgets.Group;&lt;br /&gt;
import org.eclipse.swt.widgets.Label;&lt;br /&gt;
import org.eclipse.swt.widgets.List;&lt;br /&gt;
import org.eclipse.swt.widgets.Shell;&lt;br /&gt;
import org.eclipse.swt.widgets.Table;&lt;br /&gt;
import org.eclipse.swt.widgets.TableItem;&lt;br /&gt;
import org.eclipse.swt.widgets.Text;&lt;br /&gt;
public class ClipboardExample {&lt;br /&gt;
  Clipboard clipboard;&lt;br /&gt;
  Shell shell;&lt;br /&gt;
  Text copyText;&lt;br /&gt;
  Text pasteText;&lt;br /&gt;
  Text copyRtfText;&lt;br /&gt;
  Text pasteRtfText;&lt;br /&gt;
  Text copyHtmlText;&lt;br /&gt;
  Text pasteHtmlText;&lt;br /&gt;
  Table copyFileTable;&lt;br /&gt;
  Table pasteFileTable;&lt;br /&gt;
  Text text;&lt;br /&gt;
  Combo combo;&lt;br /&gt;
  StyledText styledText;&lt;br /&gt;
  Label status;&lt;br /&gt;
  static final int SIZE = 60;&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Display display = new Display();&lt;br /&gt;
    new ClipboardExample().open(display);&lt;br /&gt;
    display.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public void open(Display display) {&lt;br /&gt;
    clipboard = new Clipboard(display);&lt;br /&gt;
    shell = new Shell(display);&lt;br /&gt;
    shell.setText(&amp;quot;SWT Clipboard&amp;quot;);&lt;br /&gt;
    shell.setLayout(new FillLayout());&lt;br /&gt;
    ScrolledComposite sc = new ScrolledComposite(shell, SWT.H_SCROLL&lt;br /&gt;
        | SWT.V_SCROLL);&lt;br /&gt;
    Composite parent = new Composite(sc, SWT.NONE);&lt;br /&gt;
    sc.setContent(parent);&lt;br /&gt;
    parent.setLayout(new GridLayout(2, true));&lt;br /&gt;
    Group copyGroup = new Group(parent, SWT.NONE);&lt;br /&gt;
    copyGroup.setText(&amp;quot;Copy From:&amp;quot;);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_BOTH);&lt;br /&gt;
    copyGroup.setLayoutData(data);&lt;br /&gt;
    copyGroup.setLayout(new GridLayout(3, false));&lt;br /&gt;
    Group pasteGroup = new Group(parent, SWT.NONE);&lt;br /&gt;
    pasteGroup.setText(&amp;quot;Paste To:&amp;quot;);&lt;br /&gt;
    data = new GridData(GridData.FILL_BOTH);&lt;br /&gt;
    pasteGroup.setLayoutData(data);&lt;br /&gt;
    pasteGroup.setLayout(new GridLayout(3, false));&lt;br /&gt;
    Group controlGroup = new Group(parent, SWT.NONE);&lt;br /&gt;
    controlGroup.setText(&amp;quot;Control API:&amp;quot;);&lt;br /&gt;
    data = new GridData(GridData.FILL_BOTH);&lt;br /&gt;
    data.horizontalSpan = 2;&lt;br /&gt;
    controlGroup.setLayoutData(data);&lt;br /&gt;
    controlGroup.setLayout(new GridLayout(5, false));&lt;br /&gt;
    Group typesGroup = new Group(parent, SWT.NONE);&lt;br /&gt;
    typesGroup.setText(&amp;quot;Available Types&amp;quot;);&lt;br /&gt;
    data = new GridData(GridData.FILL_BOTH);&lt;br /&gt;
    data.horizontalSpan = 2;&lt;br /&gt;
    typesGroup.setLayoutData(data);&lt;br /&gt;
    typesGroup.setLayout(new GridLayout(2, false));&lt;br /&gt;
    status = new Label(parent, SWT.BORDER);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.horizontalSpan = 2;&lt;br /&gt;
    data.heightHint = 60;&lt;br /&gt;
    status.setLayoutData(data);&lt;br /&gt;
    createTextTransfer(copyGroup, pasteGroup);&lt;br /&gt;
    createRTFTransfer(copyGroup, pasteGroup);&lt;br /&gt;
    createHTMLTransfer(copyGroup, pasteGroup);&lt;br /&gt;
    createFileTransfer(copyGroup, pasteGroup);&lt;br /&gt;
    createMyTransfer(copyGroup, pasteGroup);&lt;br /&gt;
    createControlTransfer(controlGroup);&lt;br /&gt;
    createAvailableTypes(typesGroup);&lt;br /&gt;
    sc.setMinSize(parent.ruputeSize(SWT.DEFAULT, SWT.DEFAULT));&lt;br /&gt;
    sc.setExpandHorizontal(true);&lt;br /&gt;
    sc.setExpandVertical(true);&lt;br /&gt;
    Point size = shell.ruputeSize(SWT.DEFAULT, SWT.DEFAULT);&lt;br /&gt;
    Rectangle monitorArea = shell.getMonitor().getClientArea();&lt;br /&gt;
    shell.setSize(Math.min(size.x, monitorArea.width - 20), Math.min(&lt;br /&gt;
        size.y, monitorArea.height - 20));&lt;br /&gt;
    shell.open();&lt;br /&gt;
    while (!shell.isDisposed()) {&lt;br /&gt;
      if (!display.readAndDispatch())&lt;br /&gt;
        display.sleep();&lt;br /&gt;
    }&lt;br /&gt;
    clipboard.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  void createTextTransfer(Composite copyParent, Composite pasteParent) {&lt;br /&gt;
    // TextTransfer&lt;br /&gt;
    Label l = new Label(copyParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;TextTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    copyText = new Text(copyParent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL&lt;br /&gt;
        | SWT.H_SCROLL);&lt;br /&gt;
    copyText.setText(&amp;quot;some\nplain\ntext&amp;quot;);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    copyText.setLayoutData(data);&lt;br /&gt;
    Button b = new Button(copyParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = copyText.getText();&lt;br /&gt;
        if (data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          clipboard.setContents(new Object[] { data },&lt;br /&gt;
              new Transfer[] { TextTransfer.getInstance() });&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to copy&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    l = new Label(pasteParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;TextTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    pasteText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI&lt;br /&gt;
        | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    pasteText.setLayoutData(data);&lt;br /&gt;
    b = new Button(pasteParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = (String) clipboard.getContents(TextTransfer&lt;br /&gt;
            .getInstance());&lt;br /&gt;
        if (data != null &amp;amp;&amp;amp; data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          pasteText.setText(&amp;quot;begin paste&amp;gt;&amp;quot; + data + &amp;quot;&amp;lt;end paste&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to paste&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
  void createRTFTransfer(Composite copyParent, Composite pasteParent) {&lt;br /&gt;
    // RTF Transfer&lt;br /&gt;
    Label l = new Label(copyParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;RTFTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    copyRtfText = new Text(copyParent, SWT.MULTI | SWT.BORDER&lt;br /&gt;
        | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;
    copyRtfText.setText(&amp;quot;some\nrtf\ntext&amp;quot;);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    copyRtfText.setLayoutData(data);&lt;br /&gt;
    Button b = new Button(copyParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = copyRtfText.getText();&lt;br /&gt;
        if (data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          data = &amp;quot;{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\uc1\\b\\i &amp;quot;&lt;br /&gt;
              + data + &amp;quot;}&amp;quot;;&lt;br /&gt;
          clipboard.setContents(new Object[] { data },&lt;br /&gt;
              new Transfer[] { RTFTransfer.getInstance() });&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to copy&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    l = new Label(pasteParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;RTFTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    pasteRtfText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI&lt;br /&gt;
        | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    pasteRtfText.setLayoutData(data);&lt;br /&gt;
    b = new Button(pasteParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = (String) clipboard.getContents(RTFTransfer&lt;br /&gt;
            .getInstance());&lt;br /&gt;
        if (data != null &amp;amp;&amp;amp; data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          pasteRtfText.setText(&amp;quot;start paste&amp;gt;&amp;quot; + data + &amp;quot;&amp;lt;end paste&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to paste&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
  void createHTMLTransfer(Composite copyParent, Composite pasteParent) {&lt;br /&gt;
    // HTML Transfer&lt;br /&gt;
    Label l = new Label(copyParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;HTMLTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    copyHtmlText = new Text(copyParent, SWT.MULTI | SWT.BORDER&lt;br /&gt;
        | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;
    copyHtmlText.setText(&amp;quot;&amp;lt;b&amp;gt;Hello World&amp;lt;/b&amp;gt;&amp;quot;);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    copyHtmlText.setLayoutData(data);&lt;br /&gt;
    Button b = new Button(copyParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = copyHtmlText.getText();&lt;br /&gt;
        if (data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          clipboard.setContents(new Object[] { data },&lt;br /&gt;
              new Transfer[] { HTMLTransfer.getInstance() });&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to copy&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    l = new Label(pasteParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;HTMLTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    pasteHtmlText = new Text(pasteParent, SWT.READ_ONLY | SWT.MULTI&lt;br /&gt;
        | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    pasteHtmlText.setLayoutData(data);&lt;br /&gt;
    b = new Button(pasteParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String data = (String) clipboard.getContents(HTMLTransfer&lt;br /&gt;
            .getInstance());&lt;br /&gt;
        if (data != null &amp;amp;&amp;amp; data.length() &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          pasteHtmlText.setText(&amp;quot;start paste&amp;gt;&amp;quot; + data + &amp;quot;&amp;lt;end paste&amp;quot;);&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to paste&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
  void createFileTransfer(Composite copyParent, Composite pasteParent) {&lt;br /&gt;
    // File Transfer&lt;br /&gt;
    Label l = new Label(copyParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;FileTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    Composite c = new Composite(copyParent, SWT.NONE);&lt;br /&gt;
    c.setLayout(new GridLayout(2, false));&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    c.setLayoutData(data);&lt;br /&gt;
    copyFileTable = new Table(c, SWT.MULTI | SWT.BORDER);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    data.horizontalSpan = 2;&lt;br /&gt;
    copyFileTable.setLayoutData(data);&lt;br /&gt;
    Button b = new Button(c, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Select file(s)&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);&lt;br /&gt;
        String result = dialog.open();&lt;br /&gt;
        if (result != null &amp;amp;&amp;amp; result.length() &amp;gt; 0) {&lt;br /&gt;
          // copyFileTable.removeAll();&lt;br /&gt;
          String separator = System.getProperty(&amp;quot;file.separator&amp;quot;);&lt;br /&gt;
          String path = dialog.getFilterPath();&lt;br /&gt;
          String[] names = dialog.getFileNames();&lt;br /&gt;
          for (int i = 0; i &amp;lt; names.length; i++) {&lt;br /&gt;
            TableItem item = new TableItem(copyFileTable, SWT.NONE);&lt;br /&gt;
            item.setText(path + separator + names[i]);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(c, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Select directory&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        DirectoryDialog dialog = new DirectoryDialog(shell, SWT.OPEN);&lt;br /&gt;
        String result = dialog.open();&lt;br /&gt;
        if (result != null &amp;amp;&amp;amp; result.length() &amp;gt; 0) {&lt;br /&gt;
          // copyFileTable.removeAll();&lt;br /&gt;
          TableItem item = new TableItem(copyFileTable, SWT.NONE);&lt;br /&gt;
          item.setText(result);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(copyParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        TableItem[] items = copyFileTable.getItems();&lt;br /&gt;
        if (items.length &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          String[] data = new String[items.length];&lt;br /&gt;
          for (int i = 0; i &amp;lt; data.length; i++) {&lt;br /&gt;
            data[i] = items[i].getText();&lt;br /&gt;
          }&lt;br /&gt;
          clipboard.setContents(new Object[] { data },&lt;br /&gt;
              new Transfer[] { FileTransfer.getInstance() });&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to copy&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    l = new Label(pasteParent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;FileTransfer:&amp;quot;); //$NON-NLS-1$&lt;br /&gt;
    pasteFileTable = new Table(pasteParent, SWT.MULTI | SWT.BORDER);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    pasteFileTable.setLayoutData(data);&lt;br /&gt;
    b = new Button(pasteParent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        String[] data = (String[]) clipboard.getContents(FileTransfer&lt;br /&gt;
            .getInstance());&lt;br /&gt;
        if (data != null &amp;amp;&amp;amp; data.length &amp;gt; 0) {&lt;br /&gt;
          status.setText(&amp;quot;&amp;quot;);&lt;br /&gt;
          pasteFileTable.removeAll();&lt;br /&gt;
          for (int i = 0; i &amp;lt; data.length; i++) {&lt;br /&gt;
            TableItem item = new TableItem(pasteFileTable, SWT.NONE);&lt;br /&gt;
            item.setText(data[i]);&lt;br /&gt;
          }&lt;br /&gt;
        } else {&lt;br /&gt;
          status.setText(&amp;quot;nothing to paste&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
  void createMyTransfer(Composite copyParent, Composite pasteParent) {&lt;br /&gt;
    // MyType Transfer&lt;br /&gt;
    // TODO&lt;br /&gt;
  }&lt;br /&gt;
  void createControlTransfer(Composite parent) {&lt;br /&gt;
    Label l = new Label(parent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;Text:&amp;quot;);&lt;br /&gt;
    Button b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Cut&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        text.cut();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        text.copy();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        text.paste();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    text = new Text(parent, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL&lt;br /&gt;
        | SWT.V_SCROLL);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    text.setLayoutData(data);&lt;br /&gt;
    l = new Label(parent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;Combo:&amp;quot;);&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Cut&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        combo.cut();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        combo.copy();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        combo.paste();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    combo = new Combo(parent, SWT.NONE);&lt;br /&gt;
    combo.setItems(new String[] { &amp;quot;Item 1&amp;quot;, &amp;quot;Item 2&amp;quot;, &amp;quot;Item 3&amp;quot;,&lt;br /&gt;
        &amp;quot;A longer Item&amp;quot; });&lt;br /&gt;
    l = new Label(parent, SWT.NONE);&lt;br /&gt;
    l.setText(&amp;quot;StyledText:&amp;quot;);&lt;br /&gt;
    l = new Label(parent, SWT.NONE);&lt;br /&gt;
    l.setVisible(false);&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Copy&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        styledText.copy();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Paste&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        styledText.paste();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    styledText = new StyledText(parent, SWT.BORDER | SWT.MULTI&lt;br /&gt;
        | SWT.H_SCROLL | SWT.V_SCROLL);&lt;br /&gt;
    data = new GridData(GridData.FILL_HORIZONTAL);&lt;br /&gt;
    data.heightHint = data.widthHint = SIZE;&lt;br /&gt;
    styledText.setLayoutData(data);&lt;br /&gt;
  }&lt;br /&gt;
  void createAvailableTypes(Composite parent) {&lt;br /&gt;
    final List list = new List(parent, SWT.BORDER | SWT.H_SCROLL&lt;br /&gt;
        | SWT.V_SCROLL);&lt;br /&gt;
    GridData data = new GridData(GridData.FILL_BOTH);&lt;br /&gt;
    data.heightHint = 100;&lt;br /&gt;
    list.setLayoutData(data);&lt;br /&gt;
    Button b = new Button(parent, SWT.PUSH);&lt;br /&gt;
    b.setText(&amp;quot;Get Available Types&amp;quot;);&lt;br /&gt;
    b.addSelectionListener(new SelectionAdapter() {&lt;br /&gt;
      public void widgetSelected(SelectionEvent e) {&lt;br /&gt;
        list.removeAll();&lt;br /&gt;
        String[] names = clipboard.getAvailableTypeNames();&lt;br /&gt;
        for (int i = 0; i &amp;lt; names.length; i++) {&lt;br /&gt;
          list.add(names[i]);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
 * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.&lt;br /&gt;
 * This program and the accompanying materials are made available under the&lt;br /&gt;
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,&lt;br /&gt;
 * and is available at http://www.eclipse.org/legal/epl-v10.html&lt;br /&gt;
 * &lt;br /&gt;
 * Contributors: IBM Corporation - initial API and implementation&lt;br /&gt;
 ******************************************************************************/&lt;br /&gt;
class MyTypeTransfer extends ByteArrayTransfer {&lt;br /&gt;
  private static final String MYTYPENAME = &amp;quot;name_list&amp;quot;; //$NON-NLS-1$&lt;br /&gt;
  private static final int MYTYPEID = registerType(MYTYPENAME);&lt;br /&gt;
  private static MyTypeTransfer _instance = new MyTypeTransfer();&lt;br /&gt;
  public static MyTypeTransfer getInstance() {&lt;br /&gt;
    return _instance;&lt;br /&gt;
  }&lt;br /&gt;
  public void javaToNative(Object object, TransferData transferData) {&lt;br /&gt;
    if (!checkMyType(object) || !isSupportedType(transferData)) {&lt;br /&gt;
      DND.error(DND.ERROR_INVALID_DATA);&lt;br /&gt;
    }&lt;br /&gt;
    MyType[] myTypes = (MyType[]) object;&lt;br /&gt;
    try {&lt;br /&gt;
      // write data to a byte array and then ask super to convert to&lt;br /&gt;
      // pMedium&lt;br /&gt;
      ByteArrayOutputStream out = new ByteArrayOutputStream();&lt;br /&gt;
      DataOutputStream writeOut = new DataOutputStream(out);&lt;br /&gt;
      for (int i = 0, length = myTypes.length; i &amp;lt; length; i++) {&lt;br /&gt;
        byte[] buffer = myTypes[i].firstName.getBytes();&lt;br /&gt;
        writeOut.writeInt(buffer.length);&lt;br /&gt;
        writeOut.write(buffer);&lt;br /&gt;
        buffer = myTypes[i].firstName.getBytes();&lt;br /&gt;
        writeOut.writeInt(buffer.length);&lt;br /&gt;
        writeOut.write(buffer);&lt;br /&gt;
      }&lt;br /&gt;
      byte[] buffer = out.toByteArray();&lt;br /&gt;
      writeOut.close();&lt;br /&gt;
      super.javaToNative(buffer, transferData);&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public Object nativeToJava(TransferData transferData) {&lt;br /&gt;
    if (isSupportedType(transferData)) {&lt;br /&gt;
      byte[] buffer = (byte[]) super.nativeToJava(transferData);&lt;br /&gt;
      if (buffer == null)&lt;br /&gt;
        return null;&lt;br /&gt;
      MyType[] myData = new MyType[0];&lt;br /&gt;
      try {&lt;br /&gt;
        ByteArrayInputStream in = new ByteArrayInputStream(buffer);&lt;br /&gt;
        DataInputStream readIn = new DataInputStream(in);&lt;br /&gt;
        while (readIn.available() &amp;gt; 20) {&lt;br /&gt;
          MyType datum = new MyType();&lt;br /&gt;
          int size = readIn.readInt();&lt;br /&gt;
          byte[] name = new byte[size];&lt;br /&gt;
          readIn.read(name);&lt;br /&gt;
          datum.firstName = new String(name);&lt;br /&gt;
          size = readIn.readInt();&lt;br /&gt;
          name = new byte[size];&lt;br /&gt;
          readIn.read(name);&lt;br /&gt;
          datum.lastName = new String(name);&lt;br /&gt;
          MyType[] newMyData = new MyType[myData.length + 1];&lt;br /&gt;
          System.arraycopy(myData, 0, newMyData, 0, myData.length);&lt;br /&gt;
          newMyData[myData.length] = datum;&lt;br /&gt;
          myData = newMyData;&lt;br /&gt;
        }&lt;br /&gt;
        readIn.close();&lt;br /&gt;
      } catch (IOException ex) {&lt;br /&gt;
        return null;&lt;br /&gt;
      }&lt;br /&gt;
      return myData;&lt;br /&gt;
    }&lt;br /&gt;
    return null;&lt;br /&gt;
  }&lt;br /&gt;
  protected String[] getTypeNames() {&lt;br /&gt;
    return new String[] { MYTYPENAME };&lt;br /&gt;
  }&lt;br /&gt;
  protected int[] getTypeIds() {&lt;br /&gt;
    return new int[] { MYTYPEID };&lt;br /&gt;
  }&lt;br /&gt;
  boolean checkMyType(Object object) {&lt;br /&gt;
    if (object == null || !(object instanceof MyType[])&lt;br /&gt;
        || ((MyType[]) object).length == 0)&lt;br /&gt;
      return false;&lt;br /&gt;
    MyType[] myTypes = (MyType[]) object;&lt;br /&gt;
    for (int i = 0; i &amp;lt; myTypes.length; i++) {&lt;br /&gt;
      if (myTypes[i] == null || myTypes[i].firstName == null&lt;br /&gt;
          || myTypes[i].firstName.length() == 0&lt;br /&gt;
          || myTypes[i].lastName == null&lt;br /&gt;
          || myTypes[i].lastName.length() == 0)&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  protected boolean validate(Object object) {&lt;br /&gt;
    return checkMyType(object);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
 * Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.&lt;br /&gt;
 * This program and the accompanying materials are made available under the&lt;br /&gt;
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,&lt;br /&gt;
 * and is available at http://www.eclipse.org/legal/epl-v10.html&lt;br /&gt;
 * &lt;br /&gt;
 * Contributors: IBM Corporation - initial API and implementation&lt;br /&gt;
 ******************************************************************************/&lt;br /&gt;
class MyType {&lt;br /&gt;
  String firstName;&lt;br /&gt;
  String lastName;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>