Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 162867 Details for
Bug 96394
Printing: get a list of paper formats for a printer
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
TestSetPrinterData.java
TestSetPrinterData.java (text/plain), 20.70 KB, created by
Carolyn MacLeod
on 2010-03-24 10:47:06 EDT
(
hide
)
Description:
TestSetPrinterData.java
Filename:
MIME Type:
Creator:
Carolyn MacLeod
Created:
2010-03-24 10:47:06 EDT
Size:
20.70 KB
patch
obsolete
>package printing.tests; > >import org.eclipse.swt.*; >import org.eclipse.swt.widgets.*; >import org.eclipse.swt.events.*; >import org.eclipse.swt.graphics.*; >import org.eclipse.swt.layout.*; >import org.eclipse.swt.printing.*; > >public class TestSetPrinterData { > static PrinterData printerData = null; > static Text fileNameText; > static Button fileNameBrowseButton; > static Combo paperDisplayNameCombo; > static Text paperWidthText; > static Text paperHeightText; > static final String [] paperSizes = new String [] {"", PrinterData.PAPER_LETTER, PrinterData.PAPER_LEGAL, > PrinterData.PAPER_A2, PrinterData.PAPER_A4, PrinterData.PAPER_A5, PrinterData.PAPER_A6, > PrinterData.PAPER_B5, PrinterData.PAPER_JB5, PrinterData.PAPER_EXECUTIVE}; > > public static void main(String [] args) { > //Printer.DEBUG = true; > final Display display = new Display(); > final Shell shell = new Shell(display); > shell.setText("TestSetPrinterData"); > shell.setLayout(new RowLayout()); > > Button printerDataButton = new Button(shell, SWT.PUSH); > printerDataButton.setText("PrinterData"); > printerDataButton.addSelectionListener(new SelectionAdapter(){ > public void widgetSelected(SelectionEvent e) { > final Shell dialog = new Shell (shell, SWT.DIALOG_TRIM); > dialog.setText("Enter PrinterData Test Values"); > GridLayout gridLayout = new GridLayout (2, false); > dialog.setLayout (gridLayout); > PrinterData printerList[] = Printer.getPrinterList(); > String driverAndNameList[] = new String[printerList.length]; > for (int i = 0; i < printerList.length; i++) { > driverAndNameList[i] = printerList[i].driver + ", " + printerList[i].name; > } > PrinterData defaultPrinter = Printer.getDefaultPrinterData(); > if (defaultPrinter == null) { > if (printerList.length == 0) { > System.out.println("There are no printers."); > return; > } else { > System.out.println("There are printers, but no default printer has been set. Assuming printer[0] is the default."); > defaultPrinter = printerList[0]; > } > } > > new Label (dialog, SWT.NONE).setText ("Driver and Name:"); > final Combo driverAndNameCombo = new Combo (dialog, SWT.DROP_DOWN | SWT.READ_ONLY); > String current = ""; > if (printerData == null) { > current = defaultPrinter.driver + ", " + defaultPrinter.name; > } else { > current = printerData.driver + ", " + printerData.name; > } > driverAndNameCombo.setItems (driverAndNameList); > driverAndNameCombo.setText (current); > if (driverAndNameCombo.getText().length() == 0) { > // On the Mac, the driver in the printer list is not the same as the driver returned by the printer dialog. > driverAndNameCombo.add(current); > driverAndNameCombo.setText (current); > } > driverAndNameCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Scope:"); > final Combo scopeCombo = new Combo (dialog, SWT.DROP_DOWN | SWT.READ_ONLY); > scopeCombo.setItems (new String [] {"ALL_PAGES", "PAGE_RANGE", "SELECTION"}); > if (printerData == null) { > scopeCombo.setText ("ALL_PAGES"); > } else { > scopeCombo.setText (printerData.scope == PrinterData.SELECTION ? "SELECTION" : printerData.scope == PrinterData.PAGE_RANGE ? "PAGE_RANGE" : "ALL_PAGES"); > } > scopeCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Start Page:"); > final Spinner startPageSpinner = new Spinner (dialog, SWT.BORDER); > startPageSpinner.setMaximum(99); > if (printerData == null) { > startPageSpinner.setSelection(1); > } else { > startPageSpinner.setSelection(printerData.startPage); > } > startPageSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("End Page:"); > final Spinner endPageSpinner = new Spinner (dialog, SWT.BORDER); > endPageSpinner.setMaximum(99); > if (printerData == null) { > } else { > endPageSpinner.setSelection(printerData.endPage); > } > endPageSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > final Button printToFileCheckbox = new Button (dialog, SWT.CHECK); > printToFileCheckbox.setText ("Print To File"); > printToFileCheckbox.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > printToFileCheckbox.addSelectionListener(new SelectionAdapter(){ > public void widgetSelected(SelectionEvent e) { > boolean enabled = printToFileCheckbox.getSelection(); > fileNameText.setEnabled(enabled); > fileNameBrowseButton.setEnabled(enabled); > } > }); > if (printerData != null) { > printToFileCheckbox.setSelection(printerData.printToFile); > } > > fileNameBrowseButton = new Button (dialog, SWT.PUSH); > fileNameBrowseButton.setText ("Browse..."); > fileNameBrowseButton.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > fileNameBrowseButton.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > FileDialog dialog = new FileDialog(shell, SWT.OPEN); > dialog.setFilterPath(fileNameText.getText()); > String selectedFile = dialog.open(); > if (selectedFile != null) { > fileNameText.setText(selectedFile); > } > } > }); > > new Label (dialog, SWT.NONE).setText ("File Name:"); > fileNameText = new Text (dialog, SWT.BORDER); > if (printerData == null) { > fileNameText.setText (""); > } else { > fileNameText.setText (printerData.fileName == null ? "" : printerData.fileName); > } > fileNameText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > fileNameText.setEnabled(false); > fileNameBrowseButton.setEnabled(false); > > new Label (dialog, SWT.NONE).setText ("Copy Count:"); > final Spinner copyCountSpinner = new Spinner (dialog, SWT.BORDER); > copyCountSpinner.setMaximum(99); > if (printerData == null) { > copyCountSpinner.setSelection(1); > } else { > copyCountSpinner.setSelection(printerData.copyCount); > } > copyCountSpinner.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > final Button collateCheckbox = new Button (dialog, SWT.CHECK); > collateCheckbox.setText ("Collate"); > if (printerData != null) { > collateCheckbox.setSelection(printerData.collate); > } > collateCheckbox.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label(dialog, SWT.NONE); // filler > > new Label (dialog, SWT.NONE).setText ("Orientation:"); > final Combo orientationCombo = new Combo (dialog, SWT.DROP_DOWN | SWT.READ_ONLY); > orientationCombo.setItems (new String [] {"PORTRAIT", "LANDSCAPE"}); > if (printerData == null) { > orientationCombo.setText ("PORTRAIT"); > } else { > orientationCombo.setText (printerData.orientation == PrinterData.LANDSCAPE ? "LANDSCAPE" : "PORTRAIT"); > } > orientationCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Duplex:"); > final Combo duplexCombo = new Combo (dialog, SWT.DROP_DOWN | SWT.READ_ONLY); > duplexCombo.setItems (new String [] {"SIMPLEX", "HORIZONTAL", "VERTICAL"}); > if (printerData == null) { > duplexCombo.setText ("SIMPLEX"); > } else { > duplexCombo.setText (printerData.duplex == PrinterData.DUPLEX_HORIZONTAL ? "HORIZONTAL" : printerData.duplex == PrinterData.DUPLEX_VERTICAL ? "VERTICAL" : "SIMPLEX"); > } > duplexCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Pages per side:"); > final Combo pagesPerSideCombo = new Combo (dialog, SWT.DROP_DOWN | SWT.READ_ONLY); > pagesPerSideCombo.setItems (new String [] {"1", "2", "4", "6", "9", "16"}); > if (printerData == null) { > pagesPerSideCombo.setText ("1"); > } else { > pagesPerSideCombo.setText ("" + printerData.pagesPerSide); > } > pagesPerSideCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("X Resolution (dpi):"); > final Combo resolutionXCombo = new Combo (dialog, SWT.DROP_DOWN); > resolutionXCombo.setItems (new String [] {"300", "600", "1200", "2400", "4800", "9600"}); > if (printerData == null || (printerData != null && printerData.resolutionX == 0)) { > resolutionXCombo.setText (""); > } else { > resolutionXCombo.setText ("" + printerData.resolutionX); > } > resolutionXCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Y Resolution (dpi):"); > final Combo resolutionYCombo = new Combo (dialog, SWT.DROP_DOWN); > resolutionYCombo.setItems (new String [] {"300", "600", "1200", "2400", "4800", "9600"}); > if (printerData == null || (printerData != null && printerData.resolutionY == 0)) { > resolutionYCombo.setText (""); > } else { > resolutionYCombo.setText ("" + printerData.resolutionY); > } > resolutionYCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > new Label (dialog, SWT.NONE).setText ("Scale factor (%):"); > final Combo scaleCombo = new Combo (dialog, SWT.DROP_DOWN); > scaleCombo.setItems (new String [] {"25", "33", "50", "75", "100", "200", "400"}); > if (printerData == null) { > scaleCombo.setText ("100"); > } else { > scaleCombo.setText ("" + printerData.scale); > } > scaleCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > > // TODO: getPaperNameList should be changed to an instance method > // TODO: getPaperNameList should somehow return both the names and the display names (and the height and width for each paper size). > // TODO: Set the names into paperSizeNameCombo (filter out the standard names) and set the display names into paperDisplayNameCombo. > // TODO: Should do this whenever user changes printer driver/name in driverAndNameCombo, since getPaperNameList is for a printer instance. > Printer currentPrinter = new Printer(printerData); > String [] paperNames = currentPrinter.getPaperNameList(); > currentPrinter.dispose(); > > new Label (dialog, SWT.NONE).setText ("Paper size name:"); > final Combo paperSizeNameCombo = new Combo (dialog, SWT.DROP_DOWN); > String [] newNames = new String[paperSizes.length + paperNames.length]; > System.arraycopy(paperSizes, 0, newNames, 0, paperSizes.length); > System.arraycopy(paperNames, 0, newNames, paperSizes.length, paperNames.length); > paperSizeNameCombo.setItems (newNames); > if (printerData == null || printerData.paperSizeName == null) { > paperSizeNameCombo.setText (""); > } else { > paperSizeNameCombo.setText (printerData.paperSizeName); > } > paperSizeNameCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > paperSizeNameCombo.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > boolean enabled = !standardPaperSize(paperSizeNameCombo.getText()); > paperDisplayNameCombo.setEnabled(enabled); > paperWidthText.setEnabled(enabled); > paperHeightText.setEnabled(enabled); > } > }); > > boolean enabled = printerData != null && !standardPaperSize(printerData.paperSizeName); > new Label (dialog, SWT.NONE).setText ("Paper display name:"); > paperDisplayNameCombo = new Combo (dialog, SWT.DROP_DOWN); > paperDisplayNameCombo.setItems (paperNames); > paperDisplayNameCombo.add("", 0); > if (printerData == null || printerData.paperSizeName == null) { > paperDisplayNameCombo.setText (""); > } else { > paperDisplayNameCombo.setText (printerData.paperSizeName); > } > paperDisplayNameCombo.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > paperDisplayNameCombo.setEnabled(enabled); > paperDisplayNameCombo.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > String paperName = paperDisplayNameCombo.getText(); > if (paperName.equals("")) { > // TODO: not sure if these should be cleared when the combo is cleared > paperWidthText.setText (""); > paperHeightText.setText (""); > } else { > // TODO: need to set the values based on the paperNameCombo selection > paperWidthText.setText ("0.0"); // TODO: where to get actual width? > paperHeightText.setText ("0.0"); // TODO: where to get actual height? > } > } > }); > > new Label (dialog, SWT.NONE).setText ("Paper width:"); > paperWidthText = new Text (dialog, SWT.BORDER); > if (printerData == null) { > paperWidthText.setText (""); > } else { > paperWidthText.setText ("" + printerData.paperWidth); > } > paperWidthText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > paperWidthText.setEnabled(enabled); > > new Label (dialog, SWT.NONE).setText ("Paper height:"); > paperHeightText = new Text (dialog, SWT.BORDER); > if (printerData == null) { > paperHeightText.setText (""); > } else { > paperHeightText.setText ("" + printerData.paperHeight); > } > paperHeightText.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > paperHeightText.setEnabled(enabled); > > Composite buttons = new Composite(dialog, SWT.NONE); > GridLayout layout = new GridLayout(3, true); > layout.marginWidth = 0; > buttons.setLayout(layout); > buttons.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false, 2, 1)); > > Button clear = new Button(buttons, SWT.PUSH); > clear.setText("Null"); > clear.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, false, false)); > clear.addSelectionListener(new SelectionAdapter(){ > public void widgetSelected(SelectionEvent e) { > printerData = null; > dialog.dispose(); > } > }); > > Button defaults = new Button(buttons, SWT.PUSH); > defaults.setText("Defaults"); > defaults.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); > defaults.addSelectionListener(new SelectionAdapter(){ > public void widgetSelected(SelectionEvent e) { > printerData = new PrinterData(); > dialog.dispose(); > } > }); > > Button ok = new Button(buttons, SWT.PUSH); > ok.setText("OK"); > ok.setLayoutData (new GridData (SWT.FILL, SWT.CENTER, true, false)); > ok.addSelectionListener(new SelectionAdapter(){ > public void widgetSelected(SelectionEvent e) { > if (printerData == null) printerData = new PrinterData(); > String driverAndName = driverAndNameCombo.getText(); > printerData.driver = driverAndName.substring(0, driverAndName.indexOf(", ")); > printerData.name = driverAndName.substring(driverAndName.indexOf(", ") + 2); > String scope = scopeCombo.getText(); > printerData.scope = scope.equals("PAGE_RANGE") ? PrinterData.PAGE_RANGE : scope.equals("SELECTION") ? PrinterData.SELECTION : PrinterData.ALL_PAGES; > printerData.startPage = startPageSpinner.getSelection(); > printerData.endPage = endPageSpinner.getSelection(); > printerData.fileName = fileNameText.getText (); > printerData.printToFile = printToFileCheckbox.getSelection(); > printerData.copyCount = copyCountSpinner.getSelection(); > printerData.collate = collateCheckbox.getSelection(); > String orientation = orientationCombo.getText(); > printerData.orientation = orientation.equals("LANDSCAPE") ? PrinterData.LANDSCAPE : PrinterData.PORTRAIT; > String duplex = duplexCombo.getText(); > printerData.duplex = duplex.equals("HORIZONTAL") ? PrinterData.DUPLEX_HORIZONTAL : duplex.equals("VERTICAL") ? PrinterData.DUPLEX_VERTICAL : PrinterData.DUPLEX_SIMPLEX; > printerData.pagesPerSide = Integer.parseInt(pagesPerSideCombo.getText()); > try { > printerData.resolutionX = Integer.parseInt(resolutionXCombo.getText()); > } catch (NumberFormatException ex) {} > try { > printerData.resolutionY = Integer.parseInt(resolutionYCombo.getText()); > } catch (NumberFormatException ex) {} > printerData.scale = Integer.parseInt(scaleCombo.getText()); > String paperSizeName = paperSizeNameCombo.getText(); > if (paperSizeName.equals("")) paperSizeName = null; > printerData.paperSizeName = paperSizeName; > if (!standardPaperSize(paperSizeName)) { > printerData.paperDisplayName = paperDisplayNameCombo.getText(); > try { > printerData.paperWidth = Double.parseDouble(paperWidthText.getText()); > } catch (NumberFormatException ex) {} > try { > printerData.paperHeight = Double.parseDouble(paperHeightText.getText()); > } catch (NumberFormatException ex) {} > } > dialog.dispose(); > } > }); > > dialog.pack (); > dialog.open (); > } > }); > Button printDialogButton = new Button(shell, SWT.PUSH); > printDialogButton.setText("PrintDialog"); > printDialogButton.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > PrintDialog dialog = new PrintDialog(shell, SWT.NONE); > if (printerData != null) { > if (false) { > // Old methods. Test for backward compatibility. > dialog.setScope(printerData.scope); > dialog.setStartPage(printerData.startPage); > dialog.setEndPage(printerData.endPage); > dialog.setPrintToFile(printerData.printToFile); > } > if (true) { > // New method. Recommended way to seed dialog. > dialog.setPrinterData(printerData); > } > } > printerData = dialog.open(); > logPrinterData(printerData); > > } > }); > > Button printButton = new Button(shell, SWT.PUSH); > printButton.setText("Print"); > printButton.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > try { > Printer printer = new Printer(printerData); > Point dpi = printer.getDPI(); > if (printer.startJob("SWT Printing Snippet")) { > GC gc = new GC(printer); > if (printer.startPage()) { > int oneInch = dpi.x; > gc.drawLine(oneInch, oneInch, 5 * oneInch, 5 * oneInch); > gc.drawLine(5 * oneInch, oneInch, oneInch, 5 * oneInch); > gc.drawString("Hello World!", oneInch, 2 * oneInch); > gc.drawString("Printed on " + (printerData == null ? "default printer" : printerData.name) + " using SWT on " + SWT.getPlatform(), oneInch, oneInch * 5/2); > printer.endPage(); > } > gc.dispose(); > printer.endJob(); > } > printer.dispose(); > } catch (SWTError ex) { > MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); > messageBox.setMessage("The PrinterData does not specify a valid printer and there is no default printer set."); > messageBox.open(); > } > } > }); > > shell.pack(); > shell.open(); > > while (!shell.isDisposed()) { > if (!display.readAndDispatch()) display.sleep(); > } > display.dispose(); > } > > static void logPrinterData(PrinterData data) { > if (data != null) { > System.out.println(data.toString()); // printer driver and name > System.out.print("Scope: Print "); > if (data.scope == PrinterData.PAGE_RANGE) { > System.out.println("Pages: " + data.startPage + " To: " + data.endPage); > } else if (data.scope == PrinterData.SELECTION) { > System.out.println("Selection"); > } else { > System.out.println("All Pages"); > } > System.out.println("Print to file: " + data.printToFile); > System.out.println("File name: " + data.fileName); > System.out.println("Copy count: " + data.copyCount); > System.out.println("Collate: " + data.collate); > System.out.println("Orientation: " + (data.orientation == PrinterData.PORTRAIT ? "PORTRAIT" : data.orientation == PrinterData.LANDSCAPE ? "LANDSCAPE" : "UNKNOWN " + data.orientation)); > > System.out.println("Duplex: " + (data.duplex == PrinterData.DUPLEX_SIMPLEX ? "SIMPLEX" : data.duplex == PrinterData.DUPLEX_HORIZONTAL ? "HORIZONTAL" : data.duplex == PrinterData.DUPLEX_VERTICAL ? "VERTICAL": "UNKNOWN " + data.duplex)); > System.out.println("Pages per side: " + data.pagesPerSide); > System.out.println("X Resolution: " + data.resolutionX + " dpi"); > System.out.println("Y Resolution: " + data.resolutionY + " dpi"); > System.out.println("Scale factor: " + data.scale + "%"); > System.out.println("Paper size: " + data.paperSizeName); > if (!standardPaperSize(data.paperSizeName)) { > System.out.println("Paper display name: " + data.paperDisplayName); > System.out.println("Paper size: " + data.paperWidth + " x " + data.paperHeight); > } > } else { > System.out.println("Cancelled"); > } > System.out.println(); > } > > static boolean standardPaperSize(String paperSize) { > if (paperSize == null) return false; > for (int i = 1; i < paperSizes.length; i++) { > if (paperSize.equals(paperSizes[i])) return true; > } > return false; > } >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 96394
:
158751
|
158841
|
159788
|
161015
|
161111
|
162862
| 162867