/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.advisor.ui.core.status;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ImageHyperlink;
/**
*
*/
public class StatusRow {
private IStatusRowProvider rowProvider;
private Label image;
private Label label;
private ImageHyperlink link;
private Color dimFGColor;
private Color defFGColor;
/**
*
*/
public StatusRow( IStatusRowProvider rowProvider,
FormToolkit toolkit,
final Composite body,
final IHyperlinkListener listener ) {
super();
this.rowProvider = rowProvider;
this.image = toolkit.createLabel(body, null);
this.image.setImage(rowProvider.getImage(null));
this.label = toolkit.createLabel(body, rowProvider.getText(null), SWT.NONE);
this.link = toolkit.createImageHyperlink(body, SWT.WRAP);
this.link.setImage(rowProvider.getLinkImage(null));
this.link.addHyperlinkListener(listener);
this.link.setData(rowProvider.getId());
this.dimFGColor = toolkit.getColors().getColor(IFormColors.TB_TOGGLE_HOVER);
this.defFGColor = toolkit.getColors().getColor(IFormColors.TB_FG);
}
public void update( IStatus status ) {
if( isNotDisposed() ) {
this.image.setImage(rowProvider.getImage(status));
this.image.setToolTipText(rowProvider.getImageTooltip(status));
this.label.setText(rowProvider.getText(status));
this.label.setToolTipText(rowProvider.getTextTooltip(status));
this.link.setImage(rowProvider.getLinkImage(status));
this.link.setToolTipText(rowProvider.getLinkTooltip(status));
redraw();
}
}
public void dim() {
if( isNotDisposed() ) {
this.label.setForeground(dimFGColor);
}
}
public void brighten() {
if( isNotDisposed() ) {
this.label.setForeground(defFGColor);
}
}
public void redraw() {
if( isNotDisposed() ) {
this.image.redraw();
this.label.redraw();
this.link.redraw();
}
}
private boolean isNotDisposed() {
return !this.image.isDisposed() && ! this.label.isDisposed() && !this.link.isDisposed();
}
}