Jak mogę prawidłowo rozróżnić, wewnątrz, który jest dodawany poprzez ResourcePlugin.getWorkspace().addResourceChangeListener(...)
, że projekt został usunięty/zmieniono jego nazwę?IResourceChangeEvent - jak zidentyfikować projekt usunąć/zmienić nazwę
Dzięki wypróbowaniu różnych rzeczy wydaje się, że odpowiedź brzmi: IResourceChangeEvent.getDelta() -> IResourceDelta
.
Z Eclipse API:
Po tym fakcie raporty wsadowe arbitralnych twory, delecji i modyfikacji co do jednego lub większej liczby środków w przeliczeniu na hierarchicznej delta zasobów. Typ zdarzenia to POST_CHANGE, a getDelta zwraca hierarchiczną różnicę . Delta zasobów jest zakorzeniona w obszarze roboczym root. Te zdarzenia są transmitowane do zainteresowanych stron po zmianie zbiorów zasobów i zdarzają się niezależnie od tego, czy włączone jest automatyczne budowanie. Obszar roboczy jest zamknięty w celu zmiany podczas powiadamiania o tych zdarzeniach . Różnica zgłaszana w tym cyklu zdarzeń jest identyczna dla wszystkich słuchaczy zarejestrowanych dla tego typu zdarzeń.
EDIT: dodawanie moje odkrycia dotychczas
Tak, Event.getType()
jest POST_CHANGE
i tam musi być
delta, która zawiera dziecko
IResourceDelta
który magetKind() == REMOVED
do usunięcia i deltagetResource().getType() == PROJECT
, dzięki czemu wiemy, że jest to projekt (tenIResourceDelta
nie powinien mieć żadnych dzieci)getDelta()
że zawiera dwa dzieciIResourceDelta
że majągetKind() == REMOVED
igetKind() == ADDED
, równieżgetResource().getType() == PROJECT
, a te nie zawierająIResourceDelta
dzieci Delty (mam zaobserwowane, że gdy plik zostanie zmieniona/usunięta,IProject
zasób należący do jest jeden to jest w pierwszym rzędzie dzieci rodzicaDelta
...)
Czy ktoś może potwierdzić to przypuszczenie? Czy konieczne jest wykonanie wyszukiwania głębi drzewa dla dzieci, aby zdać sobie sprawę z tego, czy zdarzenie to zmiana/usunięcie projektu, czy plik/folder?
za pomocą tej metody, jak rozpoznałbym zmianę nazwy projektu? –
Mam takie samo pytanie jak Vlad. Jak rozpoznać tylko zmianę nazwy? – 2c00L
znalazł odpowiedź: http://stackoverflow.com/questions/30170492/how-to-use-an-lesourcechangelistener-to-detect-a-file-rename-and-set-the-editor?lq=1 – chani