/******************************************************************************* * Copyright (c) 2006-2010, 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.icpc.views; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; 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 ch.elexis.core.ui.UiDesk; import ch.elexis.core.data.events.ElexisEventDispatcher; import ch.elexis.data.Patient; import ch.elexis.icpc.Episode; import ch.elexis.icpc.Messages; import ch.elexis.core.ui.icons.Images; import ch.elexis.core.ui.util.SWTHelper; public class EditEpisodeDialog extends TitleAreaDialog { private static final int ACTIVE_INDEX = 0; private static final int INACTIVE_INDEX = 1; private Episode episode; private Text tStartDate; private Text tTitle; private Text tNumber; private Combo cStatus; /** * Create a new dialog for editing episodes. Passing <code>null</code> as episode creates a new * episode. * * @param parentShell * the parent shell * @param episode * the episode to edit, or null if a new episode should be created */ public EditEpisodeDialog(Shell parentShell, Episode episode){ super(parentShell); this.episode = episode; } @Override protected Control createDialogArea(Composite parent){ Composite ret = new Composite(parent, SWT.NONE); ret.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true)); ret.setLayout(new GridLayout(2, false)); new Label(ret, SWT.NONE).setText(Messages.StartDate); tStartDate = new Text(ret, SWT.NONE); tStartDate.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); new Label(ret, SWT.NONE).setText(Messages.Title); tTitle = new Text(ret, SWT.NONE); tTitle.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); new Label(ret, SWT.NONE).setText(Messages.Number); tNumber = new Text(ret, SWT.NONE); tNumber.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); new Label(ret, SWT.NONE).setText(Messages.Status); cStatus = new Combo(ret, SWT.SINGLE); cStatus.add(Messages.Active); // ACTIVE_INDEX cStatus.add(Messages.Inactive); // INACTIVE_INDEX initialize(); return ret; } /** * Set initial values of controls */ private void initialize(){ if (episode == null) { // new episode cStatus.select(ACTIVE_INDEX); } else { // existing episode String startDate = episode.get("StartDate"); String title = episode.get("Title"); String number = episode.get("Number"); int status = episode.getStatus(); tStartDate.setText(startDate); tTitle.setText(title); tNumber.setText(number); if (status == Episode.ACTIVE) { cStatus.select(ACTIVE_INDEX); } else { cStatus.select(INACTIVE_INDEX); } } } @Override public void create(){ super.create(); getShell().setText(Messages.EpisodeEditDialog_Title); if (episode == null) { setTitle(Messages.EpisodeEditDialog_Create); } else { setTitle(Messages.EpisodeEditDialog_Edit); } setMessage(Messages.EpisodeEditDialog_EnterData); setTitleImage(Images.IMG_LOGO.getImage()); } @Override protected void okPressed(){ String startDate = tStartDate.getText(); String title = tTitle.getText(); String number = tNumber.getText(); int status; if (cStatus.getSelectionIndex() == ACTIVE_INDEX) { status = Episode.ACTIVE; } else { status = Episode.INACTIVE; } if (episode == null) { // create new episode Patient actPatient = ElexisEventDispatcher.getSelectedPatient(); if (actPatient != null) { episode = new Episode(actPatient, title); episode.set(new String[] { "StartDate", "Number" }, new String[] { startDate, number }); episode.setStatus(status); ElexisEventDispatcher.update(episode); } } else { // modify existing episode episode.set(new String[] { "Title", "StartDate", "Number" }, new String[] { title, startDate, number }); episode.setStatus(status); ElexisEventDispatcher.update(episode); } super.okPressed(); } }