/*****************************************************************************
* Copyright (c) 2012 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
*****************************************************************************/
package org.eclipse.papyrus.infra.gmfdiag.dnd.preferences;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.papyrus.infra.gmfdiag.dnd.policy.DropStrategyManager;
import org.eclipse.papyrus.infra.gmfdiag.dnd.strategy.DropStrategy;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
/**
* A LabelProvider for DropStrategy
*
* @author Camille Letavernier
*/
public class DropStrategyLabelProvider extends ColumnLabelProvider {
@Override
public String getText(Object element) {
if(element instanceof DropStrategy) {
return ((DropStrategy)element).getLabel();
}
return super.getText(element);
}
@Override
public Image getImage(Object element) {
if(element instanceof DropStrategy) {
return ((DropStrategy)element).getImage();
}
return super.getImage(element);
}
@Override
public String getToolTipText(Object element) {
if(element instanceof DropStrategy) {
return ((DropStrategy)element).getDescription();
}
return null;
}
@Override
public void update(ViewerCell cell) {
Object element = cell.getElement();
if(element instanceof DropStrategy) {
DropStrategy strategy = (DropStrategy)element;
if(cell.getColumnIndex() == DropStrategyEditor.LABEL_COLUMN) {
cell.setImage(strategy.getImage());
int foreground;
if(DropStrategyManager.instance.isActive(strategy)) {
foreground = SWT.COLOR_BLACK;
} else {
foreground = SWT.COLOR_GRAY;
}
cell.setForeground(Display.getCurrent().getSystemColor(foreground));
cell.setText(strategy.getLabel());
}
}
}
}