package org.archstudio.bna.ui;
import java.awt.image.BufferedImage;
import org.archstudio.bna.ui.jogl.JOGLBNAUI;
import org.archstudio.bna.ui.swt.SWTBNAUI;
import org.archstudio.bna.ui.utils.AutodetectBNAUI;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
public interface IBNAUI {
public static enum AvailableUI {
AUTODETECT("Autodetect", "Automatically select the best graphical subsystem.", AutodetectBNAUI.class), //
JOGL("OpenGL", "Faster if hardware accelerated.", JOGLBNAUI.class), //
SWT("SWT", "Use this if OpenGL is not hardware accelerated or unstable.", SWTBNAUI.class);
private final String name;
private final String description;
private final Class<? extends IBNAUI> bnaUIClass;
private AvailableUI(String name, String description, Class<? extends IBNAUI> bnaUIClass) {
this.name = name;
this.description = description;
this.bnaUIClass = bnaUIClass;
}
public Class<? extends IBNAUI> getBNAUIClass() {
return bnaUIClass;
}
@Override
public String toString() {
return name + " - " + description;
}
}
public void init(Composite parent, int style);
public void dispose();
public Composite getComposite();
public void forceFocus();
public void paint();
public BufferedImage render(Rectangle localBounds);
}