/* Copyright (C) 2011 by Claas Wilke (claas.wilke@tu-dresden.de) This file is part of Dresden OCL. Dresden OCL is free software: you can redistribute it and/or modify it 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. Dresden OCL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Dresden OCL. If not, see <http://www.gnu.org/licenses/>. */ package org.dresdenocl.metrics.ui; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; /** * <p> * The {@link ResultsLabelProvider} provides Labels for results that shall be * shown in the {@link InterpreterView}. * </p> * * @author Claas Wilke */ public class ResultsLabelProvider extends LabelProvider implements ITableLabelProvider { /* TODO Create icons. */ /** Path to icon for description of metric. */ private final static String ICON_DESCRIPTION = "icons/description.gif"; /** Path to icon for value of metric. */ private final static String ICON_VALUE = "icons/value.gif"; private Map<ImageDescriptor, Image> cachedImages = new HashMap<ImageDescriptor, Image>(); /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ public Image getImage(Object obj) { Image result; result = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_OBJ_ELEMENT); return result; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java * .lang.Object, int) */ public Image getColumnImage(Object anObject, int index) { Image result; ImageDescriptor imageDescriptor; imageDescriptor = null; /* Check if the given object is a list. */ if (anObject.getClass().isArray()) { Object[] aRow; aRow = (Object[]) anObject; /* Check which icon shall be returned. */ switch (index) { case ResultsContentProvider.DESCRIPTION: { if (aRow[index] != null && aRow[index].toString().length() > 0) imageDescriptor = MetricsUiPlugin .getImageDescriptor(ICON_DESCRIPTION); break; } case ResultsContentProvider.VALUE: { if (aRow[index] != null && aRow[index].toString().length() > 0) imageDescriptor = MetricsUiPlugin .getImageDescriptor(ICON_VALUE); break; } // no default. } // end switch. } if (imageDescriptor != null) { if (this.cachedImages.containsKey(imageDescriptor)) { result = this.cachedImages.get(imageDescriptor); } else { result = imageDescriptor.createImage(); this.cachedImages.put(imageDescriptor, result); } } else { result = PlatformUI.getWorkbench().getSharedImages() .getImage(ISharedImages.IMG_OBJ_ELEMENT); result = null; } return result; } /* * (non-Javadoc) * * @see * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang * .Object, int) */ public String getColumnText(Object anObject, int index) { String result; /* Check if the given object is a list. */ if (anObject.getClass().isArray()) { Object[] aRow; aRow = (Object[]) anObject; if (index <= aRow.length) { /* Check which element shall be displayed. */ switch (index) { case ResultsContentProvider.VALUE: case ResultsContentProvider.DESCRIPTION: { result = aRow[index].toString(); break; } default: { result = "Invalid column"; } } // end switch. } /* Else show an error message. */ else { result = "The given row to display is not an array."; } } /* Else show an error message. */ else { result = "The given row to display is not an array."; } return result; } }