package com.netifera.platform.ui.tasks.output; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import com.netifera.platform.api.tasks.ITaskOutput; import com.netifera.platform.tasks.TaskLogOutput; import com.netifera.platform.ui.internal.tasks.TasksPlugin; /** * Creates text and icons for entries in the task list. * */ public class TaskOutputTableLabelProvider extends LabelProvider implements ITableLabelProvider { private final static Image modelChangeImage; private final static Image unknownMessageImage; private final static String IMAGE_MODEL_CHANGE = "icons/logmsg.png"; private final static String IMAGE_LOG_INFO = "icons/lognfo.png"; private final static String IMAGE_LOG_WARNING = "icons/logwrn.png"; private final static String IMAGE_LOG_ERROR = "icons/logerr.png"; private final static String IMAGE_LOG_DEBUG = "icons/logdbg.png"; private final static String IMAGE_UNKNOWN_MESSAGE = "icons/unknown.png"; private final static Map<Integer, Image> imageMap; static { modelChangeImage = loadImage(IMAGE_MODEL_CHANGE); unknownMessageImage = loadImage(IMAGE_UNKNOWN_MESSAGE); imageMap = new HashMap<Integer, Image>(); imageMap.put(TaskLogOutput.INFO, loadImage(IMAGE_LOG_INFO)); imageMap.put(TaskLogOutput.WARNING, loadImage(IMAGE_LOG_WARNING)); imageMap.put(TaskLogOutput.ERROR, loadImage(IMAGE_LOG_ERROR)); imageMap.put(TaskLogOutput.DEBUG, loadImage(IMAGE_LOG_DEBUG)); } private static Image loadImage(String key) { return TasksPlugin.getPlugin().getImageCache().get(key); } /** to use to format date/time columns if any */ // DateFormat dateFormat = DateFormat.getInstance(); // DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); /** * Return a icon image (if any) for the indicated column in the table. */ public Image getColumnImage(Object element, int columnIndex) { if (columnIndex != 1) { return null; } if (element instanceof TaskLogOutput) { int level = ((TaskLogOutput) element).getLogLevel(); if (imageMap.containsKey(level)) { return imageMap.get(level); } return unknownMessageImage; } return modelChangeImage; } /** * Return text string to display for given element in the indicated column */ public String getColumnText(Object element, int columnIndex) { if (!(element instanceof ITaskOutput)) { return "??"; } /** columns: time , (i) message*/ switch (columnIndex) { case 0: return dateFormat.format(((ITaskOutput) element).getTime()); case 1: return element.toString(); default: return ""; } } @Override public void dispose() { super.dispose(); } };