Come posso distinguere correttamente, all'interno di un che viene aggiunto tramite ResourcePlugin.getWorkspace().addResourceChangeListener(...)
che un progetto è stato cancellato/rinominato?IResourceChangeEvent - come identificare un progetto cancellare/rinominare
Attraverso le prove, sembrerebbe che il IResourceChangeEvent.getDelta() -> IResourceDelta
sarebbe la risposta.
Da Eclipse API:
Dopo-il-fatto segnalazioni in batch di creazioni arbitrarie, le eliminazioni e modifiche a una o più risorse espresse in gerarchico delta risorsa. Il tipo di evento è POST_CHANGE e getDelta restituisce il delta gerarchico . Il delta della risorsa è radicato nello spazio di lavoro root. Questi eventi vengono trasmessi alle parti interessate dopo una serie di modifiche alle risorse e si verificano sia che la costruzione automatica sia abilitata o meno. L'area di lavoro è chiusa per la modifica durante la notifica di questi eventi . Il delta segnalato in questo ciclo di eventi è identico per tutti gli ascoltatori registrati per questo tipo di evento.
EDIT: aggiungendo i miei risultati finora
Così, il Event.getType()
è POST_CHANGE
e non ci deve essere o
un delta che contiene un bambino
IResourceDelta
che ha ilgetKind() == REMOVED
per una delezione e il deltagetResource().getType() == PROJECT
in modo che sappiamo che è un progetto (questoIResourceDelta
non dovrebbe avere figli)un
getDelta()
che contiene due bambiniIResourceDelta
che hannogetKind() == REMOVED
egetKind() == ADDED
, anche lagetResource().getType() == PROJECT
, e quelliIResourceDelta
non contengono figli Delta (ho osservato che quando un file viene rinominato/cancellato, ilIProject
la risorsa appartiene è quello che è in prima fila dei figli del genitoreDelta
...)
qualcuno può confermare questa supposizione? E 'davvero necessario fare una ricerca approfondita sugli alberi per capire se l'evento è un progetto rinominato/cancella o un file/cartella?
utilizzando questo metodo, come riconoscerei un progetto rinominato? –
Ho la stessa domanda di Vlad. Come identificare solo l'evento di rinomina? – 2c00L
ha trovato una risposta: http://stackoverflow.com/questions/30170492/how-to-use-an-iresourcechangelistener-to-detect-a-file-rename-and-set-the-editor?lq=1 – chani