jdk/test/javax/print/attribute/ServiceDialogTest.java
changeset 4595 84bc8a58537f
child 5506 202f599c92aa
equal deleted inserted replaced
4594:4ef018d37f45 4595:84bc8a58537f
       
     1 /*
       
     2  * Copyright 2004-2009 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    20  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    21  * have any questions.
       
    22  */
       
    23 
       
    24 
       
    25 /**
       
    26  * @test
       
    27  * @bug 4910388 4871089 4998624
       
    28  * @summary Confirm that
       
    29  *      1. After choosing Reverse Landscape in the system default print
       
    30  *       Print Service (2nd in the list), it
       
    31  *          will reset to portrait in "Test Printer"
       
    32  *      2. Print To File button is not cleared when switching between the
       
    33  *         2nd service (system default printer) and Test Printer.
       
    34  *      3. Make sure "Postscript" printer is the default and make sure the
       
    35  *         "print to file" button is disabled.  File Dialog should not be
       
    36  *         shown after pressing print button.
       
    37  *
       
    38  * @run main/manual ServiceDialogTest
       
    39  */
       
    40 import java.awt.*;
       
    41 import javax.print.*;
       
    42 import javax.print.attribute.standard.*;
       
    43 import javax.print.attribute.*;
       
    44 import javax.print.event.*;
       
    45 import java.io.*;
       
    46 import java.util.Locale;
       
    47 
       
    48 public class ServiceDialogTest {
       
    49         /**
       
    50          * Constructor
       
    51          */
       
    52          public ServiceDialogTest() {
       
    53                 super();
       
    54         }
       
    55         /**
       
    56          * Starts the application.
       
    57          */
       
    58         public static void main(java.lang.String[] args) {
       
    59                 ServiceDialogTest pd = new ServiceDialogTest();
       
    60                 PrintService services[] = new PrintService[3];
       
    61                 services[1] = PrintServiceLookup.lookupDefaultPrintService();
       
    62 
       
    63                 FileOutputStream fos = null;
       
    64                 File f = null;
       
    65                 String mType = "application/postscript";
       
    66                 DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;
       
    67                 try {
       
    68                         f = new File("streamexample.ps");
       
    69                         fos = new FileOutputStream(f);
       
    70                         StreamPrintServiceFactory[] factories = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, mType);
       
    71                         if (factories.length > 0) {
       
    72                                 services[0] = factories[0].getPrintService(fos);
       
    73                         } else {
       
    74                                 throw new RuntimeException("No StreamPrintService available which would support "+flavor");
       
    75                         }
       
    76 
       
    77                         services[2] = new TestPrintService("Test Printer");
       
    78 
       
    79             //System.out.println("is "+flavor+" supported? "+services[0].isDocFlavorSupported(flavor));
       
    80             //System.out.println("is Orientation supported? "+services[0].isAttributeCategorySupported(OrientationRequested.class));
       
    81             //System.out.println("is REVERSE PORTRAIT supported ? "+services[0].isAttributeValueSupported(OrientationRequested.REVERSE_PORTRAIT, flavor, null));
       
    82 
       
    83             HashPrintRequestAttributeSet prSet = new HashPrintRequestAttributeSet();
       
    84             prSet.add(new Destination(new File("./dest.prn").toURI()));
       
    85             PrintService selService = ServiceUI.printDialog(null, 200, 200, services, services[0], flavor, prSet);
       
    86                         Attribute attr[] = prSet.toArray();
       
    87                         for (int x = 0; x < attr.length; x ++) {
       
    88                                 System.out.println(attr[x]);
       
    89                         }
       
    90 
       
    91                         //DocPrintJob pj = service.createPrintJob();
       
    92                         //PrintDocument prDoc = new PrintDocument();
       
    93                         //pj.print(prDoc, null);
       
    94 
       
    95                 } catch (Exception e) {
       
    96                         e.printStackTrace();
       
    97                 }
       
    98         }
       
    99 }
       
   100 
       
   101 
       
   102 class TestPrintService implements PrintService
       
   103 {
       
   104 
       
   105     private static DocFlavor textByteFlavor = null;
       
   106     private static final DocFlavor supportedDocFlavors[] = (new DocFlavor[] {
       
   107              javax.print.DocFlavor.INPUT_STREAM.JPEG
       
   108     });
       
   109 
       
   110     private static final Class serviceAttrCats[] = (new Class[] {
       
   111              javax.print.attribute.standard.PrinterName.class
       
   112     });
       
   113 
       
   114     private static final Class otherAttrCats[] = (new Class [] {
       
   115              javax.print.attribute.standard.Copies.class,
       
   116              javax.print.attribute.standard.OrientationRequested.class,
       
   117              javax.print.attribute.standard.Destination.class,
       
   118     });
       
   119 
       
   120     private String printer = null;
       
   121 
       
   122     public TestPrintService() {
       
   123     }
       
   124 
       
   125     public TestPrintService(String printerName) {
       
   126         if (printerName == null) {
       
   127             throw new IllegalArgumentException("null printer name");
       
   128         } else {
       
   129             printer = printerName;
       
   130         }
       
   131     }
       
   132 
       
   133     public String getName()
       
   134     {
       
   135         return printer;
       
   136     }
       
   137 
       
   138 
       
   139     public DocPrintJob createPrintJob()
       
   140     {
       
   141         return  null;
       
   142     }
       
   143 
       
   144     public PrintServiceAttributeSet getUpdatedAttributes()
       
   145     {
       
   146         return null;
       
   147     }
       
   148 
       
   149 
       
   150     public void addPrintServiceAttributeListener(PrintServiceAttributeListener printserviceattributelistener)
       
   151     {
       
   152     }
       
   153 
       
   154     public void removePrintServiceAttributeListener(PrintServiceAttributeListener printserviceattributelistener)
       
   155     {
       
   156     }
       
   157 
       
   158     public PrintServiceAttribute getAttribute(Class category)
       
   159     {
       
   160         return null;
       
   161     }
       
   162 
       
   163     public PrintServiceAttributeSet getAttributes()
       
   164     {
       
   165         HashPrintServiceAttributeSet aSet = new HashPrintServiceAttributeSet();
       
   166             return aSet;
       
   167     }
       
   168 
       
   169     public DocFlavor[] getSupportedDocFlavors()
       
   170     {
       
   171         int i = supportedDocFlavors.length;
       
   172         DocFlavor adocflavor[] = new DocFlavor[i];
       
   173         System.arraycopy(supportedDocFlavors, 0, adocflavor, 0, i);
       
   174         return adocflavor;
       
   175     }
       
   176 
       
   177     public boolean isDocFlavorSupported(DocFlavor docflavor)
       
   178     {
       
   179         for (int i = 0; i < supportedDocFlavors.length; i++) {
       
   180             if (docflavor.equals(supportedDocFlavors[i])) {
       
   181                 return true;
       
   182             }
       
   183         }
       
   184         return false;
       
   185     }
       
   186 
       
   187     public Class[] getSupportedAttributeCategories()
       
   188     {
       
   189         int i = otherAttrCats.length;
       
   190         Class aclass[] = new Class[i];
       
   191         System.arraycopy(otherAttrCats, 0, aclass, 0, otherAttrCats.length);
       
   192         return aclass;
       
   193     }
       
   194 
       
   195     public boolean isAttributeCategorySupported(Class category)
       
   196     {
       
   197         if (category == null) {
       
   198             throw new NullPointerException("null category");
       
   199         }
       
   200 
       
   201         for (int i = 0; i < otherAttrCats.length; i++) {
       
   202             if (category == otherAttrCats[i]) {
       
   203                 return true;
       
   204             }
       
   205         }
       
   206         return false;
       
   207     }
       
   208 
       
   209     public boolean isAttributeValueSupported(Attribute attrval, DocFlavor flavor, AttributeSet attributes) {
       
   210 
       
   211         if (attrval == OrientationRequested.PORTRAIT)
       
   212                 return true;
       
   213         else if (attrval == OrientationRequested.LANDSCAPE)
       
   214                 return true;
       
   215                 else
       
   216                         return false;
       
   217     }
       
   218 
       
   219     public Object getDefaultAttributeValue(Class category)
       
   220     {
       
   221         if (category == null) {
       
   222             throw new NullPointerException("null category");
       
   223         }
       
   224         if (category == javax.print.attribute.standard.Copies.class)
       
   225                 return new Copies(1);
       
   226 
       
   227         if (category == javax.print.attribute.standard.OrientationRequested.class)
       
   228                 return OrientationRequested.PORTRAIT;
       
   229 
       
   230         return null;
       
   231     }
       
   232 
       
   233     public Object getSupportedAttributeValues(Class category, DocFlavor docflavor, AttributeSet attributeset)
       
   234     {
       
   235         if (category == null) {
       
   236             throw new NullPointerException("null category");
       
   237         }
       
   238 
       
   239         if (docflavor != null) {
       
   240             if (!isDocFlavorSupported(docflavor)) {
       
   241                 throw new IllegalArgumentException(docflavor + " is an unsupported flavor");
       
   242             }
       
   243         }
       
   244         if (!isAttributeCategorySupported(category)) {
       
   245             return null;
       
   246         }
       
   247         if (category == javax.print.attribute.standard.Copies.class ) {
       
   248                return new CopiesSupported(1, 5);
       
   249         }
       
   250         if (category == javax.print.attribute.standard.OrientationRequested.class ) {
       
   251                OrientationRequested req[] = { OrientationRequested.PORTRAIT, OrientationRequested.LANDSCAPE };
       
   252                return req;
       
   253         }
       
   254 
       
   255         return null;
       
   256     }
       
   257 
       
   258     public AttributeSet getUnsupportedAttributes(DocFlavor docflavor, AttributeSet attributeset) {
       
   259 
       
   260         if (docflavor != null && !isDocFlavorSupported(docflavor)) {
       
   261             throw new IllegalArgumentException("flavor " + docflavor + "is not supported");
       
   262         }
       
   263         if (attributeset == null) {
       
   264             return null;
       
   265         }
       
   266 
       
   267         HashAttributeSet hashattributeset = new HashAttributeSet();
       
   268         Attribute attributearray[] = attributeset.toArray();
       
   269         for (int i = 0; i < attributearray.length; i++) {
       
   270             try {
       
   271                 Attribute attribute = attributearray[i];
       
   272                 if (!isAttributeCategorySupported(attribute.getCategory())) {
       
   273                      hashattributeset.add(attribute);
       
   274                 } else {
       
   275                   if (!isAttributeValueSupported(attribute, docflavor, attributeset)) {
       
   276                      hashattributeset.add(attribute);
       
   277                   }
       
   278                 }
       
   279             }
       
   280             catch (ClassCastException classcastexception) {
       
   281 
       
   282             }
       
   283         }
       
   284 
       
   285         if (hashattributeset.isEmpty()) {
       
   286             return null;
       
   287         }
       
   288         return hashattributeset;
       
   289     }
       
   290 
       
   291     public ServiceUIFactory getServiceUIFactory() {
       
   292         return null;
       
   293     }
       
   294 
       
   295     public String toString() {
       
   296         return "Printer : " + getName();
       
   297     }
       
   298 
       
   299     public boolean equals(Object obj) {
       
   300         return obj == this || (obj instanceof TestPrintService) && ((TestPrintService)obj).getName().equals(getName());
       
   301     }
       
   302 
       
   303     public int hashCode() {
       
   304         return getClass().hashCode() + getName().hashCode();
       
   305     }
       
   306 
       
   307 }