diff --git a/app/src/cc/arduino/contributions/ContributionsSelfCheck.java b/app/src/cc/arduino/contributions/ContributionsSelfCheck.java index d933b8797..39bef3427 100644 --- a/app/src/cc/arduino/contributions/ContributionsSelfCheck.java +++ b/app/src/cc/arduino/contributions/ContributionsSelfCheck.java @@ -102,7 +102,7 @@ public class ContributionsSelfCheck extends TimerTask { Editor ed = base.getActiveEditor(); notificationPopup = new NotificationPopup(ed, hyperlinkListener, text); if (ed.isFocused()) { - notificationPopup.setVisible(true); + notificationPopup.begin(); return; } @@ -116,7 +116,7 @@ public class ContributionsSelfCheck extends TimerTask { @Override public void windowGainedFocus(WindowEvent evt) { - notificationPopup.setVisible(true); + notificationPopup.begin(); for (Editor e : base.getEditors()) e.removeWindowFocusListener(this); } diff --git a/app/src/cc/arduino/view/NotificationPopup.java b/app/src/cc/arduino/view/NotificationPopup.java index b3b636b60..87a8e3650 100644 --- a/app/src/cc/arduino/view/NotificationPopup.java +++ b/app/src/cc/arduino/view/NotificationPopup.java @@ -42,6 +42,8 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.util.Timer; +import java.util.TimerTask; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -52,10 +54,13 @@ import javax.swing.WindowConstants; import javax.swing.border.LineBorder; import javax.swing.event.HyperlinkListener; +import cc.arduino.Constants; import processing.app.Theme; public class NotificationPopup extends JDialog { + private Timer autoCloseTimer = new Timer(false); + public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, String message) { super(parent, false); @@ -130,6 +135,17 @@ public class NotificationPopup extends JDialog { } public void close() { + autoCloseTimer.cancel(); dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); } + + public void begin() { + autoCloseTimer.schedule(new TimerTask() { + @Override + public void run() { + close(); + } + }, Constants.NOTIFICATION_POPUP_AUTOCLOSE_DELAY); + setVisible(true); + } } diff --git a/arduino-core/src/cc/arduino/Constants.java b/arduino-core/src/cc/arduino/Constants.java index 6cc47c83a..3c90abe7d 100644 --- a/arduino-core/src/cc/arduino/Constants.java +++ b/arduino-core/src/cc/arduino/Constants.java @@ -44,7 +44,7 @@ public class Constants { public static final String LIBRARY_DEVELOPMENT_FLAG_FILE = ".development"; public static final long BOARDS_LIBS_UPDATABLE_CHECK_START_PERIOD = 60000; - public static final int NOTIFICATION_POPUP_AUTOCLOSE_DELAY = 10000; + public static final long NOTIFICATION_POPUP_AUTOCLOSE_DELAY = 10000; public static final String PROXY_TYPE_NONE = "none"; public static final String PROXY_TYPE_AUTO = "auto";