1 11 12 13 package org.eclipse.jdt.apt.core.internal.generatedfile; 14 15 import org.eclipse.core.runtime.CoreException; 16 import org.eclipse.jdt.apt.core.internal.AptPlugin; 17 import org.eclipse.jdt.core.ElementChangedEvent; 18 import org.eclipse.jdt.core.ICompilationUnit; 19 import org.eclipse.jdt.core.IElementChangedListener; 20 import org.eclipse.jdt.core.IJavaElementDelta; 21 import org.eclipse.jdt.core.IJavaProject; 22 23 26 public class WorkingCopyCleanupListener implements IElementChangedListener 27 { 28 public void elementChanged(ElementChangedEvent event) 29 { 30 Object o = event.getSource(); 31 if ( o instanceof IJavaElementDelta ) 32 { 33 IJavaElementDelta delta = (IJavaElementDelta) o; 34 processElementDelta( delta ); 35 36 } 37 } 38 39 private void processElementDelta( IJavaElementDelta delta ) 40 { 41 IJavaElementDelta[] deltas = delta.getAffectedChildren(); 42 if ( deltas != null && deltas.length > 0 ) 43 { 44 for( int i = 0; i<deltas.length; i++ ) 45 processElementDelta( deltas[i] ); 46 } 47 if ( delta.getElement() instanceof ICompilationUnit ) 48 { 49 54 ICompilationUnit cu = (ICompilationUnit) delta.getElement(); 55 56 boolean workingCopyDiscarded = 57 cu.getOwner() == null ? !cu.isWorkingCopy() : !cu.exists(); 58 59 if ( workingCopyDiscarded ) 60 { 61 IJavaProject jp = cu.getJavaProject(); 62 GeneratedFileManager gfm = AptPlugin.getAptProject(jp).getGeneratedFileManager(); 63 try { 64 gfm.workingCopyDiscarded( cu ); 65 } catch (CoreException e) { 66 AptPlugin.log(e, "Failure processing delta: " + delta); } 68 } 69 } 70 } 71 } 72 | Popular Tags |