1 21 22 package org.armedbear.j; 23 24 import java.awt.print.Book ; 25 import java.awt.print.PrinterException ; 26 import java.awt.print.PrinterJob ; 27 28 public final class PrintCommands 29 { 30 public static void print() 31 { 32 final Editor editor = Editor.currentEditor(); 33 if (editor.getMark() != null && 34 editor.getMarkLine() != editor.getDotLine() && 35 editor.getDotOffset() == 0 && 36 editor.getMarkOffset() == 0) { 37 printRegion(); 38 } else { 39 printBuffer(); 40 } 41 } 42 43 public static void printRegion() 44 { 45 final Editor editor = Editor.currentEditor(); 46 if (editor.getMark() == null) 47 return; 48 if (editor.getMarkLine() == editor.getDotLine()) 49 return; 50 if (editor.getDotOffset() != 0) 51 return; 52 if (editor.getMarkOffset() != 0) 53 return; 54 Region r = new Region(editor); 55 int lineCount = r.getEndLine().lineNumber() - r.getBeginLine().lineNumber(); 56 final String title = "Print Region"; 57 FastStringBuffer sb = new FastStringBuffer("Print selected region ("); 58 sb.append(lineCount); 59 sb.append(" line"); 60 if (lineCount > 1) 61 sb.append('s'); 62 sb.append(")?"); 63 String prompt = sb.toString(); 64 if (!editor.confirm(title, prompt)) 65 return; 66 editor.setWaitCursor(); 67 PrinterJob job = PrinterJob.getPrinterJob(); 68 PageFormat pageFormat = new PageFormat(editor, r); 69 PrintPainter painter = new PrintPainter(editor, r); 70 Book book = new Book (); 71 int pages = lineCount / pageFormat.getLinesPerPage(); 72 if (lineCount % pageFormat.getLinesPerPage() != 0) 73 ++pages; 74 book.append(painter, pageFormat, pages); pageFormat.setPageCount(pages); 76 job.setPageable(book); 77 try { 78 job.print(); 79 } 80 catch (PrinterException e) { 81 Log.error(e); 82 } 83 editor.setDefaultCursor(); 84 } 85 86 public static void printBuffer() 87 { 88 final Editor editor = Editor.currentEditor(); 89 final Buffer buffer = editor.getBuffer(); 90 final String title = "Print Buffer"; 91 int lineCount = buffer.getLineCount(); 92 FastStringBuffer sb = new FastStringBuffer("Print current buffer in its entirety ("); 93 sb.append(lineCount); 94 sb.append(" line"); 95 if (lineCount > 1) 96 sb.append('s'); 97 sb.append(")?"); 98 String prompt = sb.toString(); 99 if (!editor.confirm(title, prompt)) 100 return; 101 editor.setWaitCursor(); 102 PrinterJob job = PrinterJob.getPrinterJob(); 103 PageFormat pageFormat = new PageFormat(editor, null); 104 PrintPainter painter = new PrintPainter(editor); 105 Book book = new Book (); 106 int pages = lineCount / pageFormat.getLinesPerPage(); 107 if (lineCount % pageFormat.getLinesPerPage() != 0) 108 ++pages; 109 book.append(painter, pageFormat, pages); pageFormat.setPageCount(pages); 111 job.setPageable(book); 112 try { 113 job.print(); 114 } 115 catch (PrinterException e) { 116 Log.error(e); 117 } 118 editor.setDefaultCursor(); 119 } 120 } 121 | Popular Tags |