blob: b40b00bef8618282748676afa207a93bf787ed21 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2013 Tasktop Technologies and others.
* 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.builds.ui;
import java.util.Date;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.mylyn.builds.core.IBuildElement;
import org.eclipse.mylyn.builds.core.IBuildPlan;
import org.eclipse.mylyn.builds.internal.core.BuildPackage;
import org.eclipse.mylyn.builds.ui.BuildsUi;
import org.eclipse.mylyn.commons.notifications.ui.AbstractUiNotification;
import org.eclipse.mylyn.commons.ui.CommonImages;
import org.eclipse.mylyn.internal.builds.ui.view.BuildLabelProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
/**
* @author Steffen Pingel
*/
public class BuildNotification extends AbstractUiNotification {
private static final String ID_EVENT_PLAN_STATUS_CHANGED = "org.eclipse.mylyn.builds.ui.events.PlanStatusChanged"; //$NON-NLS-1$
@SuppressWarnings("unused")
private static final String ID_EVENT_BUILD_COMPLETED = "org.eclipse.mylyn.builds.ui.events.BuildCompleted"; //$NON-NLS-1$
@SuppressWarnings("unused")
private static final String ID_EVENT_BUILD_STARTED = "org.eclipse.mylyn.builds.ui.events.BuildStarted"; //$NON-NLS-1$
private final IBuildElement element;
private String description;
private String label;
public BuildNotification(String eventId, IBuildElement element) {
super(eventId);
this.element = element;
}
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
return Platform.getAdapterManager().getAdapter(this, adapter);
}
@Override
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public Image getNotificationImage() {
if (element instanceof IBuildPlan) {
return CommonImages.getImage(BuildLabelProvider.getImageDescriptor(((IBuildPlan) element).getStatus()));
}
return null;
}
@Override
public Image getNotificationKindImage() {
return CommonImages.getImage(BuildImages.VIEW_BUILDS);
}
@Override
public void open() {
BuildsUi.open(element);
}
public static BuildNotification createNotification(Notification msg) {
if (msg.getOldValue() == msg.getNewValue()) {
return null;
}
BuildNotification notification = null;
if (msg.getNotifier() instanceof IBuildPlan) {
IBuildPlan plan = (IBuildPlan) msg.getNotifier();
int featureId = msg.getFeatureID(IBuildPlan.class);
if (featureId == BuildPackage.BUILD_PLAN__STATUS) {
notification = new BuildNotification(ID_EVENT_PLAN_STATUS_CHANGED, (IBuildElement) msg.getNotifier());
notification.setLabel(NLS.bind("Plan {0}: {1}", plan.getLabel(), plan.getStatus().toString()));
notification.setDescription(plan.getSummary());
// } else if (featureId == BuildPackage.BUILD_PLAN__STATE && plan.getLastBuild() != null) {
// if (plan.getState() == BuildState.RUNNING) {
// notification = new BuildNotification(ID_EVENT_PLAN_STATUS_CHANGED, (IBuildElement) msg
// .getNotifier());
// notification.setLabel(NLS.bind("Build {0} started", plan.getLastBuild().getLabel()));
// notification.setDescription(plan.getLabel());
// } else {
// notification = new BuildNotification(ID_EVENT_BUILD_COMPLETED, (IBuildElement) msg.getNotifier());
// notification.setLabel(NLS.bind("Build {0} completed", plan.getLastBuild().getLabel()));
// notification.setDescription(plan.getLabel());
// }
// } else if (featureId == BuildPackage.BUILD_PLAN__LAST_BUILD && plan.getLastBuild() != null) {
// notification = new BuildNotification(ID_EVENT_BUILD_COMPLETED, (IBuildElement) msg.getNotifier());
// notification.setLabel(NLS.bind("Build {0} completed", plan.getLastBuild().getLabel()));
// notification.setDescription(plan.getLabel());
}
}
return notification;
}
@Override
public Date getDate() {
return null;
}
}