2016-10-12 17 views
0

私の@executeメソッド私はクリップボード/ LocalSelectionTransferから選択を取得できます。しかし、私はどのようにユーザーがクリップボードにコンテンツを入れているかに基づいてそれにどのように反応するのか分かりません。 コンテンツを複製するかどうかを判断する必要があります。 これは私が持っているものです:何かがクリップボードにコピーされたかどうかを判断する方法

@Execute 
public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell, @Named(IServiceConstants.ACTIVE_PART) MPart activePart) { 
    Clipboard clipboard = new Clipboard(shell.getDisplay()); 
    TransferData[] transferDatas = clipboard.getAvailableTypes(); 

    boolean weCanUseIt= false; 
    for(int i=0; i<transferDatas.length; i++) { 
     if(LocalSelectionTransfer.getTransfer().isSupportedType(transferDatas[i])) { 
      weCanUseIt = true; 
      break; 
     } 
    } 

    if (weCanUseIt) { 
     @SuppressWarnings("unchecked") 
     List<Object> objects = ((StructuredSelection)LocalSelectionTransfer.getTransfer().getSelection()).toList(); 
     for(Object o: objects) { 
      System.out.println(o.getClass()); 
     } 
    } 
} 

任意のアイデア???あなたがコピー操作のためにこの転送タイプを使用するようにRCPで一部をコーディング場合

+0

この@Executeメソッドとは何ですか?これは、通常、他の部分の選択をどのように取り扱うかではありません。ペーストハンドラにのみこれを使用します。 –

答えて

0

あなただけLocalSelectionTransferを使用してクリップボードにある何かを得ます。選択を直接転送する方法を提供します。

この転送タイプは、何か他の方法でクリップボードにコピーされた場合は使用されません(この場合、TextTransferまたはFileTransferなど)。

だから、あなただけは、おそらくオブジェクトに対処する方法を知っていた場合には、他の部分からの選択に対処するLocalSelectionTransferを使用することになります。

コピーアンドカットを実行する場合は、ソースビューアでカットを実行する必要がありますが、選択した部分が削除されますので、LocalSelectionTransferは使用できません。現在の選択に依存しない、FileTransferまたはTextTransferなどの転送を使用します。

+0

私が掲示した方法は貼り付けのためのものです。ユーザがCtrl + cまたはCtrl + Xを押すと、そのLocalSelectionTransferへのツリービューアの選択が表示されます。これは機能します。しかし、ユーザーがCtrl + Vで貼り付けた時点で、選択内容を複製したり移動したりする必要があります。ユーザーがクリップボード/ LocalSelectionTransferにコンテンツをどのように置くかに関する情報はありません。 – WildDogSmith

+0

違いを伝えるには、LocalSelectionTransferを使用できません。他のTransferクラスのいずれかを使用します。ソースビューでコピー/カットを実行する必要があります。 –

関連する問題