package com.baselet.diagram; import java.awt.Color; import java.awt.Rectangle; import java.util.Timer; import java.util.TimerTask; import javax.swing.SwingUtilities; import com.baselet.control.basics.Converter; public class Notifier { private static final Notifier instance = new Notifier(); public static synchronized Notifier getInstance() { return instance; } public void showInfo(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { showNotificationHelper(message, 4000, Color.BLACK, Color.BLUE); } }); } public void showError(final String message) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { showNotificationHelper("ERROR: " + message, 10000, Color.RED, Color.RED); } }); } private void showNotificationHelper(String message, int duration, Color textColor, Color backgroundColor) { final DrawPanel notifierPanel = CurrentDiagram.getInstance().getDiagramHandler().getDrawPanel(); Rectangle viewRect = notifierPanel.getScrollPane().getViewport().getViewRect(); final DiagramNotification notification = new DiagramNotification(Converter.convert(viewRect), message, textColor, backgroundColor); new Timer("Notificationtimer", true).schedule(new TimerTask() { @Override public void run() { notifierPanel.remove(notification); notifierPanel.repaint(); } }, duration); notifierPanel.setNotification(notification); } }