/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package automenta.spacenet.space.widget.button; import automenta.spacenet.space.geom.Box; import automenta.spacenet.space.widget.panel.Panel; import automenta.spacenet.space.control.Pressable; import automenta.spacenet.space.geom.text3d.Font3D; import automenta.spacenet.space.geom.text3d.Text3D; import automenta.spacenet.space.widget.panel.DefaultPanelModel; import automenta.spacenet.space.widget.panel.PanelModel; import automenta.spacenet.var.physical.Color; import com.ardor3d.intersection.PickData; import java.util.LinkedList; import java.util.List; /** * * @author seh */ public class Button extends Panel implements Pressable { private List<ButtonAction> buttonActions = new LinkedList(); public Button() { this(new DefaultEmptyButtonModel()); } public Button(Font3D font, String label) { this(new DefaultTextButtonModel(font, label)); } public Button(ButtonModel model) { super(model); } @Override public void setModel(PanelModel m) { super.setModel(m); ((ButtonModel)m).initButton(this); } @Override public ButtonModel getModel() { return (ButtonModel) super.getModel(); } @Override public void onPressStart(PickData pick) { getModel().onPressStart(); } @Override public void onPressStop(PickData pick) { if (isTouched()) { getModel().onTouchStart(); } else { getModel().onNormal(); } //TODO test if still picking for (ButtonAction ba : buttonActions) ba.onButtonClicked(this); } public void add(ButtonAction a) { buttonActions.add(a); } public void remove(ButtonAction a) { buttonActions.remove(a); } }