Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java46
1 files changed, 38 insertions, 8 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java
index 61e2a2ab7..bb0a946d7 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/model/viewers/LabelUpdate.java
@@ -14,9 +14,10 @@ import org.eclipse.debug.internal.ui.actions.context.AbstractRequestMonitor;
import org.eclipse.debug.internal.ui.model.ILabelUpdate;
import org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ViewerRow;
import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.TreeItem;
/**
* @since 3.3
@@ -32,17 +33,25 @@ class LabelUpdate extends AbstractRequestMonitor implements ILabelUpdate {
private FontData fFontData;
private TreeModelLabelProvider fProvider;
private int fColumnIndex;
+ private TreeItem fItem;
+
+ /**
+ * Label/Image cache keys
+ */
+ static String PREV_LABEL_KEY = "PREV_LABEL_KEY"; //$NON-NLS-1$
+ static String PREV_IAMGE_KEY = "PREV_IMAGE_KEY"; //$NON-NLS-1$
/**
* @param element element the label is for
* @param provider label provider to callback to
* @param columnId column identifier or <code>null</code>
*/
- public LabelUpdate(Object element, TreeModelLabelProvider provider, String columnId, int columnIndex) {
+ public LabelUpdate(Object element, TreeItem item, TreeModelLabelProvider provider, String columnId, int columnIndex) {
fElement = element;
fProvider = provider;
fColumnId = columnId;
fColumnIndex = columnIndex;
+ fItem = item;
}
/* (non-Javadoc)
@@ -111,12 +120,33 @@ class LabelUpdate extends AbstractRequestMonitor implements ILabelUpdate {
/**
* Applies settings to viewer cell
*/
- public void update(ViewerRow row) {
- row.setText(fColumnIndex, fLabel);
- row.setImage(fColumnIndex, fProvider.getImage(fImageDescriptor));
- row.setForeground(fColumnIndex, fProvider.getColor(fForeground));
- row.setBackground(fColumnIndex, fProvider.getColor(fBackground));
- row.setFont(fColumnIndex, fProvider.getFont(fFontData));
+ public void update() {
+ if (!fItem.isDisposed()) {
+ fItem.setText(fColumnIndex, fLabel);
+ setPrevious(PREV_LABEL_KEY, fLabel, fColumnIndex);
+ Image image = fProvider.getImage(fImageDescriptor);
+ fItem.setImage(fColumnIndex, image);
+ setPrevious(PREV_IAMGE_KEY, image, fColumnIndex);
+ fItem.setForeground(fColumnIndex, fProvider.getColor(fForeground));
+ fItem.setBackground(fColumnIndex, fProvider.getColor(fBackground));
+ fItem.setFont(fColumnIndex, fProvider.getFont(fFontData));
+
+ }
}
+ private void setPrevious(String key, Object current, int index) {
+ Object[] previous = (Object[]) fItem.getData(key);
+ if (previous == null) {
+ int columnCount = fItem.getParent().getColumnCount();
+ if (columnCount == 0) {
+ columnCount++;
+ }
+ previous = new Object[columnCount];
+ fItem.setData(key, previous);
+ }
+ if (index < previous.length) {
+ previous[index] = current;
+ }
+ }
+
}

Back to the top