/*******************************************************************************
* Copyright (c) 2010 Per Kr. Soreide.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Per Kr. Soreide - initial API and implementation
*******************************************************************************/
package bndtools.release.ui;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import aQute.bnd.differ.Baseline;
import aQute.bnd.differ.Baseline.Info;
import aQute.bnd.service.diff.Delta;
/**
* @see org.eclipse.jface.viewers.ITreeContentProvider
*/
public class InfoContentProvider implements ITreeContentProvider {
private boolean showAll = false;
@Override
public Object[] getChildren(Object parent) {
if (parent instanceof List) {
return ((List< ? >) parent).toArray();
}
if (parent instanceof Baseline) {
if (isShowAll()) {
return ((Baseline) parent).getPackageInfos().toArray();
}
Set<Info> infos = ((Baseline) parent).getPackageInfos();
List<Info> filteredDiffs = new ArrayList<Info>();
for (Info info : infos) {
if (info.packageDiff.getDelta() == Delta.IGNORED || (info.packageDiff.getDelta() == Delta.UNCHANGED && info.olderVersion.equals(info.suggestedVersion))) {
continue;
}
filteredDiffs.add(info);
}
return filteredDiffs.toArray(new Info[0]);
}
return new Object[0];
}
/*
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override
public Object getParent(Object item) {
return null;
}
/*
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override
public boolean hasChildren(Object parent) {
if (parent instanceof Baseline) {
return ((Baseline) parent).getPackageInfos().size() > 0;
}
return false;
}
/*
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
@Override
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
/*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override
public void dispose() {}
/*
* @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) {}
public boolean isShowAll() {
return showAll;
}
public void setShowAll(boolean showAll) {
this.showAll = showAll;
}
}