package ch.elexis.core.findings.ui.dialogs;
import java.util.Optional;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
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.findings.ICondition;
import ch.elexis.core.findings.ICondition.ConditionCategory;
import ch.elexis.core.findings.ui.composites.ConditionComposite;
public class ConditionEditDialog extends TitleAreaDialog {
private ConditionComposite conditionComposite;
private Optional<ICondition> condition = Optional.empty();
private ConditionCategory category;
public ConditionEditDialog(ConditionCategory category, Shell parentShell){
super(parentShell);
this.category = category;
}
public ConditionEditDialog(ICondition condition, Shell parentShell){
super(parentShell);
this.condition = Optional.of(condition);
this.category = condition.getCategory();
}
@Override
public void create(){
super.create();
setTitle(category.getLocalized() + " Daten "
+ (condition.isPresent() ? "editieren" : "anlegen") + ".");
}
@Override
protected Control createDialogArea(Composite parent){
Composite ret = new Composite(parent, SWT.NONE);
ret.setLayoutData(new GridData(GridData.FILL_BOTH));
ret.setLayout(new FillLayout());
conditionComposite = new ConditionComposite(category, ret, SWT.NONE);
condition.ifPresent(c -> conditionComposite.setCondition(c));
return ret;
}
@Override
protected void okPressed(){
conditionComposite.udpateModel();
condition = conditionComposite.getCondition();
super.okPressed();
}
public Optional<ICondition> getCondition(){
return condition;
}
}