ch.elexis.agenda.preferences.AgendaDruck.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.agenda.preferences.AgendaDruck.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2010, D. Lutz 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:
 *    D. Lutz - initial implementation
 *    
 *******************************************************************************/

package ch.elexis.agenda.preferences;

import java.util.List;

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Button;
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.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import ch.elexis.core.constants.StringConstants;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.ui.Hub;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.data.Brief;
import ch.elexis.data.Query;

public class AgendaDruck extends PreferencePage implements IWorkbenchPreferencePage {

    Combo cTerminTemplate;
    Text tTerminPrinter;
    Button bTerminPrinterButton;
    Text tTerminTray;

    Composite cPrinterArea;

    Button bDirectPrint;

    PrinterSelector psel;

    public AgendaDruck() {
        setDescription(Messages.AgendaDruck_settingsForPrint);
    }

    @Override
    protected Control createContents(Composite parent) {
        psel = new PrinterSelector();
        Composite ret = new Composite(parent, SWT.NONE);
        ret.setLayout(new GridLayout(3, false));
        new Label(ret, SWT.NONE).setText(Messages.AgendaDruck_templateForCards);
        cTerminTemplate = new Combo(ret, SWT.READ_ONLY);
        cTerminTemplate.setLayoutData(SWTHelper.getFillGridData(2, true, 1, false));

        bDirectPrint = new Button(ret, SWT.CHECK);
        bDirectPrint.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
        bDirectPrint.setText(Messages.AgendaDruck_printDirectly);
        bDirectPrint.addSelectionListener(new SelectionListener() {
            public void widgetSelected(SelectionEvent e) {
                refreshDirectPrint();
            }

            public void widgetDefaultSelected(SelectionEvent e) {
                widgetSelected(e);
            }
        });

        cPrinterArea = new Composite(ret, SWT.NONE);
        cPrinterArea.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
        cPrinterArea.setLayout(new GridLayout(3, false));

        new Label(cPrinterArea, SWT.NONE).setText(Messages.AgendaDruck_printerForCards);
        tTerminPrinter = new Text(cPrinterArea, SWT.BORDER | SWT.READ_ONLY);
        tTerminPrinter.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        tTerminPrinter.setData("TerminPrinter"); //$NON-NLS-1$
        bTerminPrinterButton = new Button(cPrinterArea, SWT.PUSH);
        bTerminPrinterButton.setText(" ->"); //$NON-NLS-1$
        bTerminPrinterButton.setData(tTerminPrinter);
        bTerminPrinterButton.addSelectionListener(psel);

        new Label(cPrinterArea, SWT.NONE).setText(Messages.AgendaDruck_TrayForCards);
        tTerminTray = new Text(cPrinterArea, SWT.BORDER);
        tTerminTray.setLayoutData(SWTHelper.getFillGridData(2, true, 1, false));

        setInitialValues();

        return ret;
    }

    private void refreshDirectPrint() {
        boolean directPrint = bDirectPrint.getSelection();

        if (directPrint) {
            cPrinterArea.setVisible(true);
        } else {
            cPrinterArea.setVisible(false);
        }
    }

    /* fill combo box with available templates */
    private void setTemplates() {
        cTerminTemplate.removeAll();

        String currentTemplate = CoreHub.localCfg.get(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_TEMPLATE,
                PreferenceConstants.AG_PRINT_APPOINTMENTCARD_TEMPLATE_DEFAULT);

        Brief[] templates = getSystemTemplates();
        for (int i = 0; i < templates.length; i++) {
            Brief brief = templates[i];
            String name = brief.getBetreff();
            cTerminTemplate.add(name);
        }

        cTerminTemplate.setText(currentTemplate);
    }

    private void setInitialValues() {
        setTemplates();

        tTerminPrinter.setText(CoreHub.localCfg.get(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_PRINTER_NAME, "")); //$NON-NLS-1$
        tTerminTray.setText(CoreHub.localCfg.get(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_PRINTER_TRAY, "")); //$NON-NLS-1$

        boolean directPrint = CoreHub.localCfg.get(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_DIRECTPRINT,
                PreferenceConstants.AG_PRINT_APPOINTMENTCARD_DIRECTPRINT_DEFAULT);
        bDirectPrint.setSelection(directPrint);
        refreshDirectPrint();
    }

    @Override
    public boolean performOk() {
        CoreHub.localCfg.set(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_TEMPLATE, cTerminTemplate.getText());
        CoreHub.localCfg.set(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_PRINTER_NAME, tTerminPrinter.getText());
        CoreHub.localCfg.set(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_PRINTER_TRAY, tTerminTray.getText());
        CoreHub.localCfg.set(PreferenceConstants.AG_PRINT_APPOINTMENTCARD_DIRECTPRINT, bDirectPrint.getSelection());

        CoreHub.localCfg.flush();

        return super.performOk();
    }

    public void init(IWorkbench workbench) {
        // nothing to do
    }

    private Brief[] getSystemTemplates() {
        Query<Brief> qbe = new Query<Brief>(Brief.class);
        qbe.add(Brief.FLD_TYPE, Query.EQUALS, Brief.TEMPLATE);
        qbe.add(Brief.FLD_KONSULTATION_ID, Query.EQUALS, "SYS");
        qbe.startGroup();
        qbe.add(Brief.FLD_DESTINATION_ID, Query.EQUALS, CoreHub.actMandant.getId());
        qbe.or();
        qbe.add(Brief.FLD_DESTINATION_ID, Query.EQUALS, StringConstants.EMPTY);
        qbe.endGroup();
        qbe.and();
        qbe.add("geloescht", Query.NOT_EQUAL, StringConstants.ONE);

        qbe.orderBy(false, Brief.FLD_DATE);
        List<Brief> l = qbe.execute();
        if (l != null) {
            return l.toArray(new Brief[0]);
        } else {
            return new Brief[0];
        }
    }

    class PrinterSelector extends SelectionAdapter {
        @Override
        public void widgetSelected(SelectionEvent e) {
            PrintDialog pd = new PrintDialog(getShell());
            PrinterData pdata = pd.open();
            if (pdata != null) {
                Text tx = (Text) ((Button) e.getSource()).getData();
                tx.setText(pdata.name);
                tx.setData(pdata);
            }
        }

    };

}