ch.elexis.impfplan.view.EditVaccinationDialog.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.impfplan.view.EditVaccinationDialog.java

Source

/*******************************************************************************
 * Copyright (c) 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.impfplan.view;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.CheckboxTreeViewer;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
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.Shell;
import org.eclipse.swt.widgets.Tree;

import ch.elexis.core.ui.selectors.DisplayPanel;
import ch.elexis.core.ui.selectors.FieldDescriptor;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.impfplan.model.DiseaseDefinitionModel;
import ch.elexis.impfplan.model.DiseaseDefinitionModel.DiseaseDefinition;
import ch.elexis.impfplan.model.VaccinationType;

@SuppressWarnings("unchecked")
public class EditVaccinationDialog extends TitleAreaDialog {
    CheckboxTreeViewer treeViewer;
    VaccinationType vt;

    FieldDescriptor<VaccinationType>[] fields = new FieldDescriptor[] {
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_nameOfVaccination,
                    VaccinationType.NAME, FieldDescriptor.Typ.STRING, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_vaccinationSubstance,
                    VaccinationType.PRODUCT, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_ageFromTo,
                    VaccinationType.RECOMMENDED_AGE, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_distance1_2,
                    VaccinationType.DELAY1TO2, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_distance2_3,
                    VaccinationType.DELAY2TO3, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_distance3_4,
                    VaccinationType.DELAY3TO4, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_distanceRappel,
                    VaccinationType.DELAY_REP, null),
            new FieldDescriptor<VaccinationType>(Messages.EditVaccinationDialog_remarks, VaccinationType.REMARKS,
                    null), };

    public EditVaccinationDialog(Shell shell, VaccinationType vacc) {
        super(shell);
        vt = vacc;

    }

    @Override
    protected Control createDialogArea(Composite parent) {
        DisplayPanel panel = new DisplayPanel(parent, fields, 2, 2, new IAction[0]);
        panel.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        panel.setAutosave(true);
        panel.setObject(vt);

        Composite treeComposite = new Composite(parent, SWT.NONE);
        GridLayout gridLayout = new GridLayout(1, false);
        gridLayout.marginLeft = 5;
        treeComposite.setLayout(gridLayout);
        treeComposite.setLayoutData(SWTHelper.getFillGridData(1, true, 1, true));

        treeViewer = new CheckboxTreeViewer(treeComposite, SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL);
        Tree tree = treeViewer.getTree();
        tree.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true));
        tree.setHeaderVisible(true);
        tree.setLinesVisible(true);

        TreeViewerColumn col = new TreeViewerColumn(treeViewer, SWT.NONE);
        col.getColumn().setWidth(225);
        col.getColumn().setText("Impfung gegen Krankheit(en)");

        treeViewer.setContentProvider(new DiseaseTreeContentProvider());
        treeViewer.setLabelProvider(new DiseaseTreeLabelProvider());
        treeViewer.setInput(DiseaseDefinitionModel.getDiseaseDefinitions());
        treeViewer.setCheckedElements(loadSelected().toArray());

        return panel;
    }

    private List<DiseaseDefinition> loadSelected() {
        List<DiseaseDefinition> diseaseDefinitions = DiseaseDefinitionModel.getDiseaseDefinitions();
        List<DiseaseDefinition> selected = new ArrayList<DiseaseDefinition>();

        for (String code : vt.getVaccAgainstList()) {
            for (DiseaseDefinition dd : diseaseDefinitions) {
                if (dd.getATCCode().equals(code)) {
                    selected.add(dd);
                }
            }
        }
        return selected;
    }

    @Override
    public void create() {
        super.create();
        setTitle(Messages.EditVaccinationDialog_enterVaccination);
        getShell().setText(Messages.EditVaccinationDialog_defineVaccination);
        getShell().setSize(800, 600);
        SWTHelper.center(getShell());
    }

    @Override
    protected void okPressed() {
        Object[] checkedElements = treeViewer.getCheckedElements();
        StringBuilder sb = new StringBuilder();

        for (Object element : checkedElements) {
            DiseaseDefinition disease = (DiseaseDefinition) element;
            sb.append(disease.getATCCode());
            sb.append(",");
        }
        vt.setVaccAgainst(sb.toString());

        super.okPressed();
    }

    private class DiseaseTreeContentProvider implements ITreeContentProvider {

        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return DiseaseDefinitionModel.getDiseaseDefinitions().toArray();
        }

        @Override
        public Object[] getChildren(Object parentElement) {
            return null;
        }

        @Override
        public Object getParent(Object element) {
            return (DiseaseDefinition) element;
        }

        @Override
        public boolean hasChildren(Object element) {
            return false;
        }
    }

    private class DiseaseTreeLabelProvider implements ILabelProvider {

        @Override
        public void addListener(ILabelProviderListener listener) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        @Override
        public void removeListener(ILabelProviderListener listener) {
        }

        @Override
        public Image getImage(Object element) {
            return null;
        }

        @Override
        public String getText(Object element) {
            return ((DiseaseDefinition) element).getDiseaseLabel();
        }

    }
}