/*******************************************************************************
* Copyright (c) 2007, 2010 Association for Decentralized Information Management
* in Industry THTH ry.
* 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:
* VTT Technical Research Centre of Finland - initial API and implementation
*******************************************************************************/
package org.simantics.g2d.element;
import java.util.HashMap;
import java.util.Map;
/**
* An IElementClassProvider provides an abstract way of requesting an
* ElementClass for a specifiable key. The key is purposefully left abstract.
*
* @author Tuukka Lehtonen
*
* @see IElementClassProvider
* @see ElementClasses
*/
public class ElementClassProviders {
/**
* Create an element class provider that provides only a single static
* ElementClass regardless of the specified key argument.
*
* @param clazz the static element class to provide
* @return a provider for the specified element class
*/
public static IElementClassProvider staticProvider(final ElementClass clazz) {
return new IElementClassProvider() {
@Override
public ElementClass get(Object key) {
return clazz;
}
};
}
/**
* Create an element class provider that based on the specified map. The
* provider will directly access the map with the received keys. The
* argument map will be copied.
*
* @param map the map to use for element class provision
* @return null if there is no provider for the specified key
*/
public static IElementClassProvider mappedProvider(Map