blob: 6a2a306e0a28399e04ec997cc8149fdc4d7f0087 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Borland Software 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:
* Borland Software Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.gmf.examples.mindmap.diagram.providers;
import java.util.Collection;
import java.util.IdentityHashMap;
import java.util.Map;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EEnumLiteral;
import org.eclipse.emf.ecore.ENamedElement;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.gmf.examples.mindmap.MindmapPackage;
import org.eclipse.gmf.examples.mindmap.diagram.expressions.MindmapAbstractExpression;
import org.eclipse.gmf.examples.mindmap.diagram.expressions.MindmapOCLFactory;
import org.eclipse.gmf.examples.mindmap.diagram.part.MindmapDiagramEditorPlugin;
import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
/**
* @generated
*/
public class MindmapElementTypes {
/**
* @generated
*/
private MindmapElementTypes() {
}
/**
* @generated
*/
private static Map elements;
/**
* @generated
*/
private static ImageRegistry imageRegistry;
/**
* @generated
*/
private static ImageRegistry getImageRegistry() {
if (imageRegistry == null) {
imageRegistry = new ImageRegistry();
}
return imageRegistry;
}
/**
* @generated
*/
private static String getImageRegistryKey(ENamedElement element) {
return element.getName();
}
/**
* @generated
*/
private static ImageDescriptor getProvidedImageDescriptor(ENamedElement element) {
if (element instanceof EStructuralFeature) {
element = ((EStructuralFeature) element).getEContainingClass();
}
if (element instanceof EClass) {
EClass eClass = (EClass) element;
if (!eClass.isAbstract()) {
return MindmapDiagramEditorPlugin.getInstance().getItemImageDescriptor(eClass.getEPackage().getEFactoryInstance().create(eClass));
}
}
// TODO : support structural features
return null;
}
/**
* @generated
*/
public static ImageDescriptor getImageDescriptor(ENamedElement element) {
String key = getImageRegistryKey(element);
ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key);
if (imageDescriptor == null) {
imageDescriptor = getProvidedImageDescriptor(element);
if (imageDescriptor == null) {
imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
}
getImageRegistry().put(key, imageDescriptor);
}
return imageDescriptor;
}
/**
* @generated
*/
public static Image getImage(ENamedElement element) {
String key = getImageRegistryKey(element);
Image image = getImageRegistry().get(key);
if (image == null) {
ImageDescriptor imageDescriptor = getProvidedImageDescriptor(element);
if (imageDescriptor == null) {
imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
}
getImageRegistry().put(key, imageDescriptor);
image = getImageRegistry().get(key);
}
return image;
}
/**
* @generated
*/
public static ImageDescriptor getImageDescriptor(IAdaptable hint) {
ENamedElement element = getElement(hint);
if (element == null) {
return null;
}
return getImageDescriptor(element);
}
/**
* @generated
*/
public static Image getImage(IAdaptable hint) {
ENamedElement element = getElement(hint);
if (element == null) {
return null;
}
return getImage(element);
}
/**
* Returns 'type' of the ecore object associated with the hint.
*
* @generated
*/
public static ENamedElement getElement(IAdaptable hint) {
Object type = hint.getAdapter(IElementType.class);
if (elements == null) {
elements = new IdentityHashMap();
elements.put(Map_79, MindmapPackage.eINSTANCE.getMap());
elements.put(Thread_2001, MindmapPackage.eINSTANCE.getThread());
elements.put(ThreadItem_2002, MindmapPackage.eINSTANCE.getThreadItem());
elements.put(Topic_1001, MindmapPackage.eINSTANCE.getTopic());
elements.put(Resource_1002, MindmapPackage.eINSTANCE.getResource());
elements.put(TopicSubtopics_3001, MindmapPackage.eINSTANCE.getTopic_Subtopics());
elements.put(Relationship_3002, MindmapPackage.eINSTANCE.getRelationship());
elements.put(Relationship_3003, MindmapPackage.eINSTANCE.getRelationship());
elements.put(Relationship_3004, MindmapPackage.eINSTANCE.getRelationship());
}
return (ENamedElement) elements.get(type);
}
/**
* @generated
*/
public static final IElementType Map_79 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Map_79");
/**
* @generated
*/
public static final IElementType Thread_2001 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Thread_2001");
/**
* @generated
*/
public static final IElementType ThreadItem_2002 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.ThreadItem_2002");
/**
* @generated
*/
public static final IElementType Topic_1001 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Topic_1001");
/**
* @generated
*/
public static final IElementType Resource_1002 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Resource_1002");
/**
* @generated
*/
public static final IElementType TopicSubtopics_3001 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.TopicSubtopics_3001");
/**
* @generated
*/
public static final IElementType Relationship_3002 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Relationship_3002");
/**
* @generated
*/
public static final IElementType Relationship_3003 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Relationship_3003");
/**
* @generated
*/
public static final IElementType Relationship_3004 = getElementType("org.eclipse.gmf.examples.mindmap.diagram.Relationship_3004");
/**
* @generated
*/
private static IElementType getElementType(String id) {
return ElementTypeRegistry.getInstance().getType(id);
}
/**
* @generated
*/
public static class Initializers {
/**
* @generated
*/
public static final ObjectInitializer Relationship_3002 = new ObjectInitializer(new FeatureInitializer[] {
new FeatureInitializer(MindmapOCLFactory.getExpression("RelationshipType::DEPENDENCY", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Type()), new FeatureInitializer(MindmapOCLFactory.getExpression("'depends'", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Label()) });
/**
* @generated
*/
public static final ObjectInitializer Relationship_3003 = new ObjectInitializer(new FeatureInitializer[] { new FeatureInitializer(MindmapOCLFactory.getExpression("RelationshipType::INCLUDES", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Type()), new FeatureInitializer(MindmapOCLFactory.getExpression("'includes'", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Label()) });
/**
* @generated
*/
public static final ObjectInitializer Relationship_3004 = new ObjectInitializer(new FeatureInitializer[] { new FeatureInitializer(MindmapOCLFactory.getExpression("RelationshipType::EXTENDS", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Type()), new FeatureInitializer(MindmapOCLFactory.getExpression("'extends'", //$NON-NLS-1$
MindmapPackage.eINSTANCE.getRelationship()), MindmapPackage.eINSTANCE.getRelationship_Label()) });
/**
* @generated
*/
private Initializers() {
}
/**
* @generated
*/
public static class ObjectInitializer {
/**
* @generated
*/
private FeatureInitializer[] initExpressions;
/**
* @generated
*/
ObjectInitializer(FeatureInitializer[] initExpressions) {
this.initExpressions = initExpressions;
}
/**
* @generated
*/
public void init(EObject instance) {
for (int i = 0; i < initExpressions.length; i++) {
FeatureInitializer nextExpr = initExpressions[i];
nextExpr.init(instance);
}
}
} // end of ObjectInitializer
/**
* @generated
*/
static class FeatureInitializer {
/**
* @generated
*/
private EStructuralFeature sFeature;
/**
* @generated
*/
private MindmapAbstractExpression expression;
/**
* @generated
*/
FeatureInitializer(MindmapAbstractExpression expression, EStructuralFeature sFeature) {
this.sFeature = sFeature;
this.expression = expression;
}
/**
* @generated
*/
void init(EObject contextInstance) {
Object value = expression.evaluate(contextInstance);
if (sFeature.getEType() instanceof EEnum && value instanceof EEnumLiteral) {
value = ((EEnumLiteral) value).getInstance();
} else if (value != null && sFeature.isMany()) {
value = new BasicEList((Collection) value);
}
contextInstance.eSet(sFeature, value);
}
} // end of FeatureInitializer
} // end of Initializers
}