// 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.plugins.main.core.actions; import graphtea.platform.core.AbstractAction; import graphtea.platform.core.BlackBoard; import graphtea.ui.UIUtils; import graphtea.ui.components.GComponentInterface; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; /** * with using of this class you can have a message in status bar of the program, by just putting a bar in the XML file as following * <bar class="graphtea.plugins.main.graph.actions.StatusBarMessage" id="user message" /> * * @author azin azadi */ public class StatusBarMessage extends AbstractAction implements GComponentInterface { /** * constructor * * @param bb the blackboard of the action */ public StatusBarMessage(BlackBoard bb) { super(bb); } public void performAction(String eventName, Object value) { } static Timer t; /** * shows a message in the status bar of the Frame loaded and assigned to current blackboard * the showing message will be hide after 3 seconds */ public static void showQuickMessage(final BlackBoard b, String message) { setLabelMessage(b, message); t = new Timer(3000, e -> { t.stop(); setLabelMessage(b, ""); }); t.start(); } // private static void setLastMessage(blackboard b, String msg) { // b.set("Last Status Message", msg); // } // private static String getLastMessage(blackboard b, String msg) { // return b.get("Last Status Message"); // } /** * shows a message in the status bar of the Frame loaded and assigned to current blackboard * note that at each time just 1 message can be shown on that place */ public static void setMessage(BlackBoard b, String s) { // setLastMessage(b, s); setLabelMessage(b, s); } private static void setLabelMessage(BlackBoard b, String msg) { final JLabel l = (JLabel) UIUtils.getComponent(b, "user message"); l.setText(msg); new Thread() { public void run() { l.setBackground(Color.white); l.setOpaque(true); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } l.repaint(); l.setOpaque(false); } }.start(); } public void actionPerformed(ActionEvent e) { //nothing to do :D } JLabel l = new JLabel(); public Component getComponent(BlackBoard b) { // l.setBackground(Color.lightGray.brighter()); l.setOpaque(false); return l; } }