<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--

/******************************************************************************
 * Copyright (c) 2005 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 
 ****************************************************************************/

-->
</head>
<body>

<P>Provides a framework to support Eclipse resource change events, such as those that relate to 
{@link org.eclipse.core.resources.IFile IFile} and {@link
org.eclipse.core.resources.IMarker IMarker}.</P>

<h2>Listening to file resource changes</h2>
<P>To listen to changes in files, add an {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileObserver IFileObserver} to the
{@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager#getInstance()
singleton instance} of the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager
FileChangeManager}, which implements {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager
IFileChangeManager}.   Depending on the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver)
addFileObserver} method used, the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager FileChangeManager}
also supports filtering based on the actual {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
org.eclipse.core.resources.IFile) IFile}, {@link org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
org.eclipse.core.resources.IFolder) IFolder}, or {@link org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
java.lang.String[]) the file's extension}.</P>
<P>When finished listening, the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#removeFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver)
removeFileObserver} method should be called.

<P>Internally, the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager FileChangeManager}
notifies the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileObserverManager
FileObserverManager} with {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeEvent FileChangeEvent}
and {@link org.eclipse.gmf.runtime.common.ui.resources.MarkerChangeEvent
MarkerChangeEvent} objects.  The FileObserverManager is responsible
for managing the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileObserver IFileObserver} objects
that were added to the FileChangeManager and instantiating the appropriate
{@link org.eclipse.gmf.runtime.common.ui.resources.FileObserverFilter
FileObserverFilter} objects for them.
</P>

<h2>The FileModificationValidator</h2>

<P>The {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator
FileModificationValidator} is used to determine whether a file may be edited or
saved.  After obtaining the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#getInstance()
singleton instance} of the class, the methods {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#okToEdit(org.eclipse.core.resources.IFile[], java.lang.String)
okToEdit} and {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#okToSave(org.eclipse.core.resources.IFile)
okToSave} may be called, respectively.  More information is availabe from the
documentation of Eclipse's {@link
org.eclipse.core.resources.IFileModificationValidator
IFileModificationValidator}.</P>

<h2>Package Specification</h2>

<P>For more information, please see 
{@link org.eclipse.core.resources.IResource
org.eclipse.core.resources.IResource}</P>

@canBeSeenBy %partners
</body>
</html>