package org.myrobotlab.control.widget; import java.awt.Color; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; public class DigitalButton extends JButton { private static final long serialVersionUID = 1L; // public int ID = -1; public final Object parent; public String offText = null; public String onText = null; String offCMD = "off"; String onCMD = "on"; public Color offBGColor = null; Color offFGColor = null; Color onBGColor = null; Color onFGColor = null; Icon onIcon = null; Icon offIcon = null; public int type = -1; public boolean isOn = false; public DigitalButton(Object parent, String offText, Color offBGColor, Color offFGColor, String onText, Color onBGColor, Color onFGColor, int type) { this(parent, offText, offText, null, offBGColor, offFGColor, onText, onText, null, onBGColor, onFGColor, type); } public DigitalButton(Object parent, String offCMD, ImageIcon offIcon, String onCMD, ImageIcon onIcon, int type) { this(parent, null, offCMD, offIcon, null, null, null, onCMD, onIcon, null, null, type); } public DigitalButton(Object parent, String offText, String offCMD, Color offBGColor, Color offFGColor, String onText, String onCMD, Color onBGColor, Color onFGColor, int type) { this(parent, offText, offCMD, null, offBGColor, offFGColor, onText, onCMD, null, onBGColor, onFGColor, type); } public DigitalButton(Object parent, String offText, String offCMD, Icon offIcon, Color offBGColor, Color offFGColor, String onText, String onCMD, Icon onIcon, Color onBGColor, Color onFGColor, int type) { super(offText); this.parent = parent; this.type = type; this.onText = onText; this.offText = offText; this.offBGColor = offBGColor; this.offFGColor = offFGColor; this.onBGColor = onBGColor; this.onFGColor = onFGColor; this.onIcon = onIcon; this.offIcon = offIcon; if (offIcon != null) { setIcon(offIcon); } // setPreferredSize(new Dimension(35,15)); setBackground(offBGColor); setForeground(offFGColor); // setOpaque(false); setBorder(null); setOpaque(true); setBorderPainted(false); // setContentAreaFilled(false); // setIcon(this.offIcon); } public boolean isOn() { return isOn; } public void setOff() { if (offIcon != null) { setIcon(offIcon); } else { setBackground(offBGColor); setForeground(offFGColor); setText(offText); } setActionCommand(offCMD); isOn = false; } public void setOn() { if (onIcon != null) { setIcon(onIcon); } else { setBackground(onBGColor); setForeground(onFGColor); setText(onText); } setActionCommand(onCMD); isOn = true; } public void toggle() { if (isOn) { setOff(); } else { setOn(); } } }