/*******************************************************************************
* Copyright (c) 2004, 2005 Elias Volanakis 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:
* �*����Elias Volanakis - initial API and implementation
* �
*******************************************************************************/
package org.eclipse.gef.examples.shapes.parts;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.gef.examples.shapes.model.Connection;
import org.eclipse.gef.examples.shapes.model.CursorShape;
import org.eclipse.gef.examples.shapes.model.Shape;
import org.eclipse.gef.examples.shapes.model.ShapesDiagram;
/**
* Factory that maps model elements to edit parts.
*
* @author Elias Volanakis
*/
public class ShapesEditPartFactory implements EditPartFactory {
/*
* (non-Javadoc)
* @see
* org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart,
* java.lang.Object)
*/
public EditPart createEditPart(EditPart context, Object modelElement) {
// get EditPart for model element
EditPart part = getPartForElement(modelElement);
// store model element in EditPart
part.setModel(modelElement);
return part;
}
/**
* Maps an object to an EditPart.
*
* @throws RuntimeException
* if no match was found (programming error)
*/
private EditPart getPartForElement(Object modelElement) {
if (modelElement instanceof ShapesDiagram) {
return new DiagramEditPart();
}
if (modelElement instanceof Shape) {
if (modelElement instanceof CursorShape) {
return new CursorShapeEditPart();
}
return new ShapeEditPart();
}
if (modelElement instanceof Connection) {
return new ConnectionEditPart();
}
throw new RuntimeException("Can't create part for model element: "
+ ((modelElement != null) ? modelElement.getClass().getName() : "null"));
}
}