1 /*
   2  * Copyright (c) 2010, 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 6195901 6195923 6195928 6195933 6491273 6888734
  28  * @summary No SecurityException should be thrown when printing to a file
  29             using the given policy.
  30             Print to file option should be selected.
  31  * @run main/othervm/policy=policy SecurityDialogTest
  32  */
  33 import java.awt.*;
  34 import java.awt.event.*;
  35 import java.util.*;
  36 import java.io.*;
  37 
  38 
  39 public class SecurityDialogTest extends Frame implements ActionListener {
  40     // Declare things used in the test, like buttons and labels here
  41 
  42     Button nativeDlg, setSecurity;
  43         boolean isNative = true;
  44 
  45     public SecurityDialogTest() {
  46 
  47         nativeDlg = new Button("Print Dialog");
  48         nativeDlg.addActionListener(this);
  49         setSecurity = new Button("Toggle Dialog");
  50         setSecurity.addActionListener(this);
  51         add("South", nativeDlg);
  52         add("North", setSecurity);
  53         setSize(300, 300);
  54         setVisible(true);
  55     }
  56 
  57     public static void main(String args[]) {
  58         System.out.println("Native dialog is the default");
  59         SecurityDialogTest test = new SecurityDialogTest();
  60     }
  61 
  62     public void actionPerformed(ActionEvent e) {
  63 
  64         if (e.getSource() == setSecurity) {
  65             if (isNative) {
  66                 isNative = false;
  67                 System.out.println("Common dialog is the default");
  68 
  69             } else {
  70                 isNative = true;
  71                 System.out.println("Native dialog is the default");
  72             }
  73             return;
  74         }
  75 
  76         JobAttributes  ja = new JobAttributes();
  77         PageAttributes pa = new PageAttributes();
  78 
  79         if (isNative) {
  80             ja.setDialog(JobAttributes.DialogType.NATIVE);
  81         } else {
  82             ja.setDialog(JobAttributes.DialogType.COMMON);
  83         }
  84         ja.setDestination(JobAttributes.DestinationType.FILE);
  85         ja.setFileName("mohan.ps");
  86 
  87 
  88         PrintJob pjob = getToolkit().getPrintJob(this, null, ja, pa);
  89 
  90         if (pjob != null) {
  91             Graphics pg = pjob.getGraphics();
  92             System.out.println("PJOB: " + pjob);
  93             if (pg != null) {
  94                 System.out.println("Printer Graphics: " + pg);
  95                 this.printAll(pg);
  96                 pg.dispose();
  97             } else {
  98                 System.out.println("Printer Graphics is null");
  99             }
 100             pjob.end();
 101             System.out.println("DONE");
 102         } else {
 103             System.out.println("PJOB is null");
 104         }
 105     }
 106 }