blob: e15eebf9bc42db589449a779bb9a520096f35d23 [file] [log] [blame]
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4414987
* @author Jennifer Godinez
* @summary Displays width & height of validated custom paper size
* @run main/manual ValidateCustom
*/
import java.awt.*;
import java.awt.print.*;
import java.awt.geom.*;
import javax.swing.*;
public class ValidateCustom implements Pageable, Printable{
private static double PIXELS_PER_INCH = 72.0;
private static double WIDTH = 17.0; //width of paper in inches
private static double LENGTH = 24.0; //length of paper in inches
private static boolean VALIDATE = true;
private PrinterJob printerJob;
private PageFormat pageFormat;
ValidateCustom(){
printerJob = PrinterJob.getPrinterJob();
createPageFormat();
}
private void createPageFormat(){
pageFormat = new PageFormat();
Paper p = new Paper();
double width = WIDTH*PIXELS_PER_INCH;
double height = LENGTH*PIXELS_PER_INCH;
double ix = PIXELS_PER_INCH;
double iy = PIXELS_PER_INCH;
double iwidth = width - 2.0*PIXELS_PER_INCH;
double iheight = height - 2.0*PIXELS_PER_INCH;
p.setSize(width, height);
p.setImageableArea(ix, iy, iwidth, iheight);
pageFormat.setPaper(p);
}
public Printable getPrintable(int index){
return this;
}
public PageFormat getPageFormat(int index){
return pageFormat;
}
public int getNumberOfPages(){
return 1;
}
private void printPaperSize(PageFormat pf){
Paper p = pf.getPaper();
System.out.println("paper size = ("+p.getWidth()+", "+p.getHeight()+")");
}
public void print(){
//if(printerJob.printDialog())
{
try{
//printPaperSize(pageFormat);
if(VALIDATE){
this.pageFormat = printerJob.validatePage(this.pageFormat);
}
printPaperSize(pageFormat);
//printerJob.setPageable(this);
//printerJob.print();
}catch(Exception e){e.printStackTrace();}
}
}
public int print(Graphics g, PageFormat pf, int pageIndex){
if(pageIndex == 0){
Graphics2D g2 = (Graphics2D)g;
Rectangle2D r = new Rectangle2D.Double(PIXELS_PER_INCH, PIXELS_PER_INCH, PIXELS_PER_INCH, PIXELS_PER_INCH);
g2.setStroke(new BasicStroke(1.0f));
g2.draw(r);
return PAGE_EXISTS;
}else{
return NO_SUCH_PAGE;
}
}
public static void main(String[] args){
System.out.println("-----------------instructions--------------------");
System.out.println("You must have a printer installed in your system \nthat supports custom paper sizes in order to run this test.");
System.out.println("Passing test will display the correct width & height\nof custom paper in 1/72nds of an inch.\n");
System.out.println("-------------------------------------------------");
ValidateCustom pt = new ValidateCustom();
pt.print();
try{
System.in.read();
}catch(Exception e){}
}
}