/** * Copyright (c) 2003-2009, Xith3D Project Group all rights reserved. * * Portions based on the Java3D interface, Copyright by Sun Microsystems. * Many thanks to the developers of Java3D and Sun Microsystems for their * innovation and design. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * Neither the name of the 'Xith3D Project Group' nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) A * RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE */ package org.xith3d.utility.hud.editor; import org.openmali.types.twodee.Dim2f; import org.openmali.vecmath2.Point2f; import org.xith3d.ui.hud.HUD; import org.xith3d.ui.hud.base.AbstractButton; import org.xith3d.ui.hud.listeners.ButtonListener; import org.xith3d.ui.hud.widgets.Button; import org.xith3d.ui.hud.widgets.Frame; import org.xith3d.ui.hud.widgets.Panel; import org.xith3d.utility.hud.editor.info.HEInfo_Widget; /** * A HUD editor * * @author Amos Wenger (aka BlueSky) */ public class HUDEditor implements ButtonListener { private Panel panel; /** * Creates a new HUD editor on this panel * * @param panel */ public HUDEditor(Panel panel) { this.panel = panel; if(panel.getHUD() == null) { throw new Error("You should add your panel to a HUD before" + " initiating a HUDEditor on it !"); } HUD hud = panel.getHUD(); Dim2f frameSize = new Dim2f(hud.getResX() / 5f, hud.getResY() / 1.5f); Frame frame = new Frame(frameSize.getWidth(), frameSize.getHeight(), "Widgets"); Dim2f size = new Dim2f(frameSize.getWidth() - 4f, frameSize.getHeight() / 7f); final float yStep = size.getHeight(); float yPos = 0; ((Button) frame.getContentPane().addWidget(new Button(size.getWidth(), size.getHeight(), "Label"), 0f, yPos)).addButtonListener(this); ((Button) frame.getContentPane().addWidget( new Button(size.getWidth(), size.getHeight(), "DynamicLabel"), 0f, yPos += yStep)) .addButtonListener(this); ((Button) frame.getContentPane().addWidget(new Button(size.getWidth(), size.getHeight(), "Image"), 0f, yPos += yStep)).addButtonListener(this); ((Button) frame.getContentPane().addWidget(new Button(size.getWidth(), size.getHeight(), "Button"), 0f, yPos += yStep)).addButtonListener(this); ((Button) frame.getContentPane().addWidget( new Button(size.getWidth(), size.getHeight(), "TextField"), 0f, yPos += yStep)) .addButtonListener(this); hud.addWindow(frame, hud.getWidth() - frame.getWidth() - 10f, 10f); frame.setCloseButtonVisible(false); frame.setVisible(true); } public void onButtonClicked(AbstractButton button, Object userObject) { try { HEInfo_Widget widget = HEInfo_Widget.newWidget(((Button)button).getText(), new Point2f(100f, 100f), new Dim2f(100f, 50f)); panel.addWidget(widget.getWidget()); new WidgetManipulator(widget.getWidget()); } catch (Exception e) { e.printStackTrace(); } } }