/******************************************************************************* * Copyright (c) 2012 BundleMaker Project Team * 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: * Nils Hartmann - initial API and implementation ******************************************************************************/ package org.bundlemaker.core.ui.view.transformationhistory.view; import java.util.List; import org.bundlemaker.core.analysis.IRootArtifact; import org.bundlemaker.core.resource.ITransformation; import org.bundlemaker.core.ui.view.transformationhistory.ITransformationLabelProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.graphics.Image; /** * @author Nils Hartmann (nils@nilshartmann.net) * */ public class AbstractHistoryViewColumnLabelProvider extends ColumnLabelProvider { private final FallbackTransformationLabelProvider _fallbackTransformationLabelProvider = new FallbackTransformationLabelProvider(); private final List<ITransformationLabelProvider> _transformationLabelProviders; public AbstractHistoryViewColumnLabelProvider(List<ITransformationLabelProvider> transformationLabelProviders) { _transformationLabelProviders = transformationLabelProviders; } protected ITransformationLabelProvider getTransformationLabelProvider(ITransformation transformation) { for (ITransformationLabelProvider labelProvider : _transformationLabelProviders) { if (labelProvider.canHandle(transformation)) { return labelProvider; } } // non found: return fallback return _fallbackTransformationLabelProvider; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ColumnLabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element) { if (element instanceof IRootArtifact) { return getImageForArtifact((IRootArtifact) element); // return ArtifactImages.ROOT_ARTIFACT_ICON.getImage(); } else if (element instanceof ITransformation) { return getImageForTransformation((ITransformation) element); } return super.getImage(element); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element) { if (element instanceof IRootArtifact) { return getTextForArtifact((IRootArtifact) element); // return ArtifactImages.ROOT_ARTIFACT_ICON.getImage(); } else if (element instanceof ITransformation) { return getTextForArtifact((ITransformation) element); } return super.getText(element); } /** * @param element * @return */ protected String getTextForArtifact(ITransformation element) { return null; } /** * @param element * @return */ protected String getTextForArtifact(IRootArtifact element) { return null; } /** * @param element * @return */ protected Image getImageForTransformation(ITransformation element) { return null; } /** * @param element * @return */ protected Image getImageForArtifact(IRootArtifact element) { return null; } /** * Used as fallback {@link ITransformationLabelProvider} if no provider for a given {@link ITransformation} has been * registered * * @author Nils Hartmann (nils@nilshartmann.net) * */ private static class FallbackTransformationLabelProvider implements ITransformationLabelProvider { @Override public boolean canHandle(ITransformation transformation) { return true; } @Override public String getTitleText(ITransformation transformation) { return transformation.getClass().getSimpleName(); } @Override public Image getImage(ITransformation transformation) { return null; } @Override public String getDetailsText(ITransformation transformation) { return null; } } }