package com.kartoflane.superluminal2.ui.sidebar.data;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import com.kartoflane.superluminal2.Superluminal;
import com.kartoflane.superluminal2.components.enums.Images;
import com.kartoflane.superluminal2.components.enums.OS;
import com.kartoflane.superluminal2.core.Cache;
import com.kartoflane.superluminal2.core.Manager;
import com.kartoflane.superluminal2.mvc.controllers.AbstractController;
import com.kartoflane.superluminal2.mvc.controllers.ImageController;
import com.kartoflane.superluminal2.utils.UIUtils;
import com.kartoflane.superluminal2.utils.Utils;
public class ImageDataComposite extends Composite implements DataComposite {
private ImageController controller = null;
private Label label = null;
private Button btnFollowHull;
private Label lblFollowHelp;
public ImageDataComposite(Composite parent, ImageController control) {
super(parent, SWT.NONE);
setLayout(new GridLayout(2, false));
controller = control;
label = new Label(this, SWT.NONE);
label.setAlignment(SWT.CENTER);
label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
String alias = control.getAlias();
label.setText("Image" + (alias == null ? "" : " (" + alias + ")"));
Label separator = new Label(this, SWT.SEPARATOR | SWT.HORIZONTAL);
separator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
btnFollowHull = new Button(this, SWT.CHECK);
btnFollowHull.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
btnFollowHull.setText("Follow Hull");
lblFollowHelp = new Label(this, SWT.NONE);
lblFollowHelp.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblFollowHelp.setImage(Cache.checkOutImage(this, "cpath:/assets/help.png"));
String msg = "When checked, this object will follow the hull image, so that " +
"when hull is moved, this object is moved as well.";
UIUtils.addTooltip(lblFollowHelp, Utils.wrapOSNot(msg, Superluminal.WRAP_WIDTH, Superluminal.WRAP_TOLERANCE, OS.MACOSX()));
btnFollowHull.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (btnFollowHull.getSelection()) {
controller.setParent(Manager.getCurrentShip().getImageController(Images.HULL));
} else {
controller.setParent(Manager.getCurrentShip().getShipController());
}
controller.updateFollowOffset();
}
});
updateData();
}
@Override
public void updateData() {
String alias = controller.getAlias();
label.setText("Image" + (alias == null ? "" : " (" + alias + ")"));
ImageController hullController = Manager.getCurrentShip().getImageController(Images.HULL);
btnFollowHull.setVisible(controller != hullController);
btnFollowHull.setSelection(controller.getParent() == hullController);
lblFollowHelp.setVisible(controller != hullController);
}
@Override
public void setController(AbstractController controller) {
this.controller = (ImageController) controller;
}
public void reloadController() {
}
@Override
public void dispose() {
Cache.checkInImage(this, "cpath:/assets/help.png");
super.dispose();
}
}