/*******************************************************************************
 * Copyright (c) 2008 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.wizards;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.stem.loggers.imagewriter.util.ImagewriterAdapterFactory;
import org.eclipse.stem.ui.adapters.loggerpropertyeditor.LoggerPropertyEditorAdapter;
import org.eclipse.stem.ui.adapters.loggerpropertyeditor.LoggerPropertyEditorAdapterFactory;

public class ImagewriterLoggerPropertyEditorAdapterFactory extends
		ImagewriterAdapterFactory implements
		LoggerPropertyEditorAdapterFactory {

	public ImagewriterLoggerPropertyEditorAdapterFactory() {
		super();
		LoggerPropertyEditorAdapterFactory.INSTANCE
				.addAdapterFactory(this);
	}

	@Override
	public Adapter createSimulationLoggerAdapter() {
		return new ImagewriterLoggerPropertyEditorAdapter();
	}

	public boolean isFactoryForType(Object type) {
		return type == LoggerPropertyEditorAdapter.class
				|| super.isFactoryForType(type);
	}

} // StandardDiseaseModelPropertyEditorAdapterFactory
