/** * Copyright 2010 The University of North Carolina at Chapel Hill * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package unc.lib.cdr.workbench.capture; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.IDelayedLabelDecorator; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unc.lib.cdr.workbench.IResourceConstants; import unc.lib.cdr.workbench.views.LabelImageFactory; /** * @author Gregory Jansen * */ public class OriginalsTableLabelProvider implements ITableLabelProvider, IDelayedLabelDecorator { private static final Logger log = LoggerFactory.getLogger(OriginalsTableLabelProvider.class); public static final String[] headers = { "Name", "Size", "Modified" }; public static final int[] bounds = { 400, 80, 80 }; public static final int COL_NAME = 0; public static final int COL_MODIFIED = 2; public static final int COL_SIZE = 1; private static DateFormat shortDate = SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT); private DecoratingLabelProvider provider = (DecoratingLabelProvider) WorkbenchLabelProvider .getDecoratingWorkbenchLabelProvider(); private IDelayedLabelDecorator decorator = (IDelayedLabelDecorator) provider.getLabelDecorator(); private LabelImageFactory imageFactory = new LabelImageFactory(); /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang .Object, int) */ @Override public Image getColumnImage(Object element, int columnIndex) { Image result = null; if (columnIndex == 0) { result = provider.getImage(element); // result = imageFactory.getImageForObject(element); } return result; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang .Object, int) */ @Override public String getColumnText(Object element, int columnIndex) { String result = null; IResource r = null; if (element instanceof IResource) { r = (IResource) element; } try { switch (columnIndex) { case COL_NAME: result = provider.getText(element); break; case COL_MODIFIED: if (element instanceof IFolder || element instanceof IFile) { result = getModified(r); } break; case COL_SIZE: if (element instanceof IFolder || element instanceof IFile) { return getSize(r); } break; } } catch (CoreException e) { log.debug(e.getLocalizedMessage()); } return result; } /** * @param r * @return * @throws CoreException */ private String getSize(IResource r) throws CoreException { return r.getPersistentProperty(IResourceConstants.BYTE_SIZE); } /** * @param r * @return * @throws CoreException */ private String getModified(IResource r) throws CoreException { String result = null; String ts = r.getPersistentProperty(IResourceConstants.MODIFIED_TIMESTAMP); if (ts != null) { Date modified = new Date(Long.parseLong(ts)); result = OriginalsTableLabelProvider.shortDate.format(modified); } return result; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse. jface.viewers.ILabelProviderListener) */ @Override public void addListener(ILabelProviderListener listener) { this.provider.addListener(listener); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ @Override public void dispose() { } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang .Object, java.lang.String) */ @Override public boolean isLabelProperty(Object element, String property) { return this.provider.isLabelProperty(element, property); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse * .jface.viewers.ILabelProviderListener) */ @Override public void removeListener(ILabelProviderListener listener) { this.provider.removeListener(listener); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ILabelDecorator#decorateImage(org.eclipse.swt .graphics.Image, java.lang.Object) */ @Override public Image decorateImage(Image image, Object element) { return decorator.decorateImage(image, element); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ILabelDecorator#decorateText(java.lang.String, java.lang.Object) */ @Override public String decorateText(String text, Object element) { return decorator.decorateText(text, element); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IDelayedLabelDecorator#prepareDecoration(java .lang.Object, java.lang.String) */ @Override public boolean prepareDecoration(Object element, String originalText) { return decorator.prepareDecoration(element, originalText); } }