package ch.elexis.core.ui.dialogs;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import ch.elexis.core.ui.views.controls.ArticleDefaultSignatureComposite;
import ch.elexis.data.Artikel;
import ch.elexis.data.Prescription;
public class ArticleDefaultSignatureTitleAreaDialog extends TitleAreaDialog {
private Artikel article;
private ArticleDefaultSignatureComposite adsc;
private Prescription prescription;
/**
* Create the dialog.
*
* @param parentShell
*/
public ArticleDefaultSignatureTitleAreaDialog(Shell parentShell, Artikel article){
super(parentShell);
this.article = article;
}
/**
* @wbp.parser.constructor
*/
public ArticleDefaultSignatureTitleAreaDialog(Shell parentShell, Prescription pr){
super(parentShell);
this.prescription = pr;
this.article = pr.getArtikel();
}
/**
* Create contents of the dialog.
*
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent){
setMessage(
"Für diesen ATC Code oder diesen Artikel folgende Standard-Signatur hinterlegen");
setTitle("Standard-Signatur hinterlegen");
Composite area = (Composite) super.createDialogArea(parent);
adsc = new ArticleDefaultSignatureComposite(area, SWT.None);
adsc.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
adsc.setToolbarVisible(false);
adsc.initDataBindings(null);
adsc.setArticleToBind(article, false);
if(prescription!=null) {
// set initial values from prescription
List<Float> doseAsFloats = Prescription.getDoseAsFloats(prescription.getDosis());
for (int i = 0; i < doseAsFloats.size(); i++) {
String val = trimTrailingZeros(Float.toString(doseAsFloats.get(i)));
switch (i) {
case 0:
adsc.setSignatureMorning(val);
break;
case 1:
adsc.setSignatureNoon(val);
break;
case 2:
adsc.setSignatureEvening(val);
break;
case 3:
adsc.setSignatureNight(val);
break;
default:
break;
}
}
adsc.setSignatureComment(prescription.getBemerkung());
}
return area;
}
/**
* Create contents of the button bar.
*
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent){
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
@Override
protected void okPressed(){
adsc.createPersistent();
adsc.updateModelNonDatabinding();
adsc.safeToDefault();
super.okPressed();
}
private String trimTrailingZeros(String number) {
if(!number.contains(".")) {
return number;
}
return number.replaceAll("\\.?0*$", "");
}
}