/** * Copyright (c) 2008-2009 Ardor Labs, Inc. * * This file is part of Ardor3D. * * Ardor3D is free software: you can redistribute it and/or modify it * under the terms of its license which may be found in the accompanying * LICENSE file or at <http://www.ardor3d.com/LICENSE>. */ package automenta.spacenet.run.widget; import automenta.spacenet.run.ArdorSpacetime; import automenta.spacenet.space.Repeat; import com.ardor3d.extension.ui.UIButton; import com.ardor3d.extension.ui.UICheckBox; import com.ardor3d.extension.ui.UIComponent; import com.ardor3d.extension.ui.UIFrame; import com.ardor3d.extension.ui.UIHud; import com.ardor3d.extension.ui.UILabel; import com.ardor3d.extension.ui.UIPanel; import com.ardor3d.extension.ui.UIProgressBar; import com.ardor3d.extension.ui.UIRadioButton; import com.ardor3d.extension.ui.layout.BorderLayout; import com.ardor3d.extension.ui.layout.BorderLayoutData; import com.ardor3d.extension.ui.layout.RowLayout; import com.ardor3d.extension.ui.util.ButtonGroup; import com.ardor3d.extension.ui.util.Dimension; import com.ardor3d.extension.ui.util.SubTex; import com.ardor3d.image.Texture; import com.ardor3d.image.TextureStoreFormat; import com.ardor3d.math.ColorRGBA; import com.ardor3d.scenegraph.Spatial; import com.ardor3d.util.TextureManager; import com.ardor3d.util.Timer; public class DemoArdorUI extends DemoButton { UIHud hud; UILabel fpslabel; UIProgressBar bar; Timer timer; public static void main(final String[] args) { ArdorSpacetime.newWindow(new DemoArdorUI()); } @Override protected void start() { super.start(); UIComponent.setUseTransparency(true); final UIFrame frame = new UIFrame("Sample"); frame.setContentPanel(makeWidgetPanel()); frame.updateMinimumSizeFromContents(); frame.layout(); frame.pack(); frame.setUseStandin(true); frame.setOpacity(1f); //frame.setLocationRelativeTo(_canvas.getCanvasRenderer().getCamera()); frame.setName("sample"); hud = new UIHud(); hud.add(frame); getSpacetime().getFace().add(hud); // System.out.println("video: " + getSpacetime().getVideo()); // System.out.println("video: " + getSpacetime().getInputPhy()); hud.setupInput(getSpacetime().getVideo(), getSpacetime().getInputPhy(), getSpacetime().getInputLogic()); add(new Repeat(0.01) { @Override protected void update(double t, double dt, Spatial s) { hud.setupInput(getSpacetime().getVideo(), getSpacetime().getInputPhy(), getSpacetime().getInputLogic()); counter += dt; frames++; if (counter > 1) { final double fps = (frames / counter); counter = 0; frames = 0; System.out.printf("%7.1f FPS\n", fps); fpslabel.setText(fps + " FPS"); bar.setPercentFilled(t / 15); bar.updateMinimumSizeFromContents(); } hud.getLogicalLayer().checkTriggers(dt); hud.updateGeometricState(dt); } }); } // @Inject // public DemoArdorUI(final LogicalLayer layer, final FrameHandler frameWork, final Timer timer) { // super(layer, frameWork); // this.timer = timer; // } private UIPanel makeWidgetPanel() { final UIPanel panel = new UIPanel(); panel.setForegroundColor(ColorRGBA.DARK_GRAY); panel.setLayout(new BorderLayout()); final UIButton button = new UIButton("Button A"); final Texture tex = TextureManager.load("images/ardor3d_white_256.jpg", Texture.MinificationFilter.Trilinear, TextureStoreFormat.GuessNoCompressedFormat, false); button.setIcon(new SubTex(tex)); button.setIconDimensions(new Dimension(26, 26)); button.setGap(10); button.setLayoutData(BorderLayoutData.NORTH); button.setTooltipText("This is a tooltip!"); panel.add(button); final RowLayout rowLay = new RowLayout(false, false, false); final UIPanel centerPanel = new UIPanel(rowLay); centerPanel.setLayoutData(BorderLayoutData.CENTER); panel.add(centerPanel); final UICheckBox check1 = new UICheckBox("Hello"); check1.setSelected(true); check1.setEnabled(false); centerPanel.add(check1); final UICheckBox check2 = new UICheckBox("World"); centerPanel.add(check2); final ButtonGroup group = new ButtonGroup(); final UIRadioButton radio1 = new UIRadioButton("option A"); radio1.setGroup(group); centerPanel.add(radio1); final UIRadioButton radio2 = new UIRadioButton("option B"); radio2.setGroup(group); centerPanel.add(radio2); bar = new UIProgressBar("Loading: ", true); bar.setPercentFilled(0); bar.setLocalComponentWidth(250); bar.setMaximumContentWidth(bar.getContentWidth()); centerPanel.add(bar); fpslabel = new UILabel("FPS"); fpslabel.setLayoutData(BorderLayoutData.SOUTH); panel.add(fpslabel); return panel; } // protected void updateLogicalLayer(final ReadOnlyTimer timer) { // hud.getLogicalLayer().checkTriggers(timer.getTimePerFrame()); // } // // @Override // protected void renderRoot(final Renderer renderer) { // super.renderRoot(renderer); // renderer.renderBuckets(); // renderer.draw(hud); // } private double counter = 0; private int frames = 0; // @Override // protected void updateWindow(final ReadOnlyTimer timer) { // counter += timer.getTimePerFrame(); // frames++; // if (counter > 1) { // final double fps = (frames / counter); // counter = 0; // frames = 0; // System.out.printf("%7.1f FPS\n", fps); // fpslabel.setText(fps + " FPS"); // bar.setPercentFilled(timer.getTimeInSeconds() / 15); // bar.updateMinimumSizeFromContents(); // } // hud.updateGeometricState(timer.getTimePerFrame()); // } }