/*******************************************************************************
 * <copyright>
 *
 * Copyright (c) 2013, 2013 SAP AG.
 * 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:
 *    SAP AG - initial API, implementation and documentation
 *
 * </copyright>
 *
 *******************************************************************************/
package org.eclipse.fmc.blockdiagram.editor.features.custom;

import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.context.ICustomContext;

/**
 * Container feature for categories. Cannot be executed.
 * 
 * @author Benjamin Schmeling
 * 
 */
public class CategoryCustomFeature extends FMCCustomFeature {

	/**
	 * The default constructor.
	 * 
	 * @param featureProvider
	 *            The type provider.
	 * @param category
	 *            The name of the category.
	 */
	public CategoryCustomFeature(IFeatureProvider featureProvider, String category) {
		super(featureProvider, category);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.graphiti.features.custom.ICustomFeature#execute(org.eclipse
	 * .graphiti.features.context.ICustomContext)
	 */
	@Override
	public void execute(ICustomContext context) {
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.eclipse.graphiti.features.custom.AbstractCustomFeature#canExecute
	 * (org.eclipse.graphiti.features.context.ICustomContext)
	 */
	@Override
	public boolean canExecute(ICustomContext context) {
		return false;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.graphiti.features.impl.AbstractFeature#getName()
	 */
	@Override
	public String getName() {
		return super.getCategory();
	}

}
