/******************************************************************************* * Copyright (c) 2008-2009, G. Weirich 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: * G. Weirich - initial implementation * *******************************************************************************/ package ch.elexis.core.ui.dialogs; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import ch.elexis.core.ui.util.LabeledInputField; import ch.elexis.core.ui.util.SWTHelper; import ch.elexis.data.Anschrift; import ch.elexis.data.Kontakt; import ch.elexis.data.Organisation; import ch.elexis.data.Person; import ch.rgw.tools.StringTool; /** * Edit Kontakt details. Can be called either with an existing Kontakt or with a String[2] that * define a contact (may all be null) * * @author gerry * */ public class KontaktDetailDialog extends TitleAreaDialog { private static final String LBL_MAIL = Messages.KontaktDetailDialog_labelMail; //$NON-NLS-1$ private static final String LBL_FAX = Messages.KontaktDetailDialog_labelFax; //$NON-NLS-1$ private static final String LBL_PHONE = Messages.KontaktDetailDialog_labelPhone; //$NON-NLS-1$ private static final String LBL_PLACE = Messages.KontaktDetailDialog_labelPlace; //$NON-NLS-1$ private static final String LBL_ZIP = Messages.KontaktDetailDialog_labelZip; //$NON-NLS-1$ private static final String LBL_STREET = Messages.KontaktDetailDialog_labelStreet; //$NON-NLS-1$ private static final String LBL_ZUSATZ = Messages.KontaktDetailDialog_labelZusatz; //$NON-NLS-1$ private static final String LBL_SEX = Messages.KontaktDetailDialog_labelSex; //$NON-NLS-1$ private static final String LBL_BIRTHDATE = Messages.KontaktDetailDialog_labelBirthdate; //$NON-NLS-1$ private static final String LBL_FIRSTNAME = Messages.KontaktDetailDialog_labelFirstname; //$NON-NLS-1$ private static final String LBL_NAME = Messages.KontaktDetailDialog_labelName; //$NON-NLS-1$ Kontakt k; LabeledInputField liName, liVorname, liGebDat, liSex, liStrasse, liPlz, liOrt, liTel, liFax, liMail; String[] vals; int type = 0; ButtonAdapter ba = new ButtonAdapter(); public KontaktDetailDialog(Shell parentShell, Kontakt kt){ super(parentShell); k = kt; } public KontaktDetailDialog(Shell parentShell, String[] v){ super(parentShell); vals = v; } @Override protected Control createDialogArea(Composite parent){ Composite ret = new Composite(parent, SWT.NONE); ret.setLayout(new GridLayout(3, true)); ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); if (k == null) { Composite cType = new Composite(ret, SWT.BORDER); cType.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false)); cType.setLayout(new FillLayout()); Button bPerson = new Button(cType, SWT.RADIO); bPerson.setText(Messages.KontaktDetailDialog_textPerson); //$NON-NLS-1$ Button bOrg = new Button(cType, SWT.RADIO); bOrg.setText(Messages.KontaktDetailDialog_textOrganization); //$NON-NLS-1$ bPerson.addSelectionListener(ba); bOrg.addSelectionListener(ba); liName = SWTHelper.createLabeledField(ret, LBL_NAME, LabeledInputField.Typ.TEXT); liVorname = SWTHelper.createLabeledField(ret, LBL_FIRSTNAME, LabeledInputField.Typ.TEXT); liGebDat = SWTHelper.createLabeledField(ret, LBL_BIRTHDATE, LabeledInputField.Typ.TEXT); liSex = SWTHelper.createLabeledField(ret, LBL_SEX, LabeledInputField.Typ.TEXT); if (vals != null) { /* * liGebDat.setText(vals[2]==null ? "" : vals[2]); liSex.setText(vals[3]==null ? "" * : vals[3]); liStrasse.setText(vals[4]); liPlz.setText(vals[5]); */ liName.setText(StringTool.unNull(vals[0])); liVorname.setText(StringTool.unNull(vals[1])); } } else { if (k.istPerson()) { Person p = Person.load(k.getId()); liName = SWTHelper.createLabeledField(ret, LBL_NAME, LabeledInputField.Typ.TEXT); liVorname = SWTHelper.createLabeledField(ret, LBL_FIRSTNAME, LabeledInputField.Typ.TEXT); liGebDat = SWTHelper.createLabeledField(ret, LBL_BIRTHDATE, LabeledInputField.Typ.TEXT); liSex = SWTHelper.createLabeledField(ret, LBL_SEX, LabeledInputField.Typ.TEXT); liName.setText(p.getName()); liVorname.setText(p.getVorname()); liGebDat.setText(p.getGeburtsdatum()); liSex.setText(p.getGeschlecht()); } else { liName = SWTHelper.createLabeledField(ret, LBL_NAME, LabeledInputField.Typ.TEXT); liVorname = SWTHelper.createLabeledField(ret, LBL_ZUSATZ, LabeledInputField.Typ.TEXT); liName.setText(k.get(Kontakt.FLD_NAME1)); liVorname.setText(k.get(Kontakt.FLD_NAME2)); } } liStrasse = SWTHelper.createLabeledField(ret, LBL_STREET, LabeledInputField.Typ.TEXT); liPlz = SWTHelper.createLabeledField(ret, LBL_ZIP, LabeledInputField.Typ.TEXT); liOrt = SWTHelper.createLabeledField(ret, LBL_PLACE, LabeledInputField.Typ.TEXT); liTel = SWTHelper.createLabeledField(ret, LBL_PHONE, LabeledInputField.Typ.TEXT); liFax = SWTHelper.createLabeledField(ret, LBL_FAX, LabeledInputField.Typ.TEXT); liMail = SWTHelper.createLabeledField(ret, LBL_MAIL, LabeledInputField.Typ.TEXT); if (k != null) { Anschrift an = k.getAnschrift(); liStrasse.setText(an.getStrasse()); liPlz.setText(an.getPlz()); liOrt.setText(an.getOrt()); liTel.setText(k.get(Kontakt.FLD_PHONE1)); liFax.setText(k.get(LBL_FAX)); liMail.setText(k.get(LBL_MAIL)); } return ret; } @Override public void create(){ super.create(); getShell().setText(Messages.KontaktDetailDialog_showDetails); //$NON-NLS-1$ if (k != null) { setTitle(k.getLabel()); } else { setTitle(Messages.KontaktDetailDialog_newContact); //$NON-NLS-1$ } setMessage(Messages.KontaktDetailDialog_enterData); //$NON-NLS-1$ } @Override protected void okPressed(){ if (k == null) { if (type == 0) { SWTHelper.showError(Messages.KontaktDetailDialog_typeOfContact, Messages.KontaktDetailDialog_enterType); //$NON-NLS-1$ //$NON-NLS-2$ return; } else if (type == 1) { k = new Person(liName.getText(), liVorname.getText(), liGebDat.getText(), liSex.getText()); } else { k = new Organisation(liName.getText(), liVorname.getText()); } } else { if (k.istPerson()) { Person p = Person.load(k.getId()); p.set(LBL_NAME, liName.getText()); p.set(LBL_FIRSTNAME, liVorname.getText()); p.set(LBL_BIRTHDATE, liGebDat.getText()); p.set(LBL_SEX, liSex.getText()); } else { Organisation o = Organisation.load(k.getId()); o.set(LBL_NAME, liName.getText()); o.set(LBL_ZUSATZ, liVorname.getText()); } } Anschrift an = k.getAnschrift(); an.setStrasse(liStrasse.getText()); an.setPlz(liPlz.getText()); an.setOrt(liOrt.getText()); k.setAnschrift(an); k.set(Kontakt.FLD_PHONE1, liTel.getText()); k.set(LBL_MAIL, liMail.getText()); super.okPressed(); } class ButtonAdapter extends SelectionAdapter { @Override public void widgetSelected(SelectionEvent e){ if (((Button) e.getSource()).getText().equals(Messages.KontaktDetailDialog_textPerson)) { //$NON-NLS-1$ type = 1; liGebDat.setEnabled(true); liSex.setEnabled(true); liVorname.setLabel(LBL_FIRSTNAME); } else { type = 2; liGebDat.setEnabled(false); liSex.setEnabled(false); liVorname.setLabel(LBL_ZUSATZ); } } } }