blob: 64ca977310bc88ed46bcaac7f1cabea1d6513af8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.details.providers;
import org.eclipse.bpel.ui.adapters.ILabeledElement;
import org.eclipse.bpel.ui.adapters.INamedElement;
import org.eclipse.bpel.ui.util.BPELUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
/**
* Label provider for the details area. Mainly used for updating
* the details title.
*
* This implementation only keeps track of changes to one model
* object only since it is currently not necessary for the details area
* to keep track of more than one.
*/
public class DetailsLabelProvider extends LabelProvider {
/**
* This is the model object we keep track of changes. This
* object is the last one passed as a parameter to getText().
*/
protected Object currentModelObject;
// protected MultiObjectAdapter adapter;
// TODO: this is a temp hack
private Image currentImage;
public DetailsLabelProvider() {
super();
// adapter = new MultiObjectAdapter() {
// public void notify(Notification n) {
// if (isDisplayNameAffected(n)) {
// // creates an empty event - the event itself is not important only the notification
// LabelProviderChangedEvent event = new LabelProviderChangedEvent(DetailsLabelProvider.this);
// fireLabelProviderChanged(event);
// }
// }
// };
}
@Override
public Image getImage(Object model) {
ILabeledElement element = BPELUtil.adapt(model, ILabeledElement.class);
if (currentImage != null) {
//currentImage.dispose();
}
currentImage = (element != null) ? element.getSmallImage(model) : null;
return currentImage;
}
/**
* Parameter model has to be an EObject.
*/
@Override
public String getText(Object model) {
if (!(model instanceof EObject)) {
return null;
}
hookListener((EObject) model);
ILabeledElement element = BPELUtil.adapt(model, ILabeledElement.class);
if (element != null) return element.getLabel(model);
INamedElement namedElement = BPELUtil.adapt(model, INamedElement.class);
return (namedElement != null) ? namedElement.getName(model) : null;
}
/**
* Listen to changes to the model object's name or label.
*/
protected void hookListener(EObject model) {
if (model == currentModelObject) {
return;
}
currentModelObject = model;
}
}