ご存じないかもしれませんが、ファイルとプロジェクトは、ファイル システムのワークスペースのフォルダーの下にある必要はありません。
非表示のプロジェクトをこっそりとワークスペースに追加し、そのファイルをその中のリソースとしてリンクすることができるかもしれません。内部ファイルに変換された外部ファイルが動作を失うとは思いません。しかし、それはあなたが望む以上のものを得る可能性があります。私が考えることができるのは、ソース管理プラグインがそれを検出する可能性があるということです。
または、ファイルをワークスペースに追加する利点があることをユーザーに指摘し、ユーザーに選択させることもできます。新規または既存のどのプロジェクト/フォルダーに追加するかを尋ねるダイアログを表示できる場合があります。もちろん、彼らが拒否した場合は、覚えておくべきであり、その外部ファイルについて二度と質問しないでください。
アップデート:
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());
}
}
}
}