Wie kann ich innerhalb einer IResourceChangeListener
, die über ResourcePlugin.getWorkspace().addResourceChangeListener(...)
hinzugefügt wurde, dass ein Projekt gelöscht/umbenannt wurde, richtig unterscheiden?IResourceChangeEvent - So identifizieren Sie ein Projekt Löschen/Umbenennen
Durch Ausprobieren, es scheint, dass die IResourceChangeEvent.getDelta() -> IResourceDelta
wäre die Antwort.
Von Eclipse API:
After-the-fact Batch-Berichte über willkürliche Schöpfungen, Deletionen und Modifikationen an einer oder mehreren Ressourcen als eine hierarchische Ressource Delta ausgedrückt. Ereignistyp ist POST_CHANGE und getDelta gibt das hierarchische Delta zurück. Das Ressourcendelta ist im Arbeitsbereich root verwurzelt. Diese Ereignisse werden an interessierte Parteien nach einer Reihe von Ressourcenänderungen gesendet und passieren, ob Autobuilding aktiviert ist oder nicht. Der Arbeitsbereich wird für Änderungen während der Benachrichtigung dieser Ereignisse geschlossen. Das in diesem Ereigniszyklus gemeldete Delta ist über alle Listener identisch, die für diesen Ereignistyp registriert sind.
EDIT: Hinzufügen meine bisherigen Ergebnisse
Also, die Event.getType()
ist POST_CHANGE
und es muss entweder
ein Delta sein, die ein Kind enthält
IResourceDelta
, die diegetKind() == REMOVED
für eine Deletion und das DeltagetResource().getType() == PROJECT
, so dass wir wissen, es ist ein Projekt (dasIResourceDelta
sollte keine Kinder haben)ein
getDelta()
, die zwei KinderIResourceDelta
diegetKind() == REMOVED
undgetKind() == ADDED
haben enthält, auch diegetResource().getType() == PROJECT
, und diejenigenIResourceDelta
enthalten keine Kinder Deltas (ich habe beobachtet, dass, wenn eine Datei umbenannt/gelöscht, dieIProject
die Ressource gehört derjenige ist, das ist in der ersten Reihe der Kinder der MutterDelta
...)
Kann jemand diese Vermutung bestätigen? Ist es wirklich notwendig, eine Baumtiefe-Suche nach Kindern durchzuführen, um festzustellen, ob das Ereignis ein Projekt ist, umbenennen/löschen oder eine Datei/einen Ordner?
mit dieser Methode, Wie würde ich ein Projekt umbenennen erkennen? –
Ich habe die gleiche Frage wie Vlad. Wie erkenne ich nur das Umbenennungs-Ereignis? – 2c00L
eine Antwort gefunden: http://stackoverflow.com/questions/30170492/how-to-use-an-iresourcechangelistener-to-detect-a-file-rename-and-set-the-editor?lq=1 – chani