ch.elexis.core.ui.preferences.ReminderPrefences.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.core.ui.preferences.ReminderPrefences.java

Source

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

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
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.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import ch.elexis.core.constants.Preferences;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.model.issue.ProcessStatus;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.core.ui.preferences.inputs.DecoratedStringChooser;
import ch.elexis.core.ui.util.DecoratedString;
import ch.elexis.data.Reminder;
import ch.rgw.io.Settings;

public class ReminderPrefences extends PreferencePage implements IWorkbenchPreferencePage {
    Settings cfg;
    DecoratedString[] strings;
    private Button showRemindersOnPatientSelectionEventBtn;
    private ListViewer lViewerChoosen, lViewerAvailable;
    private String[] choosenFields;
    private String[] availableFields;
    private Label lblInfo;
    private String prefixPrevLabel = "Label Vorschau";

    public ReminderPrefences() {
        super(Messages.ReminderPrefences_Reminders);
        cfg = CoreHub.userCfg.getBranch(Preferences.USR_REMINDERCOLORS, true);
        strings = new DecoratedString[4];
        strings[0] = new DecoratedString(ProcessStatus.OPEN.getLocaleText());
        strings[1] = new DecoratedString(ProcessStatus.IN_PROGRESS.getLocaleText());
        strings[2] = new DecoratedString(ProcessStatus.DUE.getLocaleText());
        strings[3] = new DecoratedString(ProcessStatus.OVERDUE.getLocaleText());

        choosenFields = CoreHub.userCfg
                .get(Preferences.USR_REMINDER_PAT_LABEL_CHOOSEN, Reminder.LabelFields.LASTNAME.toString())
                .split(",");
        if (choosenFields.length == 3) {
            availableFields = new String[] {};
        } else {
            String defValue = Reminder.LabelFields.PAT_ID.toString() + ","
                    + Reminder.LabelFields.FIRSTNAME.toString();
            availableFields = CoreHub.userCfg.get(Preferences.USR_REMINDER_PAT_LABEL_AVAILABLE, defValue)
                    .split(",");
        }

    }

    @Override
    protected Control createContents(Composite parent) {
        Composite ret = new Composite(parent, SWT.NONE);
        ret.setLayout(new GridLayout(3, true));
        new Label(ret, SWT.NONE).setText(Messages.ReminderPrefences_SetColors);
        DecoratedStringChooser chooser = new DecoratedStringChooser(ret, cfg, strings);
        chooser.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));

        showRemindersOnPatientSelectionEventBtn = new Button(ret, SWT.CHECK);
        showRemindersOnPatientSelectionEventBtn.setText(Messages.ReminderPrefences_ShowPatientSelectionRedminders);
        showRemindersOnPatientSelectionEventBtn
                .setSelection(CoreHub.userCfg.get(Preferences.USR_SHOWPATCHGREMINDER, false));
        showRemindersOnPatientSelectionEventBtn.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));

        new Label(ret, SWT.NONE);
        new Label(ret, SWT.NONE);
        new Label(ret, SWT.NONE);

        Label lblSeparator = new Label(ret, SWT.HORIZONTAL | SWT.SEPARATOR);
        lblSeparator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));

        Label lblLabelConfig = new Label(ret, SWT.NONE);
        lblLabelConfig.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
        lblLabelConfig.setText("Pendenzen (mit Patienten-Bezug) Label Optionen");

        Label lblChoosen = new Label(ret, SWT.NONE);
        lblChoosen.setText("Gewhlt");
        new Label(ret, SWT.NONE);
        Label lblAvailable = new Label(ret, SWT.NONE);
        lblAvailable.setText("Noch verfgbar");

        GridData gdListViewer = new GridData();
        gdListViewer.horizontalAlignment = SWT.FILL;
        gdListViewer.verticalAlignment = SWT.CENTER;
        gdListViewer.minimumHeight = 100;
        gdListViewer.heightHint = 100;

        lViewerChoosen = new ListViewer(ret, SWT.BORDER | SWT.V_SCROLL);
        lViewerChoosen.getList().setLayoutData(gdListViewer);
        lViewerChoosen.setContentProvider(new ArrayContentProvider());
        lViewerChoosen.setInput(choosenFields);

        Composite btnComposite = new Composite(ret, SWT.NONE);
        btnComposite.setLayout(new GridLayout());
        btnComposite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false));

        Button btnAdd = new Button(btnComposite, SWT.PUSH);
        btnAdd.setImage(Images.IMG_PREVIOUS.getImage());
        btnAdd.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                IStructuredSelection sel = (IStructuredSelection) lViewerAvailable.getSelection();
                String item = (String) sel.getFirstElement();
                lViewerAvailable.remove(item);
                lViewerChoosen.add(item);
                lblInfo.setText(getPreviewLabel());
            }
        });

        Button btnRemove = new Button(btnComposite, SWT.PUSH);
        btnRemove.setImage(Images.IMG_NEXT.getImage());
        btnRemove.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                IStructuredSelection sel = (IStructuredSelection) lViewerChoosen.getSelection();
                String item = (String) sel.getFirstElement();
                lViewerChoosen.remove(item);
                lViewerAvailable.add(item);
                lblInfo.setText(getPreviewLabel());
            }
        });

        lViewerAvailable = new ListViewer(ret, SWT.BORDER | SWT.V_SCROLL);
        lViewerAvailable.getList().setLayoutData(gdListViewer);
        lViewerAvailable.setContentProvider(new ArrayContentProvider());
        lViewerAvailable.setInput(availableFields);

        new Label(ret, SWT.NONE);
        new Label(ret, SWT.NONE);
        new Label(ret, SWT.NONE);

        lblInfo = new Label(ret, SWT.NONE);
        lblInfo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
        lblInfo.setText(getPreviewLabel());
        return ret;
    }

    private String getPreviewLabel() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < lViewerChoosen.getList().getItems().length; i++) {
            sb.append(lViewerChoosen.getList().getItems()[i]);
            if (i < lViewerChoosen.getList().getItems().length - 1) {
                sb.append(", ");
            }
        }
        return prefixPrevLabel + ":\t\t" + sb.toString();
    }

    public void init(IWorkbench workbench) {
        // TODO Auto-generated method stub
    }

    @Override
    public boolean performOk() {
        CoreHub.userCfg.set(Preferences.USR_SHOWPATCHGREMINDER,
                showRemindersOnPatientSelectionEventBtn.getSelection());

        CoreHub.userCfg.set(Preferences.USR_REMINDER_PAT_LABEL_CHOOSEN,
                getListAsString(lViewerChoosen.getList().getItems()));
        CoreHub.userCfg.set(Preferences.USR_REMINDER_PAT_LABEL_AVAILABLE,
                getListAsString(lViewerAvailable.getList().getItems()));

        CoreHub.userCfg.flush();
        return super.performOk();
    }

    private String getListAsString(String[] items) {
        StringBuilder sb = new StringBuilder();
        for (String item : items) {
            sb.append(item);
            sb.append(",");
        }
        return sb.toString();
    }

}