package com.sonatype.buildserver.eclipse.ui.view;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IExecutableExtensionFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import com.sonatype.buildserver.eclipse.ui.HudsonUIActivator;
import com.sonatype.buildserver.eclipse.ui.prefs.PreferenceConstants;
import com.sonatype.buildserver.spi.BuildDetails;
import com.sonatype.buildserver.spi.BuildNotification;
private static MessageBoxBuildNotification instance;
private boolean oneOpened = false;
}
notify("Hudson build failed", "A Hudson build failure has occured.");
}
notify("Hudson build succeeded", "A failing Hudson build got fixed.");
}
private void notify(
final String title,
final String message) {
synchronized (this) {
if (oneOpened) return;
}
Display.getDefault().asyncExec(new Runnable() {
if (HudsonUIActivator.getDefault().getPreferenceStore().getBoolean(PreferenceConstants.PREF_SHOW_MESSAGE))
{
boolean show = Display.getDefault().getActiveShell() == null && !(HudsonUIActivator.getDefault().getWorkbench().isStarting() || HudsonUIActivator.getDefault().getWorkbench().isClosing());
if (show) {
synchronized (MessageBoxBuildNotification.this) {
if (oneOpened) return;
oneOpened = true;
}
MessageBox box = new MessageBox(HudsonUIActivator.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(),
SWT.ICON_INFORMATION | SWT.OK | SWT.APPLICATION_MODAL);
box.setText(title);
box.setMessage(message);
box.open();
synchronized (MessageBoxBuildNotification.this) {
oneOpened = false;
}
}
}
}
});
}
throws CoreException
{
synchronized (MessageBoxBuildNotification.class) {
if (instance == null) {
instance = new MessageBoxBuildNotification();
}
return instance;
}
}
}