/*******************************************************************************
* Copyright (c) 2014 MEDEVIT.
* 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:
* T. Huster - initial API and implementation
*******************************************************************************/
package at.medevit.elexis.inbox.core.ui;
import java.util.List;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import at.medevit.elexis.inbox.core.ui.preferences.InboxPreferences;
import at.medevit.elexis.inbox.model.InboxElement;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.model.LabResultConstants;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.data.LabResult;
import ch.elexis.data.PersistentObject;
import ch.rgw.tools.TimeTool;
public class LabResultLabelProvider extends LabelProvider implements IColorProvider {
public enum LabelFields {
LAB_VALUE_SHORT("Kürzel"), LAB_VALUE_NAME("Name"), REF_RANGE("Referenzbereich"),
LAB_RESULT("Resultat"), ORIGIN("Herkunft"), DATE("Datum");
private final String text;
private LabelFields(final String text){
this.text = text;
}
@Override
public String toString(){
return text;
}
public static LabelFields getEnum(String value){
if (value.equals(LAB_VALUE_SHORT.toString())) {
return LAB_VALUE_SHORT;
} else if (value.equals(LAB_VALUE_NAME.toString())) {
return LAB_VALUE_NAME;
} else if (value.equals(LAB_RESULT.toString())) {
return LAB_RESULT;
} else if (value.equals(REF_RANGE.toString())) {
return REF_RANGE;
} else if (value.equals(ORIGIN.toString())) {
return ORIGIN;
} else if (value.equals(DATE.toString())) {
return DATE;
} else {
return null;
}
}
public String getValue(LabResult labResult){
switch (this) {
case LAB_VALUE_SHORT:
return labResult.getItem().getKuerzel();
case LAB_VALUE_NAME:
return labResult.getItem().getName();
case LAB_RESULT:
return labResult.getResult();
case REF_RANGE:
return labResult.getRefMale() + "/" + labResult.getRefFemale();
case ORIGIN:
return labResult.getOrigin().getLabel();
case DATE:
TimeTool observationTime = labResult.getObservationTime();
if (observationTime == null) {
return labResult.getDate();
}
return observationTime.toString(TimeTool.DATE_GER);
default:
return "";
}
}
}
@Override
public Image getImage(Object element){
return Images.IMG_VIEW_LABORATORY.getImage();
}
@Override
public String getText(Object element){
PersistentObject object =
CoreHub.poFactory.createFromString(((InboxElement) element)
.get(InboxElement.FLD_OBJECT));
if (object instanceof LabResult) {
LabResult labResult = (LabResult) object;
List<LabelFields> labelFields = InboxPreferences.getChoosenLabel();
StringBuilder sb = new StringBuilder();
for (LabelFields lblField : labelFields) {
sb.append(lblField.getValue(labResult));
sb.append(", ");
}
if (!sb.toString().isEmpty() && sb.substring(sb.length() - 2, sb.length()).equals(", ")) {
sb.replace(sb.length() - 2, sb.length(), "");
}
return sb.toString();
}
return ((InboxElement) element).getLabel();
}
@Override
public Color getForeground(Object element){
LabResult labResult = (LabResult) ((InboxElement) element).getObject();
if (labResult.isFlag(LabResultConstants.PATHOLOGIC)) {
return Display.getCurrent().getSystemColor(SWT.COLOR_RED);
} else {
return Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
}
}
@Override
public Color getBackground(Object element){
return Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
}
}