///*******************************************************************************
// * Copyright (c) 2006, 2007 IBM Corporation and others.
// * 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:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.jface.viewers;
//
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.graphics.Color;
//import org.eclipse.swt.graphics.Rectangle;
//import org.eclipse.swt.widgets.Event;
//import org.eclipse.swt.widgets.Listener;
//
///**
// * OwnerDrawLabelProvider is an abstract implementation of a label provider that
// * handles custom draw.
// *
// * <p>
// * <b>This class is intended to be subclassed by implementors.</b>
// * </p>
// *
// * @since 1.0
// *
// */
//public abstract class OwnerDrawLabelProvider extends CellLabelProvider {
//
// /**
// * Set up the owner draw callbacks for the viewer.
// *
// * @param viewer
// * the viewer the owner draw is set up
// */
// public static void setUpOwnerDraw(final ColumnViewer viewer) {
// viewer.getControl().addListener(SWT.MeasureItem, new Listener() {
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
// */
// public void handleEvent(Event event) {
// CellLabelProvider provider = viewer
// .getViewerColumn(event.index).getLabelProvider();
// Object element = event.item.getData();
//
// if (provider instanceof OwnerDrawLabelProvider)
// ((OwnerDrawLabelProvider) provider).measure(event, element);
// }
// });
//
// viewer.getControl().addListener(SWT.PaintItem, new Listener() {
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
// */
// public void handleEvent(Event event) {
// CellLabelProvider provider = viewer
// .getViewerColumn(event.index).getLabelProvider();
// Object element = event.item.getData();
//
// if (provider instanceof OwnerDrawLabelProvider)
// ((OwnerDrawLabelProvider) provider).paint(event, element);
// }
// });
//
// viewer.getControl().addListener(SWT.EraseItem, new Listener() {
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
// */
// public void handleEvent(Event event) {
//
// CellLabelProvider provider = getLabelProvider(viewer, event);
// Object element = getElement(event);
//
// if (provider instanceof OwnerDrawLabelProvider)
// ((OwnerDrawLabelProvider) provider).erase(event, element);
//
// }
//
// /**
// * Return the item for the event
// *
// * @param event
// * @return Object
// */
// private Object getElement(Event event) {
// return event.item.getData();
// }
//
// /**
// * Return the label provider for the column.
// *
// * @param viewer
// * @param event
// * @return CellLabelProvider
// */
// private CellLabelProvider getLabelProvider(
// final ColumnViewer viewer, Event event) {
// return viewer.getViewerColumn(event.index).getLabelProvider();
// }
// });
// }
//
// /**
// * Handle the erase event. The default implementation colors the background
// * of selected areas with {@link SWT#COLOR_LIST_SELECTION} and foregrounds
// * with {@link SWT#COLOR_LIST_SELECTION_TEXT}
// *
// * @param event
// * the erase event
// * @param element
// * the model object
// * @see SWT#EraseItem
// * @see SWT#COLOR_LIST_SELECTION
// * @see SWT#COLOR_LIST_SELECTION_TEXT
// */
// protected void erase(Event event, Object element) {
//
// Rectangle bounds = event.getBounds();
// if ((event.detail & SWT.SELECTED) != 0) {
//
// Color oldForeground = event.gc.getForeground();
// Color oldBackground = event.gc.getBackground();
//
// event.gc.setBackground(event.item.getDisplay().getSystemColor(
// SWT.COLOR_LIST_SELECTION));
// event.gc.setForeground(event.item.getDisplay().getSystemColor(
// SWT.COLOR_LIST_SELECTION_TEXT));
// event.gc.fillRectangle(bounds);
// /* restore the old GC colors */
// event.gc.setForeground(oldForeground);
// event.gc.setBackground(oldBackground);
// /* ensure that default selection is not drawn */
// event.detail &= ~SWT.SELECTED;
//
// }
//
// }
//
// /**
// * Handle the paint event.
// *
// * @param event
// * the paint event
// * @param element
// * the model element
// * @see SWT#PaintItem
// */
// protected abstract void paint(Event event, Object element);
//
// /**
// * Handle the measure event.
// *
// * @param event
// * the measure event
// * @param element
// * the model element
// * @see SWT#MeasureItem
// */
// protected abstract void measure(Event event, Object element);
//
// /**
// * Create a new instance of the receiver based on a column viewer.
// *
// */
// public OwnerDrawLabelProvider() {
//
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.jface.viewers.ViewerLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
// */
// public void update(ViewerCell cell) {
// // Force a redraw
// Rectangle cellBounds = cell.getBounds();
// cell.getControl().redraw(cellBounds.x, cellBounds.y, cellBounds.width,
// cellBounds.height, true);
//
// }
//
//}