/*******************************************************************************
 * Copyright (c) 2004 - 2005 University Of British Columbia 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:
 *     University Of British Columbia - initial API and implementation
 *******************************************************************************/
/*
 * Created on Jun 24, 2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package org.eclipse.mylyn.monitor;

import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IWorkbenchPart;

/**
 * @author beatmik
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class EditorListener implements IPartListener {
		
	public void partOpened(IWorkbenchPart part) {

	}
	
	public void partDeactivated(IWorkbenchPart part) {
	}
	
	public void partClosed(IWorkbenchPart part) {

	}
	
	public void partActivated(IWorkbenchPart part) {

	}
	
	public void partBroughtToTop(IWorkbenchPart part) {

	}	
}
