2016-04-27 4 views
0

PsiElementが有効になっていないことを通知できるリスナーが必要です。 PsiTreeChangeListenerはこれには適していないようです。これを伝えることができる他のリスナーはいますか?または、リスナーを作成する必要がありますか?このリスナーの作成方法PSI変更リスナー

+0

私はそれが可能、および/または必要だわからない:あなたは、次のコードを使用することができます

SmartPsiElementPointerに要素をラップします。達成したいことを教えてください。 – Argb32

+0

私は必要なすべてのpsiElementsを手に入れましたが、psiElementをコメントしたり削除したり移動したりする場合、そのpsiElementは無効またはnullになります。だから私はその時に知りたいと思っていたので、私はすべてのpsiElementsのリストを更新したいと思っています。この場合、オブザーバーパターンを実装することを考えていましたが、そのためにリスナーが必要です。 psiElementがそのリストから無効になると、listはそのリストを知り、そのリストからその要素を削除します。私はこのリスナーをどのように実装すればいいのか分からない。 – Aarti

答えて

0

SmartPsiElementPointerクラスを使用すると、psi要素のリストを作成して管理できます。

SmartPsiElementPointerは、PSI要素は、それが削除されたために指しても無効にならないPsiElementへのポインタです。その場合はgetElement()メソッドは単にnullを返します。これを検出して処理することができます。

SmartPointerManager.getInstance(element.getProject()).createSmartPsiElementPointer(element);