package org.mt4j.components.visibleComponents.widgets.menus;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import org.mt4j.components.interfaces.IclickableButton;
import org.mt4j.components.visibleComponents.shapes.MTPolygon;
import org.mt4j.input.inputProcessors.componentProcessors.tapProcessor.TapEvent;
import org.mt4j.util.math.Vertex;
import processing.core.PApplet;
public abstract class MTGLButton extends MTPolygon implements IclickableButton {
/** The registered action listeners. */
private ArrayList<ActionListener> registeredActionListeners = new ArrayList<ActionListener>(3);
public MTGLButton(PApplet applet, Vertex[] vertices) {
super(applet, vertices);
}
public MTGLButton(Vertex[] vertices, PApplet applet) {
super(vertices, applet);
}
/**
* Adds the action listener.
*
* @param listener the listener
*/
public synchronized void addActionListener(ActionListener listener) {
if (!registeredActionListeners.contains(listener)){
registeredActionListeners.add(listener);
}
}
/**
* Removes the action listener.
*
* @param listener the listener
*/
public synchronized void removeActionListener(ActionListener listener) {
if (registeredActionListeners.contains(listener)){
registeredActionListeners.remove(listener);
}
}
/**
* Gets the action listeners.
*
* @return the action listeners
*/
public synchronized ActionListener[] getActionListeners() {
return (ActionListener[])registeredActionListeners.toArray(new ActionListener[this.registeredActionListeners.size()]);
}
/**
* Fire action performed.
*/
protected void fireActionPerformed() {
ActionListener[] listeners = this.getActionListeners();
synchronized(listeners) {
for (int i = 0; i < listeners.length; i++) {
ActionListener listener = (ActionListener)listeners[i];
listener.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "action performed on tangible button"));
}
}
}
/**
* fires an action event with a ClickEvent Id as its ID.
*
* @param ce the ce
*/
public void fireActionPerformed(TapEvent ce) {
ActionListener[] listeners = this.getActionListeners();
synchronized(listeners) {
for (int i = 0; i < listeners.length; i++) {
ActionListener listener = (ActionListener)listeners[i];
listener.actionPerformed(new ActionEvent(this, ce.getTapID(), "action performed on tangible button"));
}
}
}
}