JAL-3026 srcjar files for VARNA and log4j
[jalview.git] / srcjar / fr / orsay / lri / varna / applications / VARNAPrinter.java
diff --git a/srcjar/fr/orsay/lri/varna/applications/VARNAPrinter.java b/srcjar/fr/orsay/lri/varna/applications/VARNAPrinter.java
new file mode 100644 (file)
index 0000000..6dbc332
--- /dev/null
@@ -0,0 +1,51 @@
+package fr.orsay.lri.varna.applications;
+
+import java.awt.*;
+import javax.swing.*;
+import java.awt.print.*;
+
+public class VARNAPrinter implements Printable {
+  private Component componentToBePrinted;
+
+  public static void printComponent(Component c) {
+    new VARNAPrinter(c).print();
+  }
+  
+  public VARNAPrinter(Component componentToBePrinted) {
+    this.componentToBePrinted = componentToBePrinted;
+  }
+  
+  public void print() {
+    PrinterJob printJob = PrinterJob.getPrinterJob();
+    printJob.setPrintable(this);
+    if (printJob.printDialog())
+      try {
+        printJob.print();
+      } catch(PrinterException pe) {
+        //System.out.println("Error printing: " + pe);
+      }
+  }
+
+  public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
+    if (pageIndex > 0) {
+      return(NO_SUCH_PAGE);
+    } else {
+      Graphics2D g2d = (Graphics2D)g;
+      g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
+      disableDoubleBuffering(componentToBePrinted);
+      componentToBePrinted.paint(g2d);
+      enableDoubleBuffering(componentToBePrinted);
+      return(PAGE_EXISTS);
+    }
+  }
+
+  public static void disableDoubleBuffering(Component c) {
+    RepaintManager currentManager = RepaintManager.currentManager(c);
+    currentManager.setDoubleBufferingEnabled(false);
+  }
+
+  public static void enableDoubleBuffering(Component c) {
+    RepaintManager currentManager = RepaintManager.currentManager(c);
+    currentManager.setDoubleBufferingEnabled(true);
+  }
+}