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