Eclipse Gef Tutorial -

private Diagram createDiagram() diagram = new Diagram(); RectangleShape rect = new RectangleShape(); rect.setX(100); rect.setY(100); rect.setWidth(80); rect.setHeight(60); diagram.addShape(rect); EllipseShape ellipse = new EllipseShape(); ellipse.setX(250); ellipse.setY(150); ellipse.setWidth(70); ellipse.setHeight(70); diagram.addShape(ellipse); return diagram;

editor/ShapeEditor.java :

@Override protected void refreshVisuals() Shape model = (Shape) getModel(); Rectangle bounds = new Rectangle(model.getX(), model.getY(), model.getWidth(), model.getHeight()); ((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), bounds);

(root) – manages children:

:

:

@Override protected IFigure createFigure() Shape model = (Shape) getModel(); if (model instanceof RectangleShape) return new RectangleFigure(); else if (model instanceof EllipseShape) return new EllipseFigure(); // create similar return null; eclipse gef tutorial

public class RectangleShape extends Shape @Override public void accept(ShapeVisitor visitor) visitor.visit(this);

– Base class for all shapes:

– similar. 4. Create the Figure (Draw2D) Visual representation. package com

package com.example.shapeditor.figures; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.RectangleFigure; import org.eclipse.draw2d.geometry.Rectangle;

public void addPropertyChangeListener(PropertyChangeListener listener) listeners.addPropertyChangeListener(listener);

@Override public void activate() super.activate(); ((Shape) getModel()).addPropertyChangeListener(evt -> refreshVisuals()); @Override public void activate() super.activate()