/******************************************************************************* * Copyright (c) 2008 Pierre-Antoine Grégoire. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Pierre-Antoine Grégoire - initial API and implementation *******************************************************************************/ package org.org.eclipse.core.utils.platform.jobs.completion; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.IJobChangeListener; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.forms.events.HyperlinkAdapter; public abstract class CompletionPopupJobChangeListener implements IJobChangeListener { private final String title; private final String label; private HyperlinkAdapter hyperlinkAdapter; public CompletionPopupJobChangeListener(String title, String label) { this.title = title; this.label = label; } public CompletionPopupJobChangeListener(String title, String label, HyperlinkAdapter hyperlinkAdapter) { this.title = title; this.label = label; this.hyperlinkAdapter = hyperlinkAdapter; } public void sleeping(IJobChangeEvent event) { } public void scheduled(IJobChangeEvent event) { } public void running(IJobChangeEvent event) { } public void done(final IJobChangeEvent event) { Display.getDefault().asyncExec(new Runnable() { public void run() { JobCompletionNotificationPopup popup = new JobCompletionNotificationPopup(Display.getDefault().getActiveShell(), title, hyperlinkAdapter); List<IJobCompletionNotification> notifications = new ArrayList<IJobCompletionNotification>(); notifications.add(createJobEventNotificationPopup(label, event)); popup.setContents(notifications); popup.open(); } }); } public void awake(IJobChangeEvent event) { } public void aboutToRun(IJobChangeEvent event) { } public abstract IJobCompletionNotification createJobEventNotificationPopup(String label2, IJobChangeEvent event); }