/*******************************************************************************
 * Copyright (c) 2008,2011 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
 *******************************************************************************/
package org.eclipse.stem.ui.adapters.loggerpropertyeditor;

import org.eclipse.core.resources.IProject;
import org.eclipse.stem.core.logger.Logger;
import org.eclipse.stem.ui.wizards.LoggerPropertyComposite;
import org.eclipse.swt.events.ModifyListener;

public class SimulationLoggerPropertyEditorAdapter extends
		LoggerPropertyEditorAdapter {

	@Override
	public LoggerPropertyEditor createLoggerPropertyEditor(
			final LoggerPropertyComposite loggerPropertyComposite,
			final int style, final ModifyListener projectValidator, IProject project) {
		return new SimulationLoggerPropertyEditor(
				loggerPropertyComposite, style,
				(Logger) getTarget(), projectValidator, project);
	}

}
