package at.medevit.elexis.impfplan.ui.dialogs; import java.util.Calendar; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.fieldassist.ContentProposalAdapter; import org.eclipse.jface.fieldassist.IContentProposal; import org.eclipse.jface.fieldassist.IContentProposalListener; import org.eclipse.jface.fieldassist.TextContentAdapter; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.wb.swt.ResourceManager; import at.medevit.elexis.impfplan.model.po.Vaccination; import at.medevit.elexis.impfplan.ui.VaccinationEffectCheckboxTreeViewer; import ch.elexis.core.data.events.ElexisEventDispatcher; import ch.elexis.core.ui.proposals.PersistentObjectContentProposal; import ch.elexis.core.ui.proposals.PersistentObjectProposalProvider; import ch.elexis.data.Mandant; import ch.elexis.data.Patient; import ch.rgw.tools.TimeTool; import org.eclipse.swt.widgets.DateTime; public class EditVaccinationDialog extends TitleAreaDialog { private Vaccination vacc; private Text txtAdministrator; private String administratorString; private Text txtLotNo; private DateTime dateTimeDOA; private VaccinationEffectCheckboxTreeViewer vect; public EditVaccinationDialog(Shell parentShell, Vaccination vacc){ super(parentShell); this.vacc = vacc; } @Override protected Control createDialogArea(Composite parent){ setTitle("Angaben zur Impfung ändern"); setTitleImage(ResourceManager.getPluginImage("at.medevit.elexis.impfplan.ui", "rsc/icons/vaccination_logo.png")); Patient sp = ElexisEventDispatcher.getSelectedPatient(); setMessage((sp!=null) ? sp.getLabel() : "missing patient name"); //$NON-NLS-1$ Composite area = (Composite) super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayout(new GridLayout(2, false)); container.setLayoutData(new GridData(GridData.FILL_BOTH)); Label lblAdministratingContact = new Label(container, SWT.NONE); lblAdministratingContact .setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblAdministratingContact.setText("Verabreicht von"); txtAdministrator = new Text(container, SWT.BORDER); administratorString = vacc.get(Vaccination.FLD_ADMINISTRATOR); txtAdministrator.setText(vacc.getAdministratorLabel()); txtAdministrator.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e){ administratorString = txtAdministrator.getText(); } }); txtAdministrator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); PersistentObjectProposalProvider<Mandant> mopp = new PersistentObjectProposalProvider<Mandant>(Mandant.class) { @Override public String getLabelForObject(Mandant a){ return a.getMandantLabel(); } }; ContentProposalAdapter mandatorProposalAdapter = new ContentProposalAdapter( txtAdministrator, new TextContentAdapter(), mopp, null, null); mandatorProposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE); mandatorProposalAdapter.addContentProposalListener(new IContentProposalListener() { @Override public void proposalAccepted(IContentProposal proposal){ PersistentObjectContentProposal<Mandant> prop = (PersistentObjectContentProposal<Mandant>) proposal; administratorString = prop.getPersistentObject().storeToString(); } }); Label lblLotNo = new Label(container, SWT.NONE); lblLotNo.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblLotNo.setText("Lot-Nr"); txtLotNo = new Text(container, SWT.BORDER); txtLotNo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); txtLotNo.setText(vacc.getLotNo()); Label lblVerabreichungsdatum = new Label(container, SWT.NONE); lblVerabreichungsdatum .setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblVerabreichungsdatum.setAlignment(SWT.RIGHT); lblVerabreichungsdatum.setText("Verabreichungsdatum"); dateTimeDOA = new DateTime(container, SWT.BORDER); TimeTool doa = vacc.getDateOfAdministration(); dateTimeDOA.setDate(doa.get(Calendar.YEAR), doa.get(Calendar.MONTH), doa.get(Calendar.DAY_OF_MONTH)); if(vacc.get(Vaccination.FLD_ARTIKEL_REF).length()==0) { // nachtragsimpfung mit formal unbekanntem artikel Label lblImpfungGegen = new Label(container, SWT.NONE); lblImpfungGegen.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1)); lblImpfungGegen.setAlignment(SWT.RIGHT); lblImpfungGegen.setText("Impfung gegen"); vect = new VaccinationEffectCheckboxTreeViewer(container, SWT.BORDER, vacc.get(Vaccination.FLD_VACC_AGAINST)); vect.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); } return area; } @Override protected void okPressed(){ vacc.setAdministratorString(administratorString); vacc.setLotNo(txtLotNo.getText()); Calendar instance = Calendar.getInstance(); instance.set(Calendar.DAY_OF_MONTH, dateTimeDOA.getDay()); instance.set(Calendar.MONTH, dateTimeDOA.getMonth()); instance.set(Calendar.YEAR, dateTimeDOA.getYear()); vacc.setDateOfAdministration(instance.getTime()); if(vect!=null) { vacc.setVaccAgainst(vect.getCheckedElementsAsCommaSeparatedString()); } super.okPressed(); } }