Eclipse Gef Tutorial -

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

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

@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);

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

public class ShapeEditor extends GraphicalEditorWithFlyoutPalette private Diagram diagram; public ShapeEditor() setEditDomain(new DefaultEditDomain(this));

// similarly for y, width, height...

:

package com.example.shapeditor.model; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport;

private PropertyChangeSupport listeners = new PropertyChangeSupport(this); private int x, y, width, height;

@Override protected List<Shape> getModelChildren() return ((Diagram) getModel()).getShapes(); package com

:

@Override protected void createEditPolicies() // For now, no edit policies – just static content

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; Rectangle bounds = new Rectangle(model.getX()

public abstract void accept(ShapeVisitor visitor);