/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.smooks.configuration.editors.wizard.IViewerInitor;
import org.jboss.tools.smooks.configuration.editors.wizard.ViewerInitorStore;
/**
* @author Dart (dpeng@redhat.com)<p>
* Apr 12, 2009
*/
public class CompoundStructuredDataLabelProvider extends LabelProvider {
private List<ILabelProvider> labelProviderList = new ArrayList<ILabelProvider>();
public CompoundStructuredDataLabelProvider() {
Collection<IViewerInitor> lists = ViewerInitorStore.getInstance().getViewerInitorCollection();
for (Iterator<IViewerInitor> iterator = lists.iterator(); iterator.hasNext();) {
IViewerInitor viewerInitor = (IViewerInitor) iterator.next();
labelProviderList.add(viewerInitor.getLabelProvider());
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
*/
@Override
public Image getImage(Object element) {
for (Iterator<?> iterator = labelProviderList.iterator(); iterator.hasNext();) {
ILabelProvider provider = (ILabelProvider) iterator.next();
Image img = provider.getImage(element);
if (img == null) {
continue;
}
return img;
}
return super.getImage(element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
@Override
public String getText(Object element) {
for (Iterator<?> iterator = labelProviderList.iterator(); iterator.hasNext();) {
ILabelProvider provider = (ILabelProvider) iterator.next();
String text = provider.getText(element);
if (text == null || text.length() == 0) {
continue;
}
return text;
}
return super.getText(element);
}
}