package com.isencia.passerelle.workbench.model.editor.ui.figure;
import org.eclipse.draw2d.BorderLayout;
import org.eclipse.draw2d.Clickable;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Ellipse;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.ImageFigure;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.swt.graphics.Image;
import com.isencia.passerelle.workbench.model.editor.ui.IBody;
public class EllipseActorFigure extends ActorFigure {
public EllipseActorFigure(String name,Image image, Clickable[] clickables) {
this(name,null, image, clickables);
}
public EllipseActorFigure(String name,Class type, Image image, Clickable[] clickables) {
super(name,type, image, clickables);
}
protected IFigure generateBody(Image image, Clickable[] clickables) {
Body body = new Body();
//body.setBorder(new LineBorder(new Color(null, 225,225,225), 1, Graphics.LINE_SOLID));
body.initImage(image);
for (Clickable clickable : clickables)
body.initClickable(clickable);
return body;
}
private class Body extends Ellipse implements IBody {
/**
* @param s
*/
public Body() {
BorderLayout layout = new BorderLayout();
setLayoutManager(layout);
}
public void initImage(Image image) {
if (image != null) {
ImageFigure imageFigure = new ImageFigure(image);
imageFigure.setAlignment(PositionConstants.CENTER);
add(imageFigure, BorderLayout.CENTER);
}
}
public void initClickable(Clickable clickable) {
if (clickable != null) {
add(clickable, BorderLayout.BOTTOM);
}
}
protected void outlineShape(Graphics graphics) {
graphics.setForegroundColor(ColorConstants.gray);
super.outlineShape(graphics);
}
protected void fillShape(Graphics graphics) {
graphics.setBackgroundColor(getBackgroundColor());
super.fillShape(graphics);
}
public Dimension getPreferredSize(int wHint, int hHint) {
Dimension size = getParent().getSize().getCopy();
return size;
}
}
}