blob: fea0c9c1f347f2254e8a71c5f4ff0ce22237b583 [file] [log] [blame]
package org.eclipse.emf.refactor.smells.runtime.ui;
import java.util.LinkedList;
import org.eclipse.emf.refactor.smells.runtime.core.EObjectGroup;
import org.eclipse.emf.refactor.smells.runtime.core.ModelSmellResult;
import org.eclipse.emf.refactor.smells.runtime.core.ResultModel;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class ResultModelTreeViewerContentProvider implements
ITreeContentProvider {
private static Object[] EMPTY_ARRAY = new Object[0];
@Override
public void dispose() { }
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { }
@Override
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
@SuppressWarnings("unchecked")
@Override
public Object[] getChildren(Object parentElement) {
if(parentElement instanceof LinkedList<?>){
return ((LinkedList<ResultModel>) parentElement).toArray();
}
if(parentElement instanceof ResultModel)
return sortModelSmellResultArray(((ResultModel)parentElement).getModelSmellResults().toArray());
if(parentElement instanceof ModelSmellResult)
return ((ModelSmellResult)parentElement).getEObjectGroups().toArray();
if(parentElement instanceof EObjectGroup)
return ((EObjectGroup)parentElement).getEObjects().toArray();
else
return EMPTY_ARRAY;
}
@Override
public Object getParent(Object element) {
return null;
}
@Override
public boolean hasChildren(Object element) {
return getChildren(element).length > 0;
}
private Object[] sortModelSmellResultArray(Object[] resultArray){
Object[] sortedResults = resultArray;
for(int i = 0; i < sortedResults.length; i++){
for(int j = 0; j < sortedResults.length; j++){
if(((ModelSmellResult) sortedResults[i]).getEObjectGroups().size() > ((ModelSmellResult) sortedResults[j]).getEObjectGroups().size()){
ModelSmellResult temp = (ModelSmellResult) sortedResults[i];
sortedResults[i] = sortedResults[j];
sortedResults[j] = temp;
}
}
}
return sortedResults;
}
}