package name.abuchen.portfolio.ui.util;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
public final class FormDataFactory
{
public static FormDataFactory startingWith(Control reference, Label label)
{
FormDataFactory factory = new FormDataFactory(reference);
factory.label(label);
FormData data = factory.from(reference);
data.left = new FormAttachment(label, 5);
return factory;
}
public static FormDataFactory startingWith(Control reference)
{
return new FormDataFactory(reference);
}
private Control reference;
private FormDataFactory(Control reference)
{
this.reference = reference;
}
public FormDataFactory thenBelow(Control control)
{
FormData data = from(control);
data.top = new FormAttachment(reference, 5);
data.left = new FormAttachment(reference, 0, SWT.LEFT);
return new FormDataFactory(control);
}
public FormDataFactory thenRight(Control control)
{
FormData data = from(control);
data.top = new FormAttachment(reference, 0, SWT.CENTER);
data.left = new FormAttachment(reference, 5);
return new FormDataFactory(control);
}
public FormDataFactory thenLeft(Control control)
{
FormData data = from(control);
data.top = new FormAttachment(reference, 0, SWT.CENTER);
data.right = new FormAttachment(reference, -5);
return new FormDataFactory(control);
}
public FormDataFactory label(Label label)
{
FormData data = from(label);
data.top = new FormAttachment(reference, 0, SWT.CENTER);
data.right = new FormAttachment(reference, -5);
return this;
}
public FormDataFactory suffix(Label label)
{
return suffix(label, SWT.DEFAULT);
}
public FormDataFactory suffix(Label label, int width)
{
FormData data = from(label);
data.top = new FormAttachment(reference, 0, SWT.CENTER);
data.left = new FormAttachment(reference, 5);
data.right = new FormAttachment(100);
data.width = width;
return this;
}
public FormDataFactory suffix(Control suffix)
{
FormData data = from(suffix);
data.top = new FormAttachment(reference, 0, SWT.CENTER);
data.left = new FormAttachment(reference, 5);
return this;
}
public FormDataFactory width(int width)
{
FormData data = from(reference);
data.width = width;
return this;
}
public FormDataFactory height(int height)
{
FormData data = from(reference);
data.height = height;
return this;
}
public FormDataFactory top(FormAttachment attachment)
{
FormData data = from(reference);
data.top = attachment;
return this;
}
public FormDataFactory left(Control control)
{
FormData data = from(reference);
data.left = new FormAttachment(control, 0, SWT.LEFT);
return this;
}
public FormDataFactory left(FormAttachment attachment)
{
FormData data = from(reference);
data.left = attachment;
return this;
}
public FormDataFactory right(Control control)
{
FormData data = from(reference);
data.right = new FormAttachment(control, 0, SWT.RIGHT);
return this;
}
public FormDataFactory right(FormAttachment attachment)
{
FormData data = from(reference);
data.right = attachment;
return this;
}
public FormDataFactory bottom(FormAttachment attachment)
{
FormData data = from(reference);
data.bottom = attachment;
return this;
}
private FormData from(Control control)
{
FormData layoutData = (FormData) control.getLayoutData();
if (layoutData == null)
{
layoutData = new FormData();
control.setLayoutData(layoutData);
}
return layoutData;
}
}