./codecover/src/org/codecover/eclipse/views/RecViewViewContentProvider.java

package org.codecover.eclipse.views;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.codecover.eclipse.utils.recommendationgenerator.RecommendationGenerator;
import org.codecover.eclipse.utils.recommendationgenerator.UncoveredBranch;
import org.codecover.model.exceptions.FileLoadException;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.jface.viewers.ViewerFilter;

class RecViewViewContentProvider implements IStructuredContentProvider {
	/**
	 * 
	 */
	private RecommendationsView recommendationsView;

	
	private List viewCache = new ArrayList();


	private TableViewer viewer;


	private RecommendationGenerator recommendationGenerator;
	
	RecViewViewContentProvider(RecommendationsView recommendationsView, 
			TableViewer viewer, RecommendationGenerator generator) {
		this.recommendationsView = recommendationsView;
		this.viewer = viewer;
		this.recommendationGenerator = generator;
		
		init();
	}
	
	public void init() {
		viewCache = this.recommendationGenerator.getUnsortedList();
		viewer.refresh();
		viewer.setComparator(new ViewerComparator() {
			
		});
	}

	public void inputChanged(Viewer v, Object oldInput, Object newInput) {
	}

	public void dispose() {
	}

	public Object[] getElements(Object parent) {
		if (viewCache == null) {
			viewCache = new ArrayList();
		}
		return viewCache.toArray();
	}

	public void sort() {
		this.recommendationGenerator.sort();
		this.viewCache = this.recommendationGenerator.getSortedList();
		if (this.viewCache == null) {
			this.viewCache = new ArrayList();
		}
		viewer.refresh();
	}

	public void refreshViewWithoutInvoking() {
		this.recommendationGenerator.weightChanged();
		this.viewCache = this.recommendationGenerator.getSortedList();
		if (this.viewCache == null) {
			this.viewCache = new ArrayList();
		}
		viewer.refresh();
	}
}