package org.bundlemaker.core.ui.editor.dsm;
import org.bundlemaker.core.analysis.IBundleMakerArtifact;
import org.bundlemaker.core.analysis.IModuleArtifact;
import org.eclipse.jface.viewers.LabelProvider;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class DefaultArtifactLabelProvider extends LabelProvider {
/** - */
private LabelPresentationMode _labelPresentationMode = LabelPresentationMode.qualifiedName;
/**
* <p>
* </p>
*
* @return
*/
public LabelPresentationMode getLabelPresentationMode() {
return _labelPresentationMode;
}
/**
* <p>
* </p>
*
* @param labelPresentationMode
*/
public void setLabelPresentationMode(LabelPresentationMode labelPresentationMode) {
if (labelPresentationMode != _labelPresentationMode) {
_labelPresentationMode = labelPresentationMode;
}
}
/**
* {@inheritDoc}
*/
@Override
public String getText(Object element) {
IBundleMakerArtifact artifact = (IBundleMakerArtifact) element;
if (getLabelPresentationMode() == LabelPresentationMode.simpleName) {
if (artifact instanceof IModuleArtifact) {
IModuleArtifact moduleArtifact = (IModuleArtifact) artifact;
return moduleArtifact.getModuleName();
}
return artifact.getName();
}
String label = artifact.getQualifiedName();
if (getLabelPresentationMode() == LabelPresentationMode.qualifiedName) {
return label;
}
int v = label.indexOf("_");
if (v > 0) {
label = label.substring(0, v);
}
boolean lastPart = true;
String shortendLabel = "";
label = "." + label;
char previousChar = label.charAt(label.length() - 1);
for (int i = label.length() - 1; i >= 0; i--) {
char c = label.charAt(i);
if (c == '.' || c == '/') {
if (!lastPart) {
shortendLabel = previousChar + shortendLabel;
}
if (i > 0) {
shortendLabel = c + shortendLabel;
}
lastPart = false;
} else {
if (lastPart) {
shortendLabel = c + shortendLabel;
}
}
previousChar = c;
}
return shortendLabel;
}
}