PrintArcTest.java revision 14851:980da45565c8
1/*
2 * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @key headful
27 * @bug 4105609
28 * @summary Test printing of drawArc preceded by drawString
29 * @author robi.khan
30 */
31
32import java.awt.*;
33import java.awt.event.*;
34
35public class PrintArcTest extends Panel implements ActionListener {
36    PrintCanvas canvas;
37
38    public PrintArcTest () {
39        setLayout(new BorderLayout());
40        canvas = new PrintCanvas ();
41        add("North", canvas);
42
43        Button b = new Button("Click Me to Print!");
44        b.setActionCommand ("print");
45        b.addActionListener (this);
46        add("South", b);
47        validate();
48    }
49
50
51    public void actionPerformed(ActionEvent e) {
52        String cmd = e.getActionCommand();
53        if (cmd.equals("print")) {
54            PrintJob pjob = getToolkit().getPrintJob(getFrame(), "Printing Test", null);
55            if (pjob != null) {
56                Graphics pg = pjob.getGraphics();
57
58                if (pg != null)  {
59                    canvas.printAll(pg);
60                    pg.dispose();  //flush page
61                }
62                pjob.end();
63            }
64        }
65    }
66
67    private Frame getFrame() {
68        Container cont = getParent();;
69
70        while ( !(cont instanceof Frame  ) ) {
71            cont = cont.getParent();
72        }
73
74        return (Frame)cont;
75    }
76
77    public static void main(String args[]) {
78        PrintArcTest test = new PrintArcTest();
79        Frame   f = new Frame( "PrintArcTest for Bug #4105609");
80        f.add( test );
81        f.setSize(500,400);
82        f.show();
83        f.addWindowListener( new WindowAdapter() {
84                                        public void windowClosing(WindowEvent ev) {
85                                            System.exit(0);
86                                        }
87                                    }
88                            );
89    }
90}
91
92class PrintCanvas extends Canvas {
93    public Dimension getPreferredSize() {
94            return new Dimension(300,300);
95    }
96
97    public void paint (Graphics g) {
98        g.drawString("drawArc(25,50,150,100,45,90);",25,25);
99        g.drawArc(25,50,150,100,45,90);
100
101        g.drawString("drawOval(25,200,200,40);",25,175);
102        g.drawOval(25,200,200,40);
103
104        g.dispose();
105    }
106}
107