package complexion.test; import de.matthiasmann.twl.Button; import de.matthiasmann.twl.DialogLayout; import de.matthiasmann.twl.GUI; import de.matthiasmann.twl.Widget; import de.matthiasmann.twl.renderer.lwjgl.LWJGLRenderer; import de.matthiasmann.twl.theme.ThemeManager; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import org.lwjgl.opengl.GL11; public class TestGui extends Widget { public static void main(String[] args) { try { Display.setDisplayMode(new DisplayMode(800, 600)); Display.create(); Display.setTitle("TWL Login Panel Demo"); Display.setVSyncEnabled(true); TestGui demo = new TestGui(); LWJGLRenderer renderer = new LWJGLRenderer(); GUI gui = new GUI(demo, renderer); ThemeManager theme = ThemeManager.createThemeManager( TestGui.class.getResource("login.xml"), renderer); gui.applyTheme(theme); while(!Display.isCloseRequested() && !demo.quit) { GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); gui.update(); Display.update(); } gui.destroy(); theme.destroy(); } catch (Exception ex) { ex.printStackTrace(); } Display.destroy(); } final DialogLayout loginPanel; final Button btnLogin; boolean quit; public TestGui() { btnLogin = new Button("LOGIN"); btnLogin.addCallback(new Runnable() { public void run() { System.out.println("Button clicked!"); } }); btnLogin.setMinSize(100, 50); loginPanel = new DialogLayout(); loginPanel.setTheme("login-panel"); loginPanel.setInnerSize(200, 200); loginPanel.setHorizontalGroup(loginPanel.createSequentialGroup().addGap().addWidget(btnLogin).addGap()); loginPanel.setVerticalGroup(loginPanel.createSequentialGroup().addGap().addWidget(btnLogin)); add(loginPanel); } @Override protected void layout() { btnLogin.adjustSize(); btnLogin.setPosition(10, 10); // login panel is centered loginPanel.setPosition( getInnerX() + (getInnerWidth() - loginPanel.getWidth())/2, getInnerY() + (getInnerHeight() - loginPanel.getHeight())/2); loginPanel.setMinSize(200, 200); } }