/**
* Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.tools.forge.ui.notifications.internal;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class NotificationHelper {
private NotificationHelper() {
}
private static class FadeInRunnable implements Runnable {
private Shell shell;
private int currentAlpha = 0;
public FadeInRunnable(Shell shell) {
this.shell = shell;
}
@Override
public void run() {
if (shell == null || shell.isDisposed()) return;
currentAlpha += NotificationConstants.FADE_IN_STEP;
if (currentAlpha > NotificationConstants.FINAL_ALPHA) {
shell.setAlpha(NotificationConstants.FINAL_ALPHA);
startTimer(shell);
return;
}
shell.setAlpha(currentAlpha);
Display.getDefault().timerExec(NotificationConstants.FADE_TIMER, this);
}
}
private static class FadeOutRunnable implements Runnable {
private Shell shell;
private int currentAlpha= NotificationConstants.FINAL_ALPHA;
public FadeOutRunnable(Shell shell) {
this.shell = shell;
}
@Override
public void run() {
if (shell == null || shell.isDisposed()) return;
currentAlpha -= NotificationConstants.FADE_OUT_STEP;
if (currentAlpha <= 0) {
shell.setAlpha(0);
shell.dispose();
return;
}
shell.setAlpha(currentAlpha);
Display.getDefault().timerExec(NotificationConstants.FADE_TIMER, this);
}
}
public static void fadeIn(final Shell shell) {
Display.getDefault().timerExec(
NotificationConstants.FADE_TIMER,
new FadeInRunnable(shell));
}
private static void startTimer(final Shell shell) {
Runnable run = new Runnable() {
@Override
public void run() {
if (shell == null || shell.isDisposed()) return;
fadeOut(shell);
}
};
Display.getDefault().timerExec(NotificationConstants.DISPLAY_TIME, run);
}
private static void fadeOut(final Shell shell) {
Display.getDefault().timerExec(
NotificationConstants.FADE_TIMER,
new FadeOutRunnable(shell));
}
}