0

ワークスペース外のファイルに注釈を表示する必要があります。

Worspace に存在するファイルに注釈を表示できます。ワークスペース外のファイルに同じことをしようとすると、リソースと ifile オブジェクトを作成する必要があります。どうすれば同じことを達成できますか? Ifile オブジェクトを作成できないため、ワークスペース外のファイルの内容を読み取るにはどうすればよいですか。

これが私が今していることです:

IEditorPart editor =(IEditorPart) wins[i].getPartService().getActivePart()
IEditorInput input = editor.getEditorInput();
IPath path = ((FileEditorInput)input).getPath();
IFile file= workspace.getRoot().getFileForLocation(path);   
4

2 に答える 2

1

ワークスペース外のファイルに注釈を付けることはできません。IFile は、ワークスペース ファイルに対してのみ定義されます。

于 2013-06-20T21:29:49.457 に答える
0

ご存じないかもしれませんが、ファイルとプロジェクトは、ファイル システムのワークスペースのフォルダーの下にある必要はありませ


非表示のプロジェクトをこっそりとワークスペースに追加し、そのファイルをその中のリソースとしてリンクすることができるかもしれません。内部ファイルに変換された外部ファイルが動作を失うとは思いません。しかし、それはあなたが望む以上のものを得る可能性があります。私が考えることができるのは、ソース管理プラグインがそれを検出する可能性があるということです。

または、ファイルをワークスペースに追加する利点があることをユーザーに指摘し、ユーザーに選択させることもできます。新規または既存のどのプロジェクト/フォルダーに追加するかを尋ねるダイアログを表示できる場合があります。もちろん、彼らが拒否した場合は、覚えておくべきであり、その外部ファイルについて二度と質問しないでください。

アップデート:

FileStoreEditorInput現在のワークスペースの一部ではないファイルを表します。開いている外部ファイルをリッスンするには、各ウィンドウで IPartListener2 を使用してサブスクライブします。

public class Activator extends AbstractUIPlugin implements IStartup {

    @Override
    public void earlyStartup() {
        final PartListener partListener = new PartListener();
        for (final IWorkbenchWindow window : getWorkbench().getWorkbenchWindows()) {
            window.getPartService().addPartListener(partListener);
        }
        getWorkbench().addWindowListener(new IWindowListener() {

            @Override
            public void windowOpened(IWorkbenchWindow window) {
                window.getPartService().addPartListener(partListener);
            }

        });
    }

    private class PartListener implements IPartListener2 {
        @Override
        public void partOpened(final IWorkbenchPartReference partRef) {
            if (partRef.getPart(false) instanceof EditorPart) {
                final EditorPart editor = (EditorPart) partRef.getPart(false);
                if (editor.getEditorInput() instanceof FileStoreEditorInput) {
                    final FileStoreEditorInput input = (FileStoreEditorInput) editor.getEditorInput();
                    System.out.println(input.getURI());
                }
            }
        }
    }
于 2013-06-21T20:16:21.243 に答える