/******************************************************************************* * 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(); } }