2011-07-04 16 views
4

私はシンプルなアイデアのプラグインを構築したいと思います。これは、ある種類のファイルの変更を検出して、別の形式に変換します。Intellij-ideaのファイル変更を検出するにはどうすればよいですか?

現在は、私はこれを行うには、このようなコードを使用します。

VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() { 
    @Override 
    public void contentsChanged(VirtualFileEvent event) { 
     // do something 
    } 
}); 

それは動作しますが、効率的ではありません。

私はthis articleを見つけ氏は述べています:

VFSのイベントをリッスンするための最も効率的な方法は、BulkFileListenerインターフェイスを実装し、VirtualFileManager.VFS_CHANGESトピックにそれを購読することです。

しかし、私はそれを実装するための例を見つけることができません。どうやってするか?

答えて

7

私はすべてのアクションだけでなく、保存のためにこれを検出し、あなたが今では答えを見つけただろうが、他人のために、この

public class A implements ApplicationComponent, BulkFileListener { 

    private final MessageBusConnection connection; 

    public A() { 
     connection = ApplicationManager.getApplication().getMessageBus().connect(); 
    } 

    public void initComponent() { 
     connection.subscribe(VirtualFileManager.VFS_CHANGES, this); 
    } 

    public void disposeComponent() { 
     connection.disconnect(); 
    } 

    public void before(List<? extends VFileEvent> events) { 
     // ... 
    } 

    public void after(List<? extends VFileEvent> events) { 
     // ... 
    } 

    ... 
} 
+0

のように動作するように思えると思います –

関連する問題