/* * Copyright (c) 2012 Data Harmonisation Panel * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * HUMBOLDT EU Integrated Project #030962 * Data Harmonisation Panel <http://www.dhpanel.eu> */ package eu.esdihumboldt.hale.ui.views.report; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import eu.esdihumboldt.hale.common.core.report.Report; import eu.esdihumboldt.hale.common.core.report.ReportSession; import eu.esdihumboldt.hale.common.core.report.writer.ReportReader; /** * LabelProvider for {@link ReportList}. * * @author Andreas Burchert * @partner 01 / Fraunhofer Institute for Computer Graphics Research */ public class ReportListLabelProvider extends LabelProvider { private final Map<ImageDescriptor, Image> imageCache = new HashMap<ImageDescriptor, Image>(); private final SimpleDateFormat df = new SimpleDateFormat("HH:mm yyyy-MM-dd"); /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ @Override public void dispose() { for (Image i : imageCache.values()) i.dispose(); imageCache.clear(); } /** * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element) { if (element instanceof ReportSession) { String img = "icons/compressed_folder_obj.gif"; return getImage(img); } else if (element instanceof Report<?>) { // get the right image Report<?> report = (Report<?>) element; String img = "icons/signed_yes.gif"; if (!report.isSuccess()) { img = "icons/error.gif"; } else if (report.getWarnings().size() > 0 && report.getErrors().size() > 0) { img = "icons/errorwarning_tab.gif"; } else if (report.getErrors().size() > 0) { img = "icons/error_log.gif"; } else if (report.getWarnings().size() > 0) { img = "icons/warning.gif"; } return getImage(img); } return null; } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element) { if (element instanceof Report<?>) { return ((Report<?>) element).getTaskName(); } else if (element instanceof ReportSession) { long id = ((ReportSession) element).getId(); if (id == ReportReader.UNKNOWN_SESSION) { // session information is not present usually for imported logs return "Import"; } return df.format(new Date(id)); } return "Unhandled type"; } /** * Get an Image from cache or resource. * * @param img name of file * * @return the Image */ protected Image getImage(String img) { ImageDescriptor descriptor = null; descriptor = AbstractUIPlugin .imageDescriptorFromPlugin("eu.esdihumboldt.hale.ui.views.report", img); if (descriptor == null) { return null; } Image image = imageCache.get(descriptor); if (image == null) { image = descriptor.createImage(); imageCache.put(descriptor, image); } return image; } }