package io.sloeber.ui;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.swt.graphics.Image;
import io.sloeber.core.api.BoardDescriptor;
import io.sloeber.core.api.Sketch;
public class ExplorerLabelDecorator implements ILabelDecorator {
@Override
public void addListener(ILabelProviderListener listener) {
// nothing to do here
}
@Override
public void dispose() {
// nothing to do here
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
// nothing to do here
}
@Override
public Image decorateImage(Image image, Object element) {
return null;
}
@Override
public String decorateText(String text, Object element) {
IProject proj = (IProject) element;
if (proj.isOpen()) {
if (Sketch.isSketch(proj)) {
ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(proj);
ICConfigurationDescription configurationDescription = prjDesc.getActiveConfiguration();
BoardDescriptor boardDescriptor = BoardDescriptor.makeBoardDescriptor(configurationDescription);
String boardName = boardDescriptor.getBoardName();
String portName = boardDescriptor.getUploadPort();
if (portName.isEmpty()) {
portName = "no port"; //$NON-NLS-1$
}
if (boardName.isEmpty()) {
boardName = "no Board"; //$NON-NLS-1$
}
return text + ' ' + boardName + ' ' + ':' + portName;
}
}
return null;
}
}