blob: fed130b54daef290cc9fac016f331c48173e2539 [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2013, 2017 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* CEA LIST - Initial API and implementation
*****************************************************************************/
package org.eclipse.papyrus.cdo.internal.ui.util;
import java.util.List;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
/**
* This is the CompositeLabelProvider type. Enjoy.
*/
public class CompositeLabelProvider
implements ILabelProvider {
private List<ILabelProvider> labelProviders = Lists.newArrayList();
public CompositeLabelProvider() {
super();
}
public CompositeLabelProvider(ILabelProvider provider,
ILabelProvider... more) {
this(Lists.asList(provider, more));
}
public CompositeLabelProvider(Iterable<? extends ILabelProvider> providers) {
this();
Iterables.addAll(this.labelProviders, providers);
}
@Override
public void addListener(ILabelProviderListener listener) {
for (ILabelProvider next : labelProviders) {
next.addListener(listener);
}
}
@Override
public void removeListener(ILabelProviderListener listener) {
for (ILabelProvider next : labelProviders) {
next.removeListener(listener);
}
}
@Override
public void dispose() {
for (ILabelProvider next : labelProviders) {
next.dispose();
}
labelProviders.clear();
}
@Override
public boolean isLabelProperty(Object element, String property) {
for (ILabelProvider next : labelProviders) {
if (next.isLabelProperty(element, property)) {
return true;
}
}
return false;
}
@Override
public Image getImage(Object element) {
Image result = null;
for (ILabelProvider next : labelProviders) {
result = next.getImage(element);
if (result != null) {
break;
}
}
return result;
}
@Override
public String getText(Object element) {
String result = null;
for (ILabelProvider next : labelProviders) {
result = next.getText(element);
if (result != null) {
break;
}
}
return result;
}
}