/******************************************************************************* * 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 java.net.URI; 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; /** * A minimal implementation of ILanguageMappingsChangeEvent. * * @noextend This interface is not intended to be extended by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ public class LanguageMappingChangeEvent implements ILanguageMappingChangeEvent { private int fType; private IProject fProject; private IFile fFile; private IPath fPath; private String fFileName; private IContentType[] fContentTypes; /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getAffectedContentTypes() */ public IContentType[] getAffectedContentTypes() { return fContentTypes; } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getFile() */ public IFile getFile() { return fFile; } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getFilename() */ public String getFilename() { // if the filename has been set, use it. otherwise get the path from // either the IFile or the IPath if we have one if(fFileName != null) return fFileName; else { if(fFile != null) { IPath location = fFile.getLocation(); if(location != null) return location.toString(); else { // use the URI if there is one URI uri = fFile.getLocationURI(); if(uri != null) return uri.toString(); } } else { // no file, use path if(fPath != null) return fPath.toString(); } } return null; } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getPath() */ public IPath getPath() { if(fPath != null) return fPath; else { // try to get the path from the file if we have one if(fFile != null) { IPath location = fFile.getLocation(); return location; } } return null; } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getProject() */ public IProject getProject() { if(fProject != null) return fProject; else { // try to get the project from the file if we have one if(fFile != null) return fFile.getProject(); } return null; } /* (non-Javadoc) * @see org.eclipse.cdt.core.model.ILanguageMappingsChangeEvent#getType() */ public int getType() { return fType; } /** * Sets the associated IContentTypes for this event. The provided array will be returned * subsequently by getAffectedContentTypes. * * @param affectedContentTypes */ public void setAffectedContentTypes(IContentType[] affectedContentTypes) { fContentTypes = affectedContentTypes; } /** * Sets the associated IFile for this event. This file will be returned subsequently * by getFile(). * * @param file the IFile to set */ public void setFile(IFile file) { fFile = file; } /** * Sets the associated String filename for this event. This filename will be returned subsequently * by getFileName(). * * @param fileName the fFileName to set */ public void setFileName(String fileName) { fFileName = fileName; } /** * Sets the associated IPath for this event. This path will be returned subsequently * by getPath(). * * @param path the IPath to set */ public void setPath(IPath path) { fPath = path; } /** * Sets the associated project for this event. This project will be returned subsequently * by getProject(). * * @param project the IProject to set */ public void setProject(IProject project) { fProject = project; } /** * Sets the type of this event. This type will be returned by getType(). * * @param type the type to set * @see ILanguageMappingChangeEvent#TYPE_WORKSPACE * @see ILanguageMappingChangeEvent#TYPE_PROJECT * @see ILanguageMappingChangeEvent#TYPE_FILE */ public void setType(int type) { fType = type; } }