package org.eclipse.swt.widgets;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.Parent;
import javafx.scene.layout.Pane;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
public class Composite extends Scrollable {
private List<Control> children = new ArrayList<Control>();
private FXLayoutPane pane;
public Composite(Composite parent, int style) {
super(parent,style);
}
Composite(Display display, int style) {
super(display,style);
}
@Override
protected void createWidget() {
pane = new FXLayoutPane(this);
}
public void internal_controlAdded(Control c) {
children.add(c);
internal_attachControl(c);
}
public void setLayout(Layout layout) {
internal_setLayout(layout);
}
@Override
public Parent internal_getNativeObject() {
return pane;
}
public Rectangle getClientArea() {
return new Rectangle(0, 0, (int)internal_getWidth(), (int)internal_getHeight());
}
public Control[] getChildren() {
return children.toArray(new Control[0]);
}
public Point computeSize(int wHint, int hHint, boolean flushCache) {
int width = (int) internal_getPrefWidth();
int height = (int) internal_getPrefHeight();
if (wHint != SWT.DEFAULT) width = wHint;
if (hHint != SWT.DEFAULT) height = hHint;
return new Point(width, height);
}
protected double internal_getPrefWidth() {
return ((Pane)internal_getNativeObject()).prefWidth(-1);
}
protected double internal_getPrefHeight() {
return ((Pane)internal_getNativeObject()).prefHeight(-1);
}
protected double internal_getWidth() {
return ((Pane)internal_getNativeObject()).getWidth();
}
protected double internal_getHeight() {
return ((Pane)internal_getNativeObject()).getHeight();
}
protected void internal_setLayout(Layout layout) {
((FXLayoutPane)internal_getNativeObject()).setLayout(layout);
}
protected void internal_attachControl(Control c) {
((Pane)internal_getNativeObject()).getChildren().add(c.internal_getNativeObject());
}
@Override
public Point getSize() {
return new Point((int)internal_getWidth(), (int)internal_getHeight());
}
public void setBackgroundMode (int mode) {
//FIXME IMPLEMENT FOR FX
}
}