/*******************************************************************************
* Copyright (c) 2007, 2009 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:
* Chris Recoskie (IBM Corporation) - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.model;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.content.IContentType;
/**
* Contains the details of changes that occurred as a result of modifying
* language mappings.
*
* @since 4.0
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ILanguageMappingChangeEvent {
public static final int TYPE_WORKSPACE = 0;
public static final int TYPE_PROJECT = 1;
public static final int TYPE_FILE = 2;
/**
* Returns an IFile corresponding to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
* @return an IFile corresponding to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
*
* @since 4.0
*/
public IFile getFile();
/**
* Returns a String corresponding to the full path to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
* In order to obtain the full context for the file it may be required that you also call getProject(),
* as it is possible that this file may not live inside the workspace.
*
* @return a String corresponding to the full path to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
* @see #getProject()
*
* @since 4.0
*/
public String getFilename();
/**
* Returns an IPath corresponding to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
* @return an IPath corresponding to the file for which settings have changed if this
* event's type is TYPE_FILE, or null otherwise.
*
* In order to obtain the full context for the file it may be required that you also call getProject(),
* as it is possible that this file may not live inside the workspace.
*
* @see #getProject()
*
* @since 4.0
*/
public IPath getPath();
/**
* Returns an IProject corresponding to the project for which settings have changed if this
* event's type is TYPE_PROJECT or TYPE_FILE, or null otherwise.
* @return an IProject corresponding to the project for which settings have changed if this
* event's type is TYPE_PROJECT or TYPE_FILE, or null otherwise.
*
* @since 4.0
*/
public IProject getProject();
/**
* Returns the type of even being reported.
* @return the type of even being reported
* @see #TYPE_WORKSPACE
* @see #TYPE_PROJECT
* @see #TYPE_FILE
*
* @since 4.0
*/
public int getType();
/**
* Returns an array of IContentTypes for which mappings have been changed, or an empty collection
* if there are no affected content types. Since there currently should be no change event unless
* a content type has changed, this should always contain at least one content type, but clients
* should theoretically be prepared to handle an empty collection.
* @return the content types for which mappings have been changed.
*/
public IContentType[] getAffectedContentTypes();
}