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

Java tutorial

Introduction

Here is the source code for ch.elexis.core.ui.preferences.PrinterPreferencePage.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.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.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.data.activator.CoreHub;
import ch.elexis.core.ui.util.SWTHelper;
import ch.rgw.tools.StringTool;

public class PrinterPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
    private static final String ARROW = "->"; //$NON-NLS-1$
    private static final String PRINTERWITH = Messages.PrinterPreferencePage_PrinterWith;
    private static final String TRAYFOR = Messages.PrinterPreferencePage_TrayFor;
    private static final String LABELS = Messages.PrinterPreferencePage_Labels;
    private static final String PAPER_ESR = Messages.PrinterPreferencePage_PaperWithESR;
    private static final String PAPER_PLAIN_A4 = Messages.PrinterPreferencePage_PaperA4Plain;
    private static final String PAPER_PLAIN_A5 = Messages.PrinterPreferencePage_PaperA5Plain;
    private static final String SHEETFEEDER = Messages.PrinterPreferencePage_SheetFeeder;

    Text tEtiketten, tEtikettenschacht, tA5, tA5Schacht, tA4ESR, tA4ESRSchacht, tA4, tA4Schacht;
    Text tEinzelblatt;
    Text tEinzelblattSchacht;
    Button bEtiketten;
    Button cEtiketten;
    Button bClear;
    PrinterSelector psel;

    @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(PRINTERWITH + LABELS);
        tEtiketten = new Text(ret, SWT.BORDER | SWT.READ_ONLY);
        tEtiketten.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        tEtiketten.setData(Messages.PrinterPreferencePage_Labelrinter);
        bEtiketten = new Button(ret, SWT.PUSH);
        bEtiketten.setText(" ->"); //$NON-NLS-1$
        bEtiketten.setData(tEtiketten);
        bEtiketten.addSelectionListener(psel);
        new Label(ret, SWT.NONE).setText(TRAYFOR + LABELS);
        tEtikettenschacht = new Text(ret, SWT.BORDER);
        tEtikettenschacht.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        new Label(ret, SWT.NONE);
        new Label(ret, SWT.NONE);
        cEtiketten = new Button(ret, SWT.CHECK);
        cEtiketten.setText(Messages.PrinterPreferencePage_ChosePrinterAlways);
        cEtiketten.setLayoutData(SWTHelper.getFillGridData(2, true, 1, false));
        cEtiketten.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                setEtikettenSelection(cEtiketten.getSelection());
            }
        });

        new Label(ret, SWT.NONE).setText(PRINTERWITH + PAPER_ESR);
        tA4ESR = new Text(ret, SWT.BORDER | SWT.READ_ONLY);
        tA4ESR.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        Button b = new Button(ret, SWT.PUSH);
        b.setData(tA4ESR);
        b.addSelectionListener(psel);
        b.setText(ARROW);
        new Label(ret, SWT.NONE).setText(TRAYFOR + PAPER_ESR);
        tA4ESRSchacht = new Text(ret, SWT.BORDER);
        tA4ESRSchacht.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        new Label(ret, SWT.NONE);

        new Label(ret, SWT.NONE).setText(PRINTERWITH + PAPER_PLAIN_A4);
        tA4 = new Text(ret, SWT.BORDER | SWT.READ_ONLY);
        tA4.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        b = new Button(ret, SWT.PUSH);
        b.setData(tA4);
        b.addSelectionListener(psel);
        b.setText(ARROW);
        new Label(ret, SWT.NONE).setText(TRAYFOR + PAPER_PLAIN_A4);
        tA4Schacht = new Text(ret, SWT.BORDER);
        tA4Schacht.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        new Label(ret, SWT.NONE);

        new Label(ret, SWT.NONE).setText(PRINTERWITH + PAPER_PLAIN_A5);
        tA5 = new Text(ret, SWT.BORDER | SWT.READ_ONLY);
        tA5.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        b = new Button(ret, SWT.PUSH);
        b.setData(tA5);
        b.addSelectionListener(psel);
        b.setText(ARROW);
        new Label(ret, SWT.NONE).setText(TRAYFOR + PAPER_PLAIN_A5);
        tA5Schacht = new Text(ret, SWT.BORDER);
        tA5Schacht.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        new Label(ret, SWT.NONE);

        new Label(ret, SWT.NONE).setText(PRINTERWITH + SHEETFEEDER);
        tEinzelblatt = new Text(ret, SWT.BORDER | SWT.READ_ONLY);
        tEinzelblatt.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        b = new Button(ret, SWT.PUSH);
        b.setData(tEinzelblatt);
        b.addSelectionListener(psel);
        b.setText(ARROW);
        new Label(ret, SWT.NONE).setText(TRAYFOR + SHEETFEEDER);
        tEinzelblattSchacht = new Text(ret, SWT.BORDER);
        tEinzelblattSchacht.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false));
        new Label(ret, SWT.NONE);

        tEtiketten.setText(CoreHub.localCfg.get("Drucker/Etiketten/Name", StringTool.leer)); //$NON-NLS-1$
        tEtikettenschacht.setText(CoreHub.localCfg.get("Drucker/Etiketten/Schacht", StringTool.leer)); //$NON-NLS-1$
        boolean selection = CoreHub.localCfg.get("Drucker/Etiketten/Choose", false); //$NON-NLS-1$
        cEtiketten.setSelection(selection); //$NON-NLS-1$
        setEtikettenSelection(selection);
        tA4ESR.setText(CoreHub.localCfg.get("Drucker/A4ESR/Name", StringTool.leer)); //$NON-NLS-1$
        tA4ESRSchacht.setText(CoreHub.localCfg.get("Drucker/A4ESR/Schacht", StringTool.leer)); //$NON-NLS-1$
        tA4.setText(CoreHub.localCfg.get("Drucker/A4/Name", StringTool.leer)); //$NON-NLS-1$
        tA4Schacht.setText(CoreHub.localCfg.get("Drucker/A4/Schacht", StringTool.leer)); //$NON-NLS-1$
        tA5.setText(CoreHub.localCfg.get("Drucker/A5/Name", StringTool.leer)); //$NON-NLS-1$
        tA5Schacht.setText(CoreHub.localCfg.get("Drucker/A5/Schacht", StringTool.leer)); //$NON-NLS-1$
        tEinzelblatt.setText(CoreHub.localCfg.get("Drucker/Einzelblatt/Name", StringTool.leer)); //$NON-NLS-1$
        tEinzelblattSchacht.setText(CoreHub.localCfg.get("Drucker/Einzelblatt/Schacht", StringTool.leer)); //$NON-NLS-1$
        new Label(ret, SWT.SEPARATOR | SWT.HORIZONTAL).setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
        bClear = new Button(ret, SWT.PUSH);
        bClear.setText(Messages.PrinterPreferencePage_ClearPrinterSettings);
        bClear.setLayoutData(SWTHelper.getFillGridData(3, true, 1, false));
        bClear.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                tEtiketten.setText(StringTool.leer);
                tA4.setText(StringTool.leer);
                tA4ESR.setText(StringTool.leer);
                tA5.setText(StringTool.leer);
            }
        });
        return ret;
    }

    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);
            }
        }

    };

    private void setEtikettenSelection(boolean selection) {
        if (selection) {
            tEtiketten.setText(StringTool.leer);
            tEtiketten.setData(null);
            tEtikettenschacht.setText(StringTool.leer);
        }

        tEtiketten.setEnabled(!selection);
        tEtikettenschacht.setEnabled(!selection);
        bEtiketten.setEnabled(!selection);
    }

    public void init(IWorkbench workbench) {

    }

    @Override
    public boolean performOk() {
        CoreHub.localCfg.set("Drucker/Etiketten/Name", tEtiketten.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/Etiketten/Schacht", tEtikettenschacht.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/Etiketten/Choose", cEtiketten.getSelection()); //$NON-NLS-1$
        Object data = tEtiketten.getData();
        if (data instanceof PrinterData) {
            PrinterData pdata = (PrinterData) data;
            CoreHub.localCfg.set("Drucker/Etiketten/Driver", pdata.driver); //$NON-NLS-1$
        } else {
            CoreHub.localCfg.set("Drucker/Etiketten/Driver", StringTool.leer); //$NON-NLS-1$
        }

        CoreHub.localCfg.set("Drucker/A4ESR/Name", tA4ESR.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/A4ESR/Schacht", tA4ESRSchacht.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/A4/Name", tA4.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/A4/Schacht", tA4Schacht.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/A5/Name", tA5.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/A5/Schacht", tA5Schacht.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/Einzelblatt/Name", tEinzelblatt.getText()); //$NON-NLS-1$
        CoreHub.localCfg.set("Drucker/Einzelblatt/Schacht", tEinzelblattSchacht.getText()); //$NON-NLS-1$

        return super.performOk();
    }

}