15    if (VERSION.SDK_INT < VERSION_CODES.HONEYCOMB)
 
   16      return new PreHCClipboardManager(ctx);
 
   18      return new HCClipboardManager(ctx);
 
   21  public abstract void setClipboardData(String data);
 
   27  public abstract void getPrimaryClipManually();
 
   31    void onClipboardChanged(String data);
 
 
   37    public PreHCClipboardManager(Context ctx)
 
   41    @Override 
public void setClipboardData(String data)
 
   45    @Override 
public void addClipboardChangedListener(OnClipboardChangedListener listener)
 
   50    public void removeClipboardboardChangedListener(OnClipboardChangedListener listener)
 
   54    @Override 
public void getPrimaryClipManually()
 
   60  private static class HCClipboardManager
 
   61      extends ClipboardManagerProxy implements ClipboardManager.OnPrimaryClipChangedListener
 
   63    private final ClipboardManager mClipboardManager;
 
   64    private OnClipboardChangedListener mListener;
 
   66    public HCClipboardManager(Context ctx)
 
   68      mClipboardManager = (ClipboardManager)ctx.getSystemService(Context.CLIPBOARD_SERVICE);
 
   71    @Override 
public void setClipboardData(String data)
 
   73      mClipboardManager.setPrimaryClip(
 
   74          ClipData.newPlainText(
"rdp-clipboard", data == 
null ? 
"" : data));
 
   77    @Override 
public void onPrimaryClipChanged()
 
   79      ClipData clip = mClipboardManager.getPrimaryClip();
 
   82      if (clip != 
null && clip.getItemCount() > 0)
 
   84        CharSequence cs = clip.getItemAt(0).getText();
 
   88      if (mListener != 
null)
 
   90        mListener.onClipboardChanged(data);
 
   94    @Override 
public void addClipboardChangedListener(OnClipboardChangedListener listener)
 
   97      mClipboardManager.addPrimaryClipChangedListener(
this);
 
  101    public void removeClipboardboardChangedListener(OnClipboardChangedListener listener)
 
  104      mClipboardManager.removePrimaryClipChangedListener(
this);
 
  107    @Override 
public void getPrimaryClipManually()
 
  109      onPrimaryClipChanged();