| /******************************************************************************* |
| * Copyright (c) 2005, 2007 BEA Systems, Inc. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * mkaufman@bea.com - initial API and implementation |
| *******************************************************************************/ |
| |
| |
| package org.eclipse.jdt.apt.core.internal.generatedfile; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.jdt.apt.core.internal.AptPlugin; |
| import org.eclipse.jdt.core.ElementChangedEvent; |
| import org.eclipse.jdt.core.ICompilationUnit; |
| import org.eclipse.jdt.core.IElementChangedListener; |
| import org.eclipse.jdt.core.IJavaElementDelta; |
| import org.eclipse.jdt.core.IJavaProject; |
| |
| /** |
| * Used by the GeneratedFileManager in order to clean up working copies after a build |
| */ |
| public class WorkingCopyCleanupListener implements IElementChangedListener |
| { |
| public void elementChanged(ElementChangedEvent event) |
| { |
| Object o = event.getSource(); |
| if ( o instanceof IJavaElementDelta ) |
| { |
| IJavaElementDelta delta = (IJavaElementDelta) o; |
| processElementDelta( delta ); |
| |
| } |
| } |
| |
| private void processElementDelta( IJavaElementDelta delta ) |
| { |
| IJavaElementDelta[] deltas = delta.getAffectedChildren(); |
| if ( deltas != null && deltas.length > 0 ) |
| { |
| for( int i = 0; i<deltas.length; i++ ) |
| processElementDelta( deltas[i] ); |
| } |
| if ( delta.getElement() instanceof ICompilationUnit ) |
| { |
| // |
| // handle case where a working copy is discarded (e.g., an editor is closed). If an editor |
| // is not open, then the compilation unit's isWorkingCopy() will return false. |
| // |
| |
| ICompilationUnit cu = (ICompilationUnit) delta.getElement(); |
| |
| boolean workingCopyDiscarded = |
| cu.getOwner() == null ? !cu.isWorkingCopy() : !cu.exists(); |
| |
| if ( workingCopyDiscarded ) |
| { |
| IJavaProject jp = cu.getJavaProject(); |
| GeneratedFileManager gfm = AptPlugin.getAptProject(jp).getGeneratedFileManager(); |
| try { |
| gfm.workingCopyDiscarded( cu ); |
| } catch (CoreException e) { |
| AptPlugin.log(e, "Failure processing delta: " + delta); //$NON-NLS-1$ |
| } |
| } |
| } |
| } |
| } |