2016-04-27 10 views
0

Ich brauche einen Listener, der benachrichtigt werden kann, wenn PsiElement nicht vaild ist. PsiTreeChangeListener scheint nicht dafür geeignet zu sein. Gibt es einen anderen Zuhörer, der das sagen kann? Oder muss ich einen Listener erstellen? Wie erstelle ich diesen Listener?PSI Listener ändern

+0

ich, dass es möglich und/oder notwendig bin nicht sicher. Können Sie uns bitte sagen, was Sie erreichen möchten? – Argb32

+0

Am Anfang habe ich alle erforderlichen psiElements, aber wenn zwischendurch jemand psiElement kommentiert oder entfernt oder bewegt, dann wird das psiElement ungültig oder null. also wollte ich zu diesem zeitpunkt wissen und dementsprechend möchte ich meine liste aller psiElements updaten. Ich habe in diesem Fall daran gedacht, ein Beobachtermuster zu implementieren, aber ich brauche einen Zuhörer dafür. Wenn also ein psiElement aus dieser Liste ungültig wird, wird die Liste dieses Element aus dieser Liste kennen und entfernen. Ich verstehe nicht, wie ich diesen Hörer implementieren soll. – Aarti

Antwort

0

Sie können SmartPsiElementPointer Klasse verwenden, um eine Liste von Psi-Elementen zu erstellen und zu verwalten.

SmartPsiElementPointer ist ein Zeiger auf eine PsiElement, die nicht ungültig selbst dann nicht werden, wenn das psi Element verweist er auf wurde gelöscht. In diesem Fall ist es getElement() Methode wird einfach zurück Null. Sie können dies erkennen und behandeln.

Um ein Element in SmartPsiElementPointer wickeln Sie den folgenden Code verwenden:

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