/******************************************************************************* * Copyright (c) 2003, 2010 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.wst.server.ui.internal.viewers; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Widget; import org.eclipse.swt.widgets.Display; /** * */ public class LockedTableViewer extends TableViewer { protected Color color; public LockedTableViewer(Composite parent) { super(parent); createColor(parent); } public LockedTableViewer(Composite parent, int style) { super(parent, style); createColor(parent); } public LockedTableViewer(Table table) { super(table); createColor(table); } protected void createColor(Control c) { if (Display.getDefault().getHighContrast()) color = new Color(c.getDisplay(), 0, 0, 0); else color = new Color(c.getDisplay(), 255, 255, 225); c.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { color.dispose(); } }); } public void doUpdateItem(Widget widget, Object element, boolean fullMap) { if (color == null) return; if (widget instanceof TableItem) { TableItem item = (TableItem) widget; if (getLabelProvider() instanceof ILockedLabelProvider) { ILockedLabelProvider provider = (ILockedLabelProvider) getLabelProvider(); if (provider.isLocked(element)) { item.setBackground(color); item.setImage(0, null); } else item.setBackground(null); } } super.doUpdateItem(widget, element, fullMap); } }