public void setAttribute(final Attribute attr) { final Class<? extends Attribute> category = attr.getCategory(); if (OrientationRequested.class.equals(category)) { setOrientation((OrientationRequested) attr); } else if (MediaSize.class.equals(category)) { setPaper((MediaSize) attr); } else if (Media.class.equals(category)) { setPaper((MediaSizeName) attr); } else if (Paper.class.equals(category)) { setPaper((Paper) attr); } else if (Copies.class.equals(category)) { setCopies((Copies) attr); } else if (PrintQuality.class.equals(category)) { setPrintQuality((PrintQuality) attr); } else if (Sides.class.equals(category)) { setSides((Sides) attr); } else if (SheetCollate.class.equals(category)) { setCollate((SheetCollate) attr); } else if (PrinterResolution.class.equals(category)) { setPrinterResolution((PrinterResolution) attr); } else if (Chromaticity.class.equals(category)) { setChromaticity((Chromaticity) attr); } }
public Object getDefaultAttributeValue(Class category) { if (category.equals(JobName.class)) { return new JobName("Java GDI client print job", Locale.US); } else if (category.equals(RequestingUserName.class)) { return new RequestingUserName(System.getProperty("user.name"), Locale.US); } else if (category.equals(Destination.class)) { File file = new File(System.getProperty("user.dir") + File.separator + "output.prn"); return new Destination(file.toURI()); } else if (category.equals(SheetCollate.class)) { return SheetCollate.COLLATED; } else if (category.equals(Copies.class)) { return new Copies(1); } return null; }
private void setCollateAttrib(Attribute attr) { if (attr == SheetCollate.COLLATED) { mAttCollate = 1; // DMCOLLATE_TRUE } else { mAttCollate = 0; // DMCOLLATE_FALSE } }
final public void actionPerformed(ActionEvent e) { if (this.objGcollateJCheckBox.isSelected()) { this.objGprintJDialog.getAttributes().add(SheetCollate.COLLATED); } else { this.objGprintJDialog.getAttributes().add(SheetCollate.UNCOLLATED); } }
private static void printTest() { ServiceDlgSheetCollateTest pd = new ServiceDlgSheetCollateTest(); DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG; //DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; PrintService defService = null, service[] = null; defService = PrintServiceLookup.lookupDefaultPrintService(); service = PrintServiceLookup.lookupPrintServices(flavor, null); if ((service == null) || (service.length == 0)) { throw new RuntimeException("No Printer services found"); } if (defService != null) { System.out.println("\nDefault print service: " + service ); System.out.println("is flavor: "+flavor+" supported? "+ defService.isDocFlavorSupported(flavor)); System.out.println("is SheetCollate category supported? "+ defService.isAttributeCategorySupported(SheetCollate.class)); System.out.println("is SheetCollate.COLLATED value supported ? "+ defService.isAttributeValueSupported(SheetCollate.COLLATED, flavor, null)); } HashPrintRequestAttributeSet prSet = new HashPrintRequestAttributeSet(); try { PrintService selService = ServiceUI.printDialog(null, 200, 200, service, defService, flavor, prSet); } catch (IllegalArgumentException ia) { System.out.println("Exception thrown : " + ia); } System.out.println("\nSelected Values\n"); Attribute attr[] = prSet.toArray(); for (int x = 0; x < attr.length; x ++) { System.out.println("Attribute: " + attr[x].getName() + " Value: " + attr[x]); } }
public void stateChanged(ChangeEvent event) { int value = ((Integer) copies.getValue()).intValue(); atts.add(new Copies(value)); if (value > 1 && categorySupported(SheetCollate.class)) sort.setEnabled(true); else sort.setEnabled(false); }
public Object getDefaultAttributeValue( final Class<? extends Attribute> category) { checkArgs(category, null); final DevmodeStructWrapper dm = getDefaultPrinterProps(); if (JobName.class.equals(category)) { return DEFAULT_JOB_NAME; } else if (RequestingUserName.class.equals(category)) { return new RequestingUserName(getSystemProperty("user.name"), //$NON-NLS-1$ null); } else if (Destination.class.equals(category)) { File file = new File(getSystemProperty("user.dir") //$NON-NLS-1$ + File.separator + "output.prn"); //$NON-NLS-1$ return new Destination(file.toURI()); } else if (OrientationRequested.class.equals(category)) { return dm.getOrientation(); } else if (Paper.class.equals(category)) { return getDefaultPaper(); } else if (Media.class.equals(category)) { return getDefaultPaper().getSize().getMediaSizeName(); } else if (MediaSize.class.equals(category)) { return getDefaultPaper().getSize(); } else if (PrintQuality.class.equals(category)) { return dm.getPrintQuality(); } else if (Sides.class.equals(category)) { return dm.getSides(); } else if (Copies.class.equals(category)) { return dm.getCopies(); } else if (SheetCollate.class.equals(category)) { return dm.getCollate(); } else if (PrinterResolution.class.equals(category)) { return dm.getPrinterResolution(); } else if (Chromaticity.class.equals(category)) { return dm.getChromaticity(); } return null; }
public void setCollate(final SheetCollate collate) { if (SheetCollate.UNCOLLATED.equals(collate)) { setDmCollate(structPtr, DMCOLLATE_FALSE); } else if (SheetCollate.COLLATED.equals(collate)) { setDmCollate(structPtr, DMCOLLATE_TRUE); } }
public Class[] getSupportedAttributeCategories() { ArrayList supportedCategories = new ArrayList(); if (getCopiesSupported(serviceName) >= 1) { supportedCategories.add(Copies.class); } if (getSidesSupported(serviceName)) { supportedCategories.add(Sides.class); } if (getSupportedMediaSizeNames() != null) { supportedCategories.add(Media.class); } if (getResolutionsSupported(serviceName) != null) { supportedCategories.add(PrinterResolution.class); } if (getOrientationSupported(serviceName)) { supportedCategories.add(OrientationRequested.class); } if (getCollateSupported(serviceName)) { supportedCategories.add(SheetCollate.class); } supportedCategories.add(Chromaticity.class); supportedCategories.add(JobName.class); supportedCategories.add(RequestingUserName.class); supportedCategories.add(Destination.class); Class[] categories = new Class[supportedCategories.size()]; supportedCategories.toArray(categories); return categories; }
void fillCollateBox() { boolean isSupported = myService.isAttributeCategorySupported(SheetCollate.class); SheetCollate [] supported = (SheetCollate []) (myService .getSupportedAttributeValues(SheetCollate.class, flavor, attrs)); Attribute attr = attrs.get(SheetCollate.class); int spinnerValue = ((Integer) cpSpinner.getValue()).intValue(); if ((supported == null) || !isSupported) { if (attrs.containsKey(SheetCollate.class)) { collateBox.setSelected(attr.equals(SheetCollate.COLLATED)); } } else { boolean isValueSupported = myService.isAttributeValueSupported( SheetCollate.COLLATED, flavor, attrs); if (attrs.containsKey(SheetCollate.class) && isValueSupported) { collateBox.setSelected(attr.equals(SheetCollate.COLLATED)); } else { Object defaul = myService.getDefaultAttributeValue(SheetCollate.class); collateBox.setSelected(defaul != null ? defaul.equals(SheetCollate.COLLATED) : true); } } collateBox.setEnabled(isSupported && (spinnerValue > 1) && (!(supported == null || supported.length <= 1))); }
private void updateCollate() { if (collateBox.isEnabled()) { newAttrs.add(collateBox.isSelected() ? SheetCollate.COLLATED : SheetCollate.UNCOLLATED); } else { removeAttribute(SheetCollate.class); } }
public boolean isAttributeValueSupported(Attribute attr, DocFlavor flavor, AttributeSet attributes) { if (attr == null) { throw new NullPointerException("null attribute"); } if (flavor != null && !isDocFlavorSupported(flavor)) { throw new IllegalArgumentException(flavor + " is an unsupported flavor"); } Class category = attr.getCategory(); if (!isAttributeCategorySupported(category)) { return false; } else if (attr.getCategory() == Chromaticity.class) { return attr == Chromaticity.COLOR; } else if (attr.getCategory() == Copies.class) { return isSupportedCopies((Copies)attr); } else if (attr.getCategory() == Media.class && attr instanceof MediaSizeName) { return isSupportedMedia((MediaSizeName)attr); } else if (attr.getCategory() == OrientationRequested.class) { if (attr == OrientationRequested.REVERSE_PORTRAIT || (flavor != null) && !(flavor.equals(DocFlavor.SERVICE_FORMATTED.PAGEABLE) || flavor.equals(DocFlavor.SERVICE_FORMATTED.PRINTABLE))) { return false; } } else if (attr.getCategory() == PageRanges.class) { if (flavor != null && !(flavor.equals(DocFlavor.SERVICE_FORMATTED.PAGEABLE) || flavor.equals(DocFlavor.SERVICE_FORMATTED.PRINTABLE))) { return false; } } else if (attr.getCategory() == SheetCollate.class) { if (flavor != null && !(flavor.equals(DocFlavor.SERVICE_FORMATTED.PAGEABLE) || flavor.equals(DocFlavor.SERVICE_FORMATTED.PRINTABLE))) { return false; } } else if (attr.getCategory() == Sides.class) { if (flavor != null && !(flavor.equals(DocFlavor.SERVICE_FORMATTED.PAGEABLE) || flavor.equals(DocFlavor.SERVICE_FORMATTED.PRINTABLE))) { return false; } } return true; }
/** * copy the attributes to the native print job * Note that this method, and hence the re-initialisation * of the GDI values is done on each entry to the print dialog since * an app could redisplay the print dialog for the same job and * 1) the application may have changed attribute settings * 2) the application may have changed the printer. * In the event that the user changes the printer using the dialog, then it is up to GDI to report back all changed values. */ @Override protected void setAttributes(PrintRequestAttributeSet attributes) throws PrinterException { // initialize attribute values initAttributeMembers(); super.setAttributes(attributes); mAttCopies = getCopiesInt(); mDestination = destinationAttr; if (attributes == null) { return; // now always use attributes, so this shouldn't happen. } Attribute[] attrs = attributes.toArray(); for (int i=0; i< attrs.length; i++) { Attribute attr = attrs[i]; try { if (attr.getCategory() == Sides.class) { setSidesAttrib(attr); } else if (attr.getCategory() == Chromaticity.class) { setColorAttrib(attr); } else if (attr.getCategory() == PrinterResolution.class) { setResolutionAttrib(attr); } else if (attr.getCategory() == PrintQuality.class) { setQualityAttrib(attr); } else if (attr.getCategory() == SheetCollate.class) { setCollateAttrib(attr); } else if (attr.getCategory() == Media.class || attr.getCategory() == SunAlternateMedia.class) { /* SunAlternateMedia is used if its a tray, and * any Media that is specified is not a tray. */ if (attr.getCategory() == SunAlternateMedia.class) { Media media = (Media)attributes.get(Media.class); if (media == null || !(media instanceof MediaTray)) { attr = ((SunAlternateMedia)attr).getMedia(); } } if (attr instanceof MediaSizeName) { setWin32MediaAttrib(attr); } if (attr instanceof MediaTray) { setMediaTrayAttrib(attr); } } } catch (ClassCastException e) { } } }
private final void setNativeAttributes(int flags, int fields, int values) { if (attributes == null) { return; } if ((flags & PD_PRINTTOFILE) != 0) { Destination destPrn = (Destination)attributes.get( Destination.class); if (destPrn == null) { try { attributes.add(new Destination( new File("./out.prn").toURI())); } catch (SecurityException se) { try { attributes.add(new Destination( new URI("file:out.prn"))); } catch (URISyntaxException e) { } } } } else { attributes.remove(Destination.class); } if ((flags & PD_COLLATE) != 0) { setCollateAttrib(SheetCollate.COLLATED, attributes); } else { setCollateAttrib(SheetCollate.UNCOLLATED, attributes); } if ((flags & PD_PAGENUMS) != 0) { attributes.add(SunPageSelection.RANGE); } else if ((flags & PD_SELECTION) != 0) { attributes.add(SunPageSelection.SELECTION); } else { attributes.add(SunPageSelection.ALL); } if ((fields & DM_ORIENTATION) != 0) { if ((values & SET_ORIENTATION) != 0) { setOrientAttrib(OrientationRequested.LANDSCAPE, attributes); } else { setOrientAttrib(OrientationRequested.PORTRAIT, attributes); } } if ((fields & DM_COLOR) != 0) { if ((values & SET_COLOR) != 0) { setColorAttrib(Chromaticity.COLOR, attributes); } else { setColorAttrib(Chromaticity.MONOCHROME, attributes); } } if ((fields & DM_PRINTQUALITY) != 0) { PrintQuality quality; if ((values & SET_RES_LOW) != 0) { quality = PrintQuality.DRAFT; } else if ((fields & SET_RES_HIGH) != 0) { quality = PrintQuality.HIGH; } else { quality = PrintQuality.NORMAL; } setQualityAttrib(quality, attributes); } if ((fields & DM_DUPLEX) != 0) { Sides sides; if ((values & SET_DUP_VERTICAL) != 0) { sides = Sides.TWO_SIDED_LONG_EDGE; } else if ((values & SET_DUP_HORIZONTAL) != 0) { sides = Sides.TWO_SIDED_SHORT_EDGE; } else { sides = Sides.ONE_SIDED; } setSidesAttrib(sides, attributes); } }