blob: d1655b2d5c6593c8389b1dcca26ce639f0043e75 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2008 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.sse.core.internal.provisional.tasks;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.wst.sse.core.internal.SSECorePlugin;
/**
* Scanners for the main Task Scanner. Scanners may be contributed using the
* org.eclipse.wst.sse.core.taskscanner extension point. For resources and
* resource deltas with matching content types, the main scanner will first
* call the startup() method, scan(), and then shutdown() in sequence. Scanner
* instances will be reused across projects but are not shared per content
* type. Scanners should not hold on to references to models or resources
* after shutdown() and should take care not to leak memory or resources.
*/
public interface IFileTaskScanner {
/**
* Default marker type ID of task markers that are created.
*/
String TASK_MARKER_ID = SSECorePlugin.ID + ".task"; //$NON-NLS-1$;
/**
* @return the task marker type that should be removed each time tasks are
* rescanned and used by default when creating task markers.
* Children of this marker type will be removed automatically.
*/
String getMarkerType();
/**
* Requests that the list of automatically discovered tasks for the given
* file be updated. Once completed, the list of tasks should correspond
* exactly to the file's contents.
*
* @param file -
* the file to be scanned
* @param taskTags -
* the list of task tags for which to scan
* @param monitor -
* a progress monitor
* @return an array of maps containing the attributes of task markers to
* be created
* <p>
* The reserved attribute name
* <b>org.eclipse.core.resources.taskmarker</b> may be used to
* specify a type to use when creating the task marker.
* </p>
*/
Map[] scan(IFile file, TaskTag[] taskTags, IProgressMonitor monitor);
/**
* Notifies the scanner that scanning is done for now. Resources held from
* startup should now be released.
*
* @param project -
* the project that was just scanned
*/
void shutdown(IProject project);
/**
* Notifies the scanner that a sequence of scans is about to be requested.
* Ideally the time to load preferences and perform any expensive
* configuration for the given project.
*
* @param project -
* the project that is about to be scanned
*
*/
void startup(IProject project);
}