package com.example.e4.renderer.swt;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.e4.ui.model.application.ui.MUILabel;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer;
import org.eclipse.swt.custom.CTabItem;
public class MyStackRenderer extends StackRenderer {
protected void updateTab(CTabItem cti, MPart part, String attName,
Object newValue) {
if (UIEvents.UILabel.LABEL.equals(attName)) {
String newName = (String) newValue;
cti.setText(getLabel(part, newName));
} else if (UIEvents.UILabel.ICONURI.equals(attName)) {
cti.setImage(getImage(part));
} else if (UIEvents.UILabel.TOOLTIP.equals(attName)) {
String newTTip = (String) newValue;
cti.setToolTipText(newTTip);
} else if (UIEvents.Dirtyable.DIRTY.equals(attName)) {
Boolean dirtyState = (Boolean) newValue;
String text = cti.getText();
boolean hasAsterisk = text.length() > 0 && text.charAt(0) == '!';
if (dirtyState.booleanValue()) {
if (!hasAsterisk) {
cti.setText("* Demo *" + text);
}
} else if (hasAsterisk) {
cti.setText(text.substring(1));
}
}
}
private String getLabel(MUILabel itemPart, String newName) {
if (newName == null) {
newName = ""; //$NON-NLS-1$
}
if (itemPart instanceof MDirtyable && ((MDirtyable) itemPart).isDirty()) {
newName = '*' + newName;
}
return newName;
}
}