package com.yoursway.swt.additions;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Control;
public class FormDataBuilder {
private FormData data;
public FormDataBuilder() {
this.data = new FormData();
}
public FormDataBuilder(FormData data) {
this.data = data;
}
public FormData create() {
return data;
}
public FormDataBuilder width(int width) {
data.width = width;
return this;
}
public FormDataBuilder height(int height) {
data.height = height;
return this;
}
public FormDataBuilder size(Point size) {
size(size.x, size.y);
return this;
}
public FormDataBuilder size(int width, int height) {
data.width = width;
data.height = height;
return this;
}
public FormDataBuilder left(int numerator) {
data.left = new FormAttachment(numerator);
return this;
}
public FormDataBuilder left(int numerator, int offset) {
data.left = new FormAttachment(numerator, offset);
return this;
}
public FormDataBuilder left(int numerator, int denominator, int offset) {
data.left = new FormAttachment(numerator, denominator, offset);
return this;
}
public FormDataBuilder left(Control control) {
data.left = new FormAttachment(control);
return this;
}
public FormDataBuilder left(Control control, int offset) {
data.left = new FormAttachment(control, offset);
return this;
}
public FormDataBuilder left(Control control, int offset, int alignment) {
data.left = new FormAttachment(control, offset, alignment);
return this;
}
public FormDataBuilder right(int numerator) {
data.right = new FormAttachment(numerator);
return this;
}
public FormDataBuilder right(int numerator, int offset) {
data.right = new FormAttachment(numerator, offset);
return this;
}
public FormDataBuilder right(int numerator, int denominator, int offset) {
data.right = new FormAttachment(numerator, denominator, offset);
return this;
}
public FormDataBuilder right(Control control) {
data.right = new FormAttachment(control);
return this;
}
public FormDataBuilder right(Control control, int offset) {
data.right = new FormAttachment(control, offset);
return this;
}
public FormDataBuilder right(Control control, int offset, int alignment) {
data.right = new FormAttachment(control, offset, alignment);
return this;
}
public FormDataBuilder top(int numerator) {
data.top = new FormAttachment(numerator);
return this;
}
public FormDataBuilder top(int numerator, int offset) {
data.top = new FormAttachment(numerator, offset);
return this;
}
public FormDataBuilder top(int numerator, int denominator, int offset) {
data.top = new FormAttachment(numerator, denominator, offset);
return this;
}
public FormDataBuilder top(Control control) {
data.top = new FormAttachment(control);
return this;
}
public FormDataBuilder top(Control control, int offset) {
data.top = new FormAttachment(control, offset);
return this;
}
public FormDataBuilder top(Control control, int offset, int alignment) {
data.top = new FormAttachment(control, offset, alignment);
return this;
}
public FormDataBuilder bottom(int numerator) {
data.bottom = new FormAttachment(numerator);
return this;
}
public FormDataBuilder bottom(int numerator, int offset) {
data.bottom = new FormAttachment(numerator, offset);
return this;
}
public FormDataBuilder bottom(int numerator, int denominator, int offset) {
data.bottom = new FormAttachment(numerator, denominator, offset);
return this;
}
public FormDataBuilder bottom(Control control) {
data.bottom = new FormAttachment(control);
return this;
}
public FormDataBuilder bottom(Control control, int offset) {
data.bottom = new FormAttachment(control, offset);
return this;
}
public FormDataBuilder bottom(Control control, int offset, int alignment) {
data.bottom = new FormAttachment(control, offset, alignment);
return this;
}
public static FormDataBuilder formData() {
return new FormDataBuilder();
}
public static FormDataBuilder formDataOf(Control control) {
FormData data = (FormData) control.getLayoutData();
if (data == null) {
// a safeguard for those who will try using formDataOf in a non-standard way
data = new FormData();
control.setLayoutData(data);
}
return new FormDataBuilder(data);
}
}