/*******************************************************************************
* Copyright (c) 2006-2010, G. Weirich and Elexis
* 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:
* G. Weirich - initial implementation
*
*******************************************************************************/
package ch.elexis.core.ui.util.viewers;
import java.util.HashMap;
import java.util.List;
import org.eclipse.jface.viewers.Viewer;
import ch.elexis.core.ui.util.Messages;
import ch.elexis.core.ui.util.viewers.ViewerConfigurer.ICommonViewerContentProvider;
import ch.elexis.data.PersistentObject;
import ch.elexis.data.Query;
/**
* Default-Implementation des ContentProviders. Zeigt eine Liste der in der Datenbank vorhandenen
* Elemente einer bestimmten Klasse an.
*
* @author Gerry
*
*/
public class DefaultContentProvider implements ICommonViewerContentProvider {
protected Class source;
protected CommonViewer cv;
protected String[] order = null;
protected boolean reverse = false;
public DefaultContentProvider(CommonViewer c, Class clazz){
source = clazz;
cv = c;
}
public DefaultContentProvider(CommonViewer c, Class clazz, String[] o, boolean rev){
source = clazz;
cv = c;
order = o;
reverse = rev;
}
public void startListening(){
ViewerConfigurer.ControlFieldProvider cfp = cv.getConfigurer().getControlFieldProvider();
if (cfp != null) {
cfp.addChangeListener(this);
}
}
public void stopListening(){
ViewerConfigurer.ControlFieldProvider cfp = cv.getConfigurer().getControlFieldProvider();
if (cfp != null) {
cfp.removeChangeListener(this);
}
}
@SuppressWarnings("unchecked")//$NON-NLS-1$
public Object[] getElements(Object inputElement){
Query qbe = new Query(source);
if (order != null) {
qbe.orderBy(reverse, order);
}
ViewerConfigurer.ControlFieldProvider cfp = cv.getConfigurer().getControlFieldProvider();
if (cfp != null) {
cfp.setQuery(qbe);
}
List<PersistentObject> list = qbe.execute();
if (list == null) {
return new String[] {
Messages.NoDataAvailable
}; //$NON-NLS-1$
} else {
return list.toArray();
}
}
public void dispose(){
stopListening();
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput){
}
public void changed(HashMap<String, String> values){
cv.notify(CommonViewer.Message.update);
if (cv.getConfigurer().getControlFieldProvider().isEmpty()) {
cv.notify(CommonViewer.Message.empty);
} else {
cv.notify(CommonViewer.Message.notempty);
}
}
public void reorder(String field){
cv.notify(CommonViewer.Message.update);
}
public void selected(){
// nothing to do
}
@Override
public void init(){
// TODO Auto-generated method stub
}
}