The difference between this method and IStructuredContentProvider.getElements is that getElements is called to obtain the tree viewer's root elements, whereas getChildren is used to obtain the children of a given parent element in the tree (including a root).
public class MerkmalsbaumContentProvider implements ITreeContentProvider {
private static final Logger LOGGER = Logger
.getLogger(MerkmalsbaumContentProvider.class);
public Object[] getChildren(Object parentElement) {
Helper.pruefeParameter(parentElement);
Object[] result = new Object[0];
if (parentElement instanceof IMerkmalsbaumKnoten) {
IMerkmalsbaumKnoten parent = (IMerkmalsbaumKnoten) parentElement;
result = parent.getKindknoten();
} else {
LOGGER.error(Meldung.FALSCHER_PARAMETERTYP
+ parentElement.getClass().toString());
}
return result;
}
public Object getParent(Object element) {
Helper.pruefeParameter(element);
Object result = null;
if (element instanceof IMerkmalsbaumKnoten) {
IMerkmalsbaumKnoten node = (IMerkmalsbaumKnoten) element;
result = node.getElternknoten();
} else {
LOGGER.error(Meldung.FALSCHER_PARAMETERTYP
+ element.getClass().toString());
}
return result;
}
public boolean hasChildren(Object element) {
return getChildren(element).length > 0;
}
public void dispose() {
// scheint nicht benötigt zu sein.
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// scheint nicht benötigt zu sein.
}
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
}
public class MerkmalsbaumLabelProvider
implements ILabelProvider
{
public Image getImage (Object element) {
Image result = null;
if (element instanceof IMerkmalsbaumKnoten) {
IMerkmalsbaumKnoten node = (IMerkmalsbaumKnoten) element;
if (node.isBlatt()) {
result = Helper.getImageRegistry().get(Helper.ICON_DATEI);
} else {
result = Helper.getImageRegistry().get(Helper.ICON_ORDNER);
}
}
return result;
}
public String getText (Object element) {
return element.toString();
}
public void addListener (ILabelProviderListener listener) {
// wird anscheinend nicht gebraucht
}
public void dispose () {
// wird anscheinend nicht gebraucht
}
public boolean isLabelProperty (Object element, String property) {
// wird anscheinend nicht gebraucht
return false;
}
public void removeListener (ILabelProviderListener listener) {
// wird anscheinend nicht gebraucht
}
}
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
public Object[] getElements(Object inputElement) {
// return getChildren(inputElement);
Object[] result = new Object[1];
result[0] = inputElement;
return result;
}
Wurzel
+--Wurzel
+--Wurzel
+--Wurzel
usw.