package com.kartoflane.superluminal2.mvc.controllers; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; import com.kartoflane.superluminal2.core.Grid; import com.kartoflane.superluminal2.core.Manager; import com.kartoflane.superluminal2.core.LayeredPainter.Layers; import com.kartoflane.superluminal2.ftl.ImageObject; import com.kartoflane.superluminal2.mvc.View; import com.kartoflane.superluminal2.mvc.models.BaseModel; import com.kartoflane.superluminal2.mvc.models.ObjectModel; import com.kartoflane.superluminal2.mvc.views.ImageView; import com.kartoflane.superluminal2.ui.sidebar.data.DataComposite; import com.kartoflane.superluminal2.ui.sidebar.data.ImageDataComposite; public class ImageController extends ObjectController { protected ImageController(AbstractController parent, BaseModel model, ImageView view) { super(); setModel(model); setView(view); setSelectable(true); setLocModifiable(true); setBounded(false); setCollidable(false); setParent(parent == null ? Manager.getCurrentShip().getShipController() : parent); } /** * @param parent * the parent of this controller which it will follow.<br> * May be null - in this case, the controller will follow the ship controller. */ public static ImageController newInstance(AbstractController parent, ImageObject object) { ObjectModel model = new ObjectModel(object); ImageView view = new ImageView(); ImageController controller = new ImageController(parent, model, view); return controller; } @Override public void setView(View view) { super.setView(view); this.view.addToPainter(Layers.IMAGES); updateView(); } @Override public ImageObject getGameObject() { return (ImageObject) getModel().getGameObject(); } public void setImage(String imagePath) { getGameObject().setImagePath(imagePath); view.setImage(imagePath); Rectangle bounds = view.getImageBounds(); setSize(bounds.width, bounds.height); } public String getImage() { return getGameObject().getImagePath(); } public DataComposite getDataComposite(Composite parent) { return new ImageDataComposite(parent, this); } public void setAlpha(int alpha) { view.setAlpha(alpha); } public int getAlpha() { return view.getAlpha(); } @Override public void updateBoundingArea() { Point gridSize = Grid.getInstance().getSize(); setBoundingPoints(0, 0, gridSize.x, gridSize.y); } }