blob: 68c9735d264543b34ad7f19d78a90d8b7f0c912e [file] [log] [blame]
/*******************************************************************************
* 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
*******************************************************************************/
/*
* $$RCSfile: ProjectResourceSet.java,v $$
* $$Revision: 1.3 $$ $$Date: 2005/02/15 23:04:14 $$
*/
package org.eclipse.jem.util.emf.workbench;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.resource.ResourceSet;
/**
* A ResourceSet for an entire project. It allows sharing of resources from multiple editors/viewers for a project.
* <p>
* An additional Notification type is sent out by ProjectResourceSet's of project resource set about to be released. A release is
* called when projects are about to be closed. They release all of the resources and unload them. This notification can be used
* to know that this is about to happen and to do something before the resources become invalid. It will be sent out just before the
* resource set will be released.
*
* @see ProjectResourceSet#SPECIAL_NOTIFICATION_TYPE
* @see ProjectResourceSet#PROJECTRESOURCESET_ABOUT_TO_RELEASE_ID
* @since 1.0.0
*/
public interface ProjectResourceSet extends ResourceSet {
IProject getProject();
/**
* Notification type in notifications from the ProjectResourceSet for
* special notifications, and not the standard ones from ResourceSet.
*
* @see org.eclipse.emf.common.notify.Notification#getEventType()
* @since 1.1.0
*/
static int SPECIAL_NOTIFICATION_TYPE = Notification.EVENT_TYPE_COUNT+4;
/**
* Notification Feature ID for resource set about to be released.
* Use {@link org.eclipse.emf.common.notify.Notification#getFeatureID(java.lang.Class)} to
* get this id. The getFeature() on notification will return null.
*
* @since 1.1.0
*/
static int PROJECTRESOURCESET_ABOUT_TO_RELEASE_ID = 1000;
/**
* Call when the ResourceSet is no longer to be used.
*
*
* @since 1.0.0
*/
void release();
/**
* Add the <code>resourceHandler</code> to the end of the list of resourceHandlers.
*
* @param resourceHandler
* IResourceHandler
* @return boolean Return <code>true</code> if it was added.
* @since 1.0.0
*/
boolean add(ResourceHandler resourceHandler);
/**
* Add the <code>resourceHandler</code> to the front of the list of resourceHandlers.
*
* @param resourceHandler
* IResourceHandler
* @since 1.0.0
*/
void addFirst(ResourceHandler resourceHandler);
/**
* Remove the <code>resourceHandler</code> from the list of resourceHandlers.
*
* @param resourceHandler
* IResourceHandler
* @return boolean Return true if it was removed.
* @since 1.0.0
*/
boolean remove(ResourceHandler resourceHandler);
/**
* Return the ResourceSet synchronizer that will synchronize the ResourceSet with changes from the Workbench.
*
* @return ResourceSetWorkbenchSynchronizer
* @since 1.0.0
*/
ResourceSetWorkbenchSynchronizer getSynchronizer();
/**
* Set the ResourceSet synchronizer that will synchronize the ResourceSet with changes from the Workbench.
*
* @param aSynchronizer
* @return ResourceSetWorkbenchSynchronizer
* @since 1.0.0
*/
void setSynchronizer(ResourceSetWorkbenchSynchronizer aSynchronizer);
/**
* This should be called by clients whenever the structure of the project changes such that any cached URIs will be invalid. For example, if the
* source folders within the URIConverter change.
*
* @since 1.0.0
*/
void resetNormalizedURICache();
}