2009-05-27 29 views
2

最近SWTを使用してアプリケーションを作成しました。そのダイアログボックスの1つに、いくつかのウィジェットがあります。そのうちの1つはTextで、他のウィジェットとDNDをサポートするように設計されています。私は最初に、2つのTreeウィジェットのDNDサポートを同じダイアログボックス(ドラッグ元とドロップ先の両方)に追加しました。そのテキストウィジェットのDNDサポートを追加する前に、Linuxプラットフォーム(gtk)では、SWT Textウィジェットが自動的にドラッグアンドドロップサポートを取得することに気付きました。つまり、すでに他のツリーウィジェットからドラッグして、このテキスト(そこに挿入される任意の位置)にドロップし、このテキストから他のツリーまたはテキストウィジェットにテキストを選択してドラッグすることができます。SWTドラッグ&ドロップによるテキストウィジェットのサポート

ただし、これはLinuxプラットフォームでのみ動作しますが、Windowsでは動作しません。同じプログラムがWindows上で実行されている場合、そのTextウィジェットに対するDNDサポートはありません(ツリーウィジェットはDewサポートを持っていますが、私はそれらに対して特別な書き込みを行っています)。

だからここに私もWindows上で達成したいものです。

  1. は、テキストウィジェット内の任意の位置にテキストをドロップします。
  2. の前にキャレット位置を明確に見ることができます。キャレット位置はマウスカーソルと共に移動する必要があります。テキストウィジェットで
  3. サポートマルチライン

解決代わりにテキストウィジェット

  • 使用StyledTextDropTargetEffectの

    DropTarget target = new DropTarget(sytledText, DND.DROP_MOVE | DND.DROP_COPY); 
    target.setTransfer(new Transfer[] { TextTransfer.getInstance() }); 
    target.addDropListener(new StyleTextDropTargetEffect(sytledText)); 
    
    1. 使用StyledText(またはそれを拡張)とDRオペアンプリスナとして追加
  • +0

    私は手を汚くして、自分のために手作りしました。しかし、私はスクロール位置の問題を解決できませんでした。 StyledTextはすでにStyledTextDropTargetEffectクラスでこのサポートを持っています。私はCsaba_Hがそれを持ち出すまでそれに気付かなかった。ありがとう! – bryantsai

    答えて

    2
    1. &
    2. Windowsでは、テキストウィジェットを使用して簡単に行うことはできません。ドロップすると、最後のカーソル位置またはテキストの最後にテキストを挿入できます。任意の位置でのドロップをサポートするStyledTextウィジェットと 'キャレットホバー'の使用を検討することもできます。
    3. TextとStyledTextの両方が、複数行になるためのSWT.MULTIスタイルをサポートしています。

    あなたはStyledTextウィジェットを使用してドラッグ&ドロップのための例を含むSWT snippetsページでは多くの偉大なコードスニペットを見つけることができます。また、DND in SWTの良い紹介があります。

    関連する問題