Eclipse Gef Tutorial File
:
@Override public void setBounds(Rectangle rect) super.setBounds(rect); // any custom layout logic
@Override protected List<Shape> getModelChildren() return ((Diagram) getModel()).getShapes();
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. eclipse gef tutorial
@Override protected void initializeGraphicalViewer() super.initializeGraphicalViewer(); GraphicalViewer viewer = getGraphicalViewer(); viewer.setContents(createDiagram()); viewer.getControl().setBackground(ColorConstants.white);
public void addPropertyChangeListener(PropertyChangeListener listener) listeners.addPropertyChangeListener(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); : @Override public void setBounds(Rectangle rect) super
:
@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;
editor/ShapeEditor.java :
public class RectangleFigure extends RectangleFigure public RectangleFigure() setBackgroundColor(ColorConstants.lightBlue); setForegroundColor(ColorConstants.blue); setBorder(new LineBorder(1));
package com.example.shapeditor.parts; import org.eclipse.draw2d. ; import org.eclipse.gef. ; import org.eclipse.gef.editparts.AbstractGraphicalEditPart; import com.example.shapeditor.figures.RectangleFigure; import com.example.shapeditor.model.Shape;
public abstract void accept(ShapeVisitor visitor); ; import org
// Getters & Setters with property change firing public int getX() return x; public void setX(int x) int old = this.x; this.x = x; listeners.firePropertyChange(LOCATION_PROP, old, x);
public class RectangleShape extends Shape @Override public void accept(ShapeVisitor visitor) visitor.visit(this);