/*******************************************************************************
* Copyright (c) 2010, A. Kaufmann 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:
* A. Kaufmann - initial implementation
* P. Chaubert - adapted to Messwerte V2
* medshare GmbH - adapted to Messwerte V2.1 in February 2012
*
*******************************************************************************/
package com.hilotec.elexis.messwerte.v2.data.typen;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Widget;
import ch.elexis.core.ui.selectors.ActiveControl;
import ch.elexis.core.ui.selectors.BooleanField;
import ch.elexis.core.ui.selectors.TextField;
import com.hilotec.elexis.messwerte.v2.data.Messwert;
import com.hilotec.elexis.messwerte.v2.data.MesswertBase;
/**
* @author Antoine Kaufmann
*/
public class MesswertTypBool extends MesswertBase implements IMesswertTyp {
boolean defVal;
public MesswertTypBool(String n, String t, String u){
super(n, t, u);
defVal = false;
}
public String erstelleDarstellungswert(Messwert messwert){
return createDarstellungswert(messwert.getWert());
}
public String getDefault(Messwert messwert){
Boolean retVal = defVal;
if (formula != null) {
String sWert = evalateFormula(formula, messwert, Boolean.toString(retVal));
if (sWert != null)
retVal = Boolean.valueOf(sWert);
}
return Boolean.toString(retVal);
}
public void setDefault(String def){
defVal = Boolean.parseBoolean(def);
}
public Widget createWidget(Composite parent, Messwert messwert){
widget = new Button(parent, SWT.CHECK);
((Button) widget).setSelection(Boolean.parseBoolean(messwert.getWert()));
setShown(true);
return widget;
}
public ActiveControl createControl(Composite parent, Messwert messwert, boolean bEditable){
int flags = 0;
if (!bEditable) {
flags |= TextField.READONLY;
}
IMesswertTyp dft = messwert.getTyp();
String labelText = dft.getTitle();
BooleanField bf = new BooleanField(parent, flags, labelText);
if (messwert.getWert().equals("1")) { //$NON-NLS-1$
messwert.setWert("true"); //$NON-NLS-1$
} else if (messwert.getWert().equals("0")) { //$NON-NLS-1$
messwert.setWert("false"); //$NON-NLS-1$
}
bf.setText(Boolean.toString(Boolean.parseBoolean(messwert.getWert())));
return bf;
}
public String getDarstellungswert(String wert){
return createDarstellungswert(wert);
}
@Override
public void saveInput(Messwert messwert){
messwert.setWert(Boolean.toString(((Button) widget).getSelection()));
}
@Override
public String getActualValue(){
return (Boolean.toString(((Button) widget).getSelection()));
}
private String createDarstellungswert(String wert){
if (wert.equals("1")) { //$NON-NLS-1$
return Messages.MesswertTypBool_Yes;
}
if (wert.equals("0")) { //$NON-NLS-1$
return Messages.MesswertTypBool_No;
}
return (Boolean.parseBoolean(wert) ? Messages.MesswertTypBool_Yes
: Messages.MesswertTypBool_No);
}
}