blob: 4fb27b9f504ee68890496104a2d2c8bd39d258c5 [file] [log] [blame]
/***************************************************************************************************
* Copyright (c) 2006 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.ui.internal.navigator;
import org.eclipse.jface.viewers.ViewerLabel;
/**
* Provides a subclass of ViewerLabel that can be re-used for multiple viewer updates.
*
* @since 3.2
*
*/
public class ReusableViewerLabel extends ViewerLabel {
private ViewerLabel original = null;
/**
* Creates a ViewerLabel with null text and image.
*
*/
public ReusableViewerLabel() {
super(null, null);
}
/**
* Updates the Background, Foreground, and Font to the given ViewerLabel. The
* Text and Image are reset to <b>null</b>.
*
* @param theOriginal The ViewerLabel to represent.
*/
public void reset(ViewerLabel theOriginal) {
original = theOriginal;
setBackground(original.getBackground());
setFont(original.getFont());
setForeground(original.getForeground());
setImage(null);
setText(null);
}
/**
*
* @param theOriginal The ViewerLabel to fill with my values.
*/
public void fill(ViewerLabel theOriginal) {
theOriginal.setBackground(getBackground());
theOriginal.setFont(getFont());
theOriginal.setForeground(getForeground());
theOriginal.setImage(getImage());
theOriginal.setText(getText() != null ? getText() : ""); //$NON-NLS-1$
}
/**
*
* @return True if the ReusableViewerLabel has different text or image than the original
* ViewerLabel.
*/
public boolean hasChanged() {
boolean changed = false;
if(original != null) {
if(original.getText() == null ^ getText() != null)
changed |= getText() != null;
if(original.getText() != null && getImage() != null)
changed |= !getImage().equals(original.getImage());
}
return changed;
}
/**
* @return True if the text is non-null and non-zero in length.
*/
public boolean isValid() {
return getText() != null && getText().length() > 0 && getImage() != null;
}
}