/******************************************************************************* * Copyright 2006, CHISEL Group, University of Victoria, Victoria, BC, Canada. * 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: * The Chisel Group, University of Victoria * IBM Corporation *******************************************************************************/ package ca.uvic.cs.tagsea.core.resource; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import ca.uvic.cs.tagsea.TagSEAPlugin; /** * @author mdesmond */ public class TagResourceChangeListener implements IResourceChangeListener { /** * @author mdesmond * @tag tagUpdate resourceDelta : updates tags on resource change */ public void resourceChanged(IResourceChangeEvent event) { IResourceDelta resourceDelta = event.getDelta(); // We are only interested in post change if (( event.getType() != IResourceChangeEvent.POST_CHANGE )) return; List<IResourceDelta> resouceDeltas = new ArrayList<IResourceDelta>(); ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(resouceDeltas); try { // extract altered java file resource deltas using the visitor resourceDelta.accept(visitor); } catch (Exception e) { // open error dialog with syncExec or print to plugin log file TagSEAPlugin.log(e.getMessage(), e); return; } // only exec if there is something in there if(resouceDeltas.size() > 0) { TagUpdateJob tagUpdateJob = new TagUpdateJob(resouceDeltas); tagUpdateJob.setSystem(true); tagUpdateJob.schedule(); } } }