blob: 5be643c51102585bc34b7071b4794145463f8266 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2009 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
* Pawel Piech (Wind River) - added support for a virtual tree model viewer (Bug 242489)
*******************************************************************************/
package org.eclipse.debug.internal.ui.viewers.model;
import org.eclipse.debug.internal.core.commands.Request;
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.TreePath;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.RGB;
/**
* @since 3.3
*/
class LabelUpdate extends Request implements ILabelUpdate {
private TreePath fElementPath;
private String[] fColumnIds;
private RGB[] fBackgrounds;
private RGB[] fForegrounds;
private ImageDescriptor[] fImageDescriptors;
private String[] fLabels;
private FontData[] fFontDatas;
private TreeModelLabelProvider fProvider;
private ITreeModelLabelProviderTarget fTreeViewer;
private int fNumColumns;
private IPresentationContext fContext;
private Object fViewerInput;
/**
* @param viewerInput input at the time the request was made
* @param elementPath element the label is for
* @param item item the label is for
* @param provider label provider to callback to
* @param columnIds column identifiers or <code>null</code>
* @param context presentation context
*/
public LabelUpdate(Object viewerInput, TreePath elementPath, TreeModelLabelProvider provider, ITreeModelLabelProviderTarget treeViewer, String[] columnIds, IPresentationContext context) {
fContext = context;
fViewerInput = viewerInput;
fElementPath = elementPath;
fProvider = provider;
fColumnIds = columnIds;
fNumColumns = 1;
if (columnIds != null) {
fNumColumns = columnIds.length;
}
fLabels = new String[fNumColumns];
fTreeViewer = treeViewer;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#getColumnIds()
*/
public String[] getColumnIds() {
return fColumnIds;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#getElement()
*/
public TreePath getElementPath() {
return fElementPath;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#setBackground(org.eclipse.swt.graphics.RGB, int)
*/
public void setBackground(RGB background, int columnIndex) {
if (background == null) {
return;
}
if (fBackgrounds == null) {
fBackgrounds = new RGB[fNumColumns];
}
fBackgrounds[columnIndex] = background;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#setFontData(org.eclipse.swt.graphics.FontData, int)
*/
public void setFontData(FontData fontData, int columnIndex) {
if (fontData == null) {
return;
}
if (fFontDatas == null) {
fFontDatas = new FontData[fNumColumns];
}
fFontDatas[columnIndex] = fontData;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#setForeground(org.eclipse.swt.graphics.RGB, int)
*/
public void setForeground(RGB foreground, int columnIndex) {
if (foreground == null) {
return;
}
if (fForegrounds == null) {
fForegrounds = new RGB[fNumColumns];
}
fForegrounds[columnIndex] = foreground;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#setImageDescriptor(org.eclipse.jface.resource.ImageDescriptor, int)
*/
public void setImageDescriptor(ImageDescriptor image, int columnIndex) {
if (image == null) {
return;
}
if (fImageDescriptors == null) {
fImageDescriptors = new ImageDescriptor[fNumColumns];
}
fImageDescriptors[columnIndex] = image;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate#setLabel(java.lang.String, int)
*/
public void setLabel(String text, int columnIndex) {
fLabels[columnIndex] = text;
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getPresentationContext()
*/
public IPresentationContext getPresentationContext() {
return fContext;
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IProgressMonitor#done()
*/
public void done() {
fProvider.complete(this);
}
/**
* Applies settings to viewer cell
*/
public void update() {
fTreeViewer.setElementData(fElementPath, fNumColumns, fLabels, fImageDescriptors, fFontDatas, fForegrounds, fBackgrounds);
fProvider.updateComplete(this);
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getElement()
*/
public Object getElement() {
return getElementPath().getLastSegment();
}
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("ILabelUpdate: "); //$NON-NLS-1$
buf.append(getElement());
return buf.toString();
}
/* (non-Javadoc)
* @see org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate#getViewerInput()
*/
public Object getViewerInput() {
return fViewerInput;
}
}