/** * 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.arrange; import gov.loc.mets.DivType; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelDecorator; 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.views.LabelImageFactory; public class ArrangementTableLabelProvider implements ITableLabelProvider { @SuppressWarnings("unused") private static final Logger log = LoggerFactory.getLogger(ArrangementTableLabelProvider.class); public static final String[] headers = { "Name", "Status" }; public static final int[] bounds = { 400, 80 }; public static final int COL_NAME = 0; public static final int COL_STATUS = 1; private DecoratingLabelProvider provider = (DecoratingLabelProvider) WorkbenchLabelProvider .getDecoratingWorkbenchLabelProvider(); private ILabelDecorator decorator = provider.getLabelDecorator(); /* * (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 (COL_NAME == columnIndex) { // TODO add adapters from DivType to corresponding IResources if (element instanceof DivType) { DivType d = (DivType) element; Object adapted = Platform.getAdapterManager().getAdapter(d, IResource.class); if (adapted != null) { IResource r = (IResource) adapted; result = provider.getImage(r); } } else if (element instanceof IProject) { return null; } if (result == null) { result = LabelImageFactory.getImageForObject(element); } if (decorator != null) { if (decorator instanceof LabelDecorator) { LabelDecorator ld2 = (LabelDecorator) decorator; Image decorated = ld2.decorateImage(result, element, provider.getDecorationContext()); if (decorated != null) { return decorated; } } else { Image decorated = decorator.decorateImage(result, element); if (decorated != null) { return decorated; } } } } return result; } @Override public String getColumnText(Object element, int columnIndex) { if (element instanceof IProject) { IProject p = (IProject) element; switch (columnIndex) { case (COL_NAME): return provider.getText(element); // return p.getName(); case (COL_STATUS): if (p.isOpen()) { return "open"; } else { return "closed"; } } } // it is a DivType DivType d = (DivType) element; switch (columnIndex) { case (COL_NAME): // return provider.getText(element); return d.getLabel(); default: return "n/a"; } } @Override public void addListener(ILabelProviderListener listener) { this.provider.addListener(listener); } @Override public void dispose() { } @Override public boolean isLabelProperty(Object element, String property) { return this.provider.isLabelProperty(element, property); } @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) { // log.debug("decorating Image for Div"); // 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); // } }