package at.medevit.elexis.impfplan.ui; import java.util.Arrays; import java.util.List; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.viewers.ICheckStateProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import at.medevit.elexis.impfplan.model.DiseaseDefinitionModel; import at.medevit.elexis.impfplan.model.DiseaseDefinitionModel.DiseaseDefinition; import ch.elexis.core.constants.StringConstants; public class VaccinationEffectCheckboxTreeViewer extends CheckboxTreeViewer implements ICheckStateProvider { private String initialCheckedElements = ""; public VaccinationEffectCheckboxTreeViewer(Composite parent, int style, String initialCheckedElements){ super(parent, style); this.initialCheckedElements = (initialCheckedElements != null) ? initialCheckedElements : StringConstants.EMPTY; GridData gd_tree = new GridData(SWT.FILL, SWT.TOP, true, false); gd_tree.heightHint = 200; getTree().setLayoutData(gd_tree); getTree().setHeaderVisible(false); getTree().setLinesVisible(true); TreeViewerColumn col = new TreeViewerColumn(this, SWT.NONE); col.getColumn().setWidth(225); setContentProvider(new DiseaseTreeContentProvider()); setLabelProvider(new DiseaseTreeLabelProvider()); setInput(DiseaseDefinitionModel.getDiseaseDefinitions()); setCheckStateProvider(this); } public String getCheckedElementsAsCommaSeparatedString(){ Object[] checkedElements = getCheckedElements(); List<Object> list = Arrays.asList(checkedElements); return list.stream().map(o -> (DiseaseDefinition) o).map(o -> o.getATCCode()) .reduce((u, t) -> u + StringConstants.COMMA + t).get(); } private class DiseaseTreeContentProvider implements ITreeContentProvider { @Override public void dispose(){} @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput){} @Override public Object[] getElements(Object inputElement){ return DiseaseDefinitionModel.getDiseaseDefinitions().toArray(); } @Override public Object[] getChildren(Object parentElement){ return null; } @Override public Object getParent(Object element){ return (DiseaseDefinition) element; } @Override public boolean hasChildren(Object element){ return false; } } private class DiseaseTreeLabelProvider implements ILabelProvider { @Override public void addListener(ILabelProviderListener listener){} @Override public void dispose(){} @Override public boolean isLabelProperty(Object element, String property){ return false; } @Override public void removeListener(ILabelProviderListener listener){} @Override public Image getImage(Object element){ return null; } @Override public String getText(Object element){ return ((DiseaseDefinition) element).getDiseaseLabel(); } } @Override public boolean isChecked(Object element){ DiseaseDefinition dd = (DiseaseDefinition) element; return initialCheckedElements.contains(dd.getATCCode()); } @Override public boolean isGrayed(Object element){ return false; } }