X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Felement%2FElementClassProviders.java;h=eea425a43c9a8ed2154d93487c5287fdf6492953;hb=refs%2Fchanges%2F38%2F238%2F2;hp=94af84b4e558263c4ff94acdbf8da21793cde1c1;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/element/ElementClassProviders.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/element/ElementClassProviders.java index 94af84b4e..eea425a43 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/element/ElementClassProviders.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/element/ElementClassProviders.java @@ -1,86 +1,86 @@ -/******************************************************************************* - * 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 map) { - // Copy the map as a safety measure - final Map copy = new HashMap(map); - return new IElementClassProvider() { - @Override - public ElementClass get(Object key) { - return copy.get(key); - } - }; - } - - /** - * Does the same as {@link #mappedProvider(Map)}, the map is simply provided - * differently. The specified array must contain - * [key, ElementClass, key, ElementClass, ...]. - * - * @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(Object... keyClassPairs) { - if (keyClassPairs.length % 2 != 0) - throw new IllegalArgumentException(); - Map map = new HashMap(); - int n = keyClassPairs.length / 2; - for (int i = 0; i < n; ++i) { - Object key = keyClassPairs[i * 2]; - Object elementClass = keyClassPairs[i*2+1]; - if (!(elementClass instanceof ElementClass)) - throw new IllegalArgumentException("not an ElementClass instance: " + elementClass); - map.put(key, (ElementClass) elementClass); - } - return mappedProvider(map); - } - -} +/******************************************************************************* + * 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 map) { + // Copy the map as a safety measure + final Map copy = new HashMap(map); + return new IElementClassProvider() { + @Override + public ElementClass get(Object key) { + return copy.get(key); + } + }; + } + + /** + * Does the same as {@link #mappedProvider(Map)}, the map is simply provided + * differently. The specified array must contain + * [key, ElementClass, key, ElementClass, ...]. + * + * @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(Object... keyClassPairs) { + if (keyClassPairs.length % 2 != 0) + throw new IllegalArgumentException(); + Map map = new HashMap(); + int n = keyClassPairs.length / 2; + for (int i = 0; i < n; ++i) { + Object key = keyClassPairs[i * 2]; + Object elementClass = keyClassPairs[i*2+1]; + if (!(elementClass instanceof ElementClass)) + throw new IllegalArgumentException("not an ElementClass instance: " + elementClass); + map.put(key, (ElementClass) elementClass); + } + return mappedProvider(map); + } + +}