diff options
Diffstat (limited to 'examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet133.java')
-rw-r--r-- | examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet133.java | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet133.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet133.java deleted file mode 100644 index 30003801ce..0000000000 --- a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet133.java +++ /dev/null @@ -1,323 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.snippets; - -/* - * Printing example snippet: print text to printer, with word wrap and pagination - * - * For a list of all SWT example snippets see - * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets - */ -import java.io.*; -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.printing.*; - -public class Snippet133 { - Display display; - Shell shell; - Text text; - Font font; - Color foregroundColor, backgroundColor; - - Printer printer; - GC gc; - Font printerFont; - Color printerForegroundColor, printerBackgroundColor; - - int lineHeight = 0; - int tabWidth = 0; - int leftMargin, rightMargin, topMargin, bottomMargin; - int x, y; - int index, end; - String textToPrint; - String tabs; - StringBuffer wordBuffer; - - public static void main(String[] args) { - new Snippet133().open(); - } - - void open() { - display = new Display(); - font = new Font(display, "Courier", 10, SWT.NORMAL); - foregroundColor = display.getSystemColor(SWT.COLOR_BLACK); - backgroundColor = display.getSystemColor(SWT.COLOR_WHITE); - shell = new Shell(display); - shell.setLayout(new FillLayout()); - shell.setText("Print Text"); - shell.setMaximized(true); - text = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); - text.setFont(font); - text.setForeground(foregroundColor); - text.setBackground(backgroundColor); - - Menu menuBar = new Menu(shell, SWT.BAR); - shell.setMenuBar(menuBar); - MenuItem item = new MenuItem(menuBar, SWT.CASCADE); - item.setText("&File"); - Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); - item.setMenu(fileMenu); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("&Open..."); - item.setAccelerator(SWT.CTRL + 'O'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuOpen(); - } - }); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("Font..."); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuFont(); - } - }); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("Foreground Color..."); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuForegroundColor(); - } - }); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("Background Color..."); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuBackgroundColor(); - } - }); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("&Print..."); - item.setAccelerator(SWT.CTRL + 'P'); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - menuPrint(); - } - }); - new MenuItem(fileMenu, SWT.SEPARATOR); - item = new MenuItem(fileMenu, SWT.PUSH); - item.setText("E&xit"); - item.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - System.exit(0); - } - }); - - shell.pack(); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - if (font != null) font.dispose(); - if (foregroundColor != null) foregroundColor.dispose(); - if (backgroundColor != null) backgroundColor.dispose(); - } - - void menuOpen() { - final String textString; - FileDialog dialog = new FileDialog(shell, SWT.OPEN); - dialog.setFilterExtensions(new String[] {"*.java", "*.*"}); - String name = dialog.open(); - if ((name == null) || (name.length() == 0)) return; - - try { - File file = new File(name); - FileInputStream stream= new FileInputStream(file.getPath()); - try { - Reader in = new BufferedReader(new InputStreamReader(stream)); - char[] readBuffer= new char[2048]; - StringBuffer buffer= new StringBuffer((int) file.length()); - int n; - while ((n = in.read(readBuffer)) > 0) { - buffer.append(readBuffer, 0, n); - } - textString = buffer.toString(); - stream.close(); - } catch (IOException e) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage("Error reading file:\n" + name); - box.open(); - return; - } - } catch (FileNotFoundException e) { - MessageBox box = new MessageBox(shell, SWT.ICON_ERROR); - box.setMessage("File not found:\n" + name); - box.open(); - return; - } - text.setText(textString); - } - - void menuFont() { - FontDialog fontDialog = new FontDialog(shell); - fontDialog.setFontList(font.getFontData()); - FontData fontData = fontDialog.open(); - if (fontData != null) { - if (font != null) font.dispose(); - font = new Font(display, fontData); - text.setFont(font); - } - } - - void menuForegroundColor() { - ColorDialog colorDialog = new ColorDialog(shell); - colorDialog.setRGB(foregroundColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb != null) { - if (foregroundColor != null) foregroundColor.dispose(); - foregroundColor = new Color(display, rgb); - text.setForeground(foregroundColor); - } - } - - void menuBackgroundColor() { - ColorDialog colorDialog = new ColorDialog(shell); - colorDialog.setRGB(backgroundColor.getRGB()); - RGB rgb = colorDialog.open(); - if (rgb != null) { - if (backgroundColor != null) backgroundColor.dispose(); - backgroundColor = new Color(display, rgb); - text.setBackground(backgroundColor); - } - } - - void menuPrint() { - PrintDialog dialog = new PrintDialog(shell, SWT.NONE); - PrinterData data = dialog.open(); - if (data == null) return; - if (data.printToFile) { - data.fileName = "print.out"; // you probably want to ask the user for a filename - } - - /* Get the text to print from the Text widget (you could get it from anywhere, i.e. your java model) */ - textToPrint = text.getText(); - - /* Do the printing in a background thread so that spooling does not freeze the UI. */ - printer = new Printer(data); - Thread printingThread = new Thread("Printing") { - public void run() { - print(printer); - printer.dispose(); - } - }; - printingThread.start(); - } - - void print(Printer printer) { - if (printer.startJob("Text")) { // the string is the job name - shows up in the printer's job list - Rectangle clientArea = printer.getClientArea(); - Rectangle trim = printer.computeTrim(0, 0, 0, 0); - Point dpi = printer.getDPI(); - leftMargin = dpi.x + trim.x; // one inch from left side of paper - rightMargin = clientArea.width - dpi.x + trim.x + trim.width; // one inch from right side of paper - topMargin = dpi.y + trim.y; // one inch from top edge of paper - bottomMargin = clientArea.height - dpi.y + trim.y + trim.height; // one inch from bottom edge of paper - - /* Create a buffer for computing tab width. */ - int tabSize = 4; // is tab width a user setting in your UI? - StringBuffer tabBuffer = new StringBuffer(tabSize); - for (int i = 0; i < tabSize; i++) tabBuffer.append(' '); - tabs = tabBuffer.toString(); - - /* Create printer GC, and create and set the printer font & foreground color. */ - gc = new GC(printer); - - FontData fontData = font.getFontData()[0]; - printerFont = new Font(printer, fontData.getName(), fontData.getHeight(), fontData.getStyle()); - gc.setFont(printerFont); - tabWidth = gc.stringExtent(tabs).x; - lineHeight = gc.getFontMetrics().getHeight(); - - RGB rgb = foregroundColor.getRGB(); - printerForegroundColor = new Color(printer, rgb); - gc.setForeground(printerForegroundColor); - - rgb = backgroundColor.getRGB(); - printerBackgroundColor = new Color(printer, rgb); - gc.setBackground(printerBackgroundColor); - - /* Print text to current gc using word wrap */ - printText(); - printer.endJob(); - - /* Cleanup graphics resources used in printing */ - printerFont.dispose(); - printerForegroundColor.dispose(); - printerBackgroundColor.dispose(); - gc.dispose(); - } - } - - void printText() { - printer.startPage(); - wordBuffer = new StringBuffer(); - x = leftMargin; - y = topMargin; - index = 0; - end = textToPrint.length(); - while (index < end) { - char c = textToPrint.charAt(index); - index++; - if (c != 0) { - if (c == 0x0a || c == 0x0d) { - if (c == 0x0d && index < end && textToPrint.charAt(index) == 0x0a) { - index++; // if this is cr-lf, skip the lf - } - printWordBuffer(); - newline(); - } else { - if (c != '\t') { - wordBuffer.append(c); - } - if (Character.isWhitespace(c)) { - printWordBuffer(); - if (c == '\t') { - x += tabWidth; - } - } - } - } - } - if (y + lineHeight <= bottomMargin) { - printer.endPage(); - } - } - - void printWordBuffer() { - if (wordBuffer.length() > 0) { - String word = wordBuffer.toString(); - int wordWidth = gc.stringExtent(word).x; - if (x + wordWidth > rightMargin) { - /* word doesn't fit on current line, so wrap */ - newline(); - } - gc.drawString(word, x, y, false); - x += wordWidth; - wordBuffer = new StringBuffer(); - } - } - - void newline() { - x = leftMargin; - y += lineHeight; - if (y + lineHeight > bottomMargin) { - printer.endPage(); - if (index + 1 < end) { - y = topMargin; - printer.startPage(); - } - } - } -} |