/*******************************************************************************
 * Copyright (c) 2018 Willink Transformations 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:
 *     Adolfo Sanchez-Barbudo Herrera - initial API and implementation
 *******************************************************************************/
/*
 * generated by Xtext 2.10.0
 */
package org.eclipse.qvtd.doc.ui;

import org.eclipse.qvtd.doc.ui.outline.MiniOCLCSCS2ASOutlineTreeProvider;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider;
import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider;

/**
 * Use this class to register components to be used within the Eclipse IDE.
 */
public class MiniOCLCSUiModule extends AbstractMiniOCLCSUiModule {

	public MiniOCLCSUiModule(AbstractUIPlugin plugin) {
		super(plugin);
	}
	
	@Override
	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {

		return MiniOCLCSCS2ASOutlineTreeProvider.class;
	}
	
	
	@Override
	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
		return MiniOCLCSCS2ASOutlineTreeProvider.class;
	}
}
