Eclipse Gef Tutorial [OFFICIAL]
public void removePropertyChangeListener(PropertyChangeListener listener) listeners.removePropertyChangeListener(listener);
public class ShapeEditPart extends AbstractGraphicalEditPart
(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 ShapeEditor extends GraphicalEditorWithFlyoutPalette private Diagram diagram; public ShapeEditor() setEditDomain(new DefaultEditDomain(this));
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 PaletteRoot getPaletteRoot() // return palette with creation tools (optional) return null; // for minimal
@Override protected void initializeGraphicalViewer() super.initializeGraphicalViewer(); GraphicalViewer viewer = getGraphicalViewer(); viewer.setContents(createDiagram()); viewer.getControl().setBackground(ColorConstants.white);
private PropertyChangeSupport listeners = new PropertyChangeSupport(this); private int x, y, width, height; // create similar return null
@Override public void activate() super.activate(); ((Shape) getModel()).addPropertyChangeListener(evt -> refreshVisuals());
org.eclipse.core.runtime org.eclipse.ui org.eclipse.draw2d org.eclipse.gef org.eclipse.jface org.eclipse.swt org.eclipse.ui.ide Define the data structure.
public void addPropertyChangeListener(PropertyChangeListener listener) listeners.addPropertyChangeListener(listener); RectangleShape rect = new RectangleShape()
:
public class RectangleFigure extends RectangleFigure public RectangleFigure() setBackgroundColor(ColorConstants.lightBlue); setForegroundColor(ColorConstants.blue); setBorder(new LineBorder(1));






