// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.ui.components;
import graphtea.platform.core.BlackBoard;
import graphtea.ui.actions.UIEventData;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
/**
* This is class is the child of JButton which is using the blackboard to pass the action of itself.
* it is specially passing the actions to the log which UIEventHandler will be map it to its corresponding action
* I used this buttons in the GToolBar
* User: Azin Azadi
*/
public class GButton extends JButton implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 938792224562609943L;
BlackBoard blackboard;
UIEventData t;
/**
* action is the name of the class which the UIEventHandler will map the button to.
*/
public GButton(String label, URL iconURL, BlackBoard b, String action) {
super();
blackboard = b;
ImageIcon icon = null;
if (iconURL != null)
icon = new ImageIcon(iconURL);
setLabelAndIcon(label, icon);
addActionListener(this);
//-------------
t = new UIEventData();
t.action = action;
}
/**
* action is the name of the class which the UIEventHandler will map the button to.
*/
public GButton(String label, String iconFileName, BlackBoard b, String action) {
super();
blackboard = b;
ImageIcon icon = loadIcon(iconFileName);
setLabelAndIcon(label, icon);
addActionListener(this);
//-------------
t = new UIEventData();
t.action = action;
}
private ImageIcon loadIcon(String iconFileName) {
ImageIcon icon = null;
if (iconFileName != null && !iconFileName.equals("")) {
icon = new ImageIcon(iconFileName);
if (icon.getIconWidth() < 1) {
//solving the problem between GraphTea and GraphTeaDebugger
if (iconFileName.charAt(0) == '/')
iconFileName = iconFileName.substring(1);
else
iconFileName = iconFileName + "/";
icon = new ImageIcon(iconFileName);
}
}
return icon;
}
//set the icon and text of the button according to input
private void setLabelAndIcon(String label, ImageIcon icon) {
if (icon != null && icon.getIconWidth() > 1) {
setIcon(icon);
setToolTipText(label);
} else {
setText(label);
}
}
public void actionPerformed(ActionEvent e) {
blackboard.setData(UIEventData.name(""), t);
}
}