/*
* LICENSE: This program is being made available under the LGPL 3.0 license.
* For more information on the license, please read the following:
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* For additional information on the Model behind Mismatches, please refer to
* the following publication(s):
* Thorsten Reitz (2010): A Mismatch Description Language for Conceptual Schema
* Mapping and Its Cartographic Representation, Geographic Information Science,
* http://www.springerlink.com/content/um2082120r51232u/
*/
package eu.xsdi.mdlui.views;
import java.util.Set;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import eu.xsdi.mdl.model.Consequence;
import eu.xsdi.mdl.model.Mismatch;
import eu.xsdi.mdl.model.MismatchCell;
/**
* Provides Content to a {@link TreeViewer} with {@link Mismatch} input objects.
*
* @author Thorsten Reitz
* @version $Id$
* @since 0.1.0
*/
public class MismatchTreeContentProvider implements ITreeContentProvider, IStructuredContentProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
@SuppressWarnings("unchecked")
@Override
public Object[] getChildren(Object parentElement) {
Object[] result;
if (parentElement instanceof Mismatch) {
Mismatch m = (Mismatch) parentElement;
result = new Object[2];
result[0] = m.getReason();
result[1] = m.getConsequences();
}
else if (parentElement instanceof Set) {
Set s = (Set) parentElement;
result = s.toArray();
}
else if (parentElement instanceof Consequence) {
result = new Object[0];
}
else {
result = new Object[0];
}
return result;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override
public Object getParent(Object element) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override
public boolean hasChildren(Object element) {
if (element instanceof Mismatch) {
return true;
}
else if (element instanceof Set) {
return true;
}
else if (element instanceof Consequence) {
return false;
}
else {
return false;
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
@Override
public Object[] getElements(Object inputElement) {
if (inputElement != null) {
if (inputElement instanceof MismatchCell) {
return ((MismatchCell) inputElement).getMismatches().toArray();
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override
public void dispose() {
// ignore.
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// ignore. Maybe FIXME later.
}
}