/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.dicom.explorer.pref.node; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import org.weasis.core.api.media.data.TagUtil; import org.weasis.core.ui.util.PrintOptions; import org.weasis.dicom.codec.TransferSyntax; import org.weasis.dicom.explorer.print.DicomPrintDialog.FilmSize; import org.weasis.dicom.explorer.print.DicomPrintOptions; public class DicomPrintNode extends DefaultDicomNode { private static final String T_MEDIUM_TYPE = "mediumType"; //$NON-NLS-1$ private static final String T_PRIORITY = "priority"; //$NON-NLS-1$ private static final String T_FILM_DEST = "filmDestination"; //$NON-NLS-1$ private static final String T_NUM_COPIES = "numberOfCopies";//$NON-NLS-1$ private static final String T_COLOR = "colorPrint";//$NON-NLS-1$ private static final String T_FILM_ORIENTATION = "filmOrientation"; //$NON-NLS-1$ private static final String T_FILM_SIZE = "filmSizeId";//$NON-NLS-1$ private static final String T_IMG_DISP_FORMAT = "imageDisplayFormat"; //$NON-NLS-1$ private static final String T_MAGNIFICATION_TYPE = "magnificationType"; //$NON-NLS-1$ private static final String T_SMOOTHING_TYPE = "smoothingType"; //$NON-NLS-1$ private static final String T_BORDER_DENSITY = "borderDensity"; //$NON-NLS-1$ private static final String T_TRIM = "trim"; //$NON-NLS-1$ private static final String T_EMPTY_DENSITY = "emptyDensity"; //$NON-NLS-1$ private static final String T_SHOW_ANNOTATIONS = "showingAnnotations"; //$NON-NLS-1$ private static final String T_PRINT_SEL_VIEW = "printOnlySelectedView"; //$NON-NLS-1$ private static final String T_DPI = "dpi"; //$NON-NLS-1$ private final DicomPrintOptions printOptions; public DicomPrintNode(String description, String aeTitle, String hostname, Integer port) { this(description, aeTitle, hostname, port, null); } public DicomPrintNode(String description, String aeTitle, String hostname, Integer port, DicomPrintOptions printOptions) { super(description, aeTitle, hostname, port, UsageType.STORAGE); this.printOptions = printOptions == null ? new DicomPrintOptions() : printOptions; } public DicomPrintOptions getPrintOptions() { return printOptions; } @Override public void saveDicomNode(XMLStreamWriter writer) throws XMLStreamException { super.saveDicomNode(writer); writer.writeAttribute(T_MEDIUM_TYPE, printOptions.getMediumType()); writer.writeAttribute(T_PRIORITY, printOptions.getPriority()); writer.writeAttribute(T_FILM_DEST, printOptions.getFilmDestination()); writer.writeAttribute(T_NUM_COPIES, String.valueOf(printOptions.getNumOfCopies())); writer.writeAttribute(T_COLOR, Boolean.toString(printOptions.isColorPrint())); writer.writeAttribute(T_FILM_ORIENTATION, printOptions.getFilmOrientation()); writer.writeAttribute(T_FILM_SIZE, printOptions.getFilmSizeId().name()); writer.writeAttribute(T_IMG_DISP_FORMAT, printOptions.getImageDisplayFormat()); writer.writeAttribute(T_MAGNIFICATION_TYPE, printOptions.getMagnificationType()); writer.writeAttribute(T_SMOOTHING_TYPE, printOptions.getSmoothingType()); writer.writeAttribute(T_BORDER_DENSITY, printOptions.getBorderDensity()); writer.writeAttribute(T_TRIM, printOptions.getTrim()); writer.writeAttribute(T_EMPTY_DENSITY, printOptions.getEmptyDensity()); writer.writeAttribute(T_SHOW_ANNOTATIONS, Boolean.toString(printOptions.isShowingAnnotations())); writer.writeAttribute(T_PRINT_SEL_VIEW, Boolean.toString(printOptions.isPrintOnlySelectedView())); writer.writeAttribute(T_DPI, printOptions.getDpi().name()); } public static DicomPrintNode buildDicomPrintNode(XMLStreamReader xmler) { DicomPrintNode node = new DicomPrintNode(xmler.getAttributeValue(null, T_DESCRIPTION), xmler.getAttributeValue(null, T_AETITLE), xmler.getAttributeValue(null, T_HOST), TagUtil.getIntegerTagAttribute(xmler, T_PORT, 104)); node.setTsuid(TransferSyntax.getTransferSyntax(xmler.getAttributeValue(null, T_TSUID))); node.printOptions .setMediumType(TagUtil.getTagAttribute(xmler, T_MEDIUM_TYPE, DicomPrintOptions.DEF_MEDIUM_TYPE)); node.printOptions.setPriority(TagUtil.getTagAttribute(xmler, T_PRIORITY, DicomPrintOptions.DEF_PRIORITY)); node.printOptions .setFilmDestination(TagUtil.getTagAttribute(xmler, T_FILM_DEST, DicomPrintOptions.DEF_FILM_DEST)); node.printOptions .setNumOfCopies(TagUtil.getIntegerTagAttribute(xmler, T_NUM_COPIES, DicomPrintOptions.DEF_NUM_COPIES)); node.printOptions.setColorPrint(TagUtil.getBooleanTagAttribute(xmler, T_COLOR, DicomPrintOptions.DEF_COLOR)); node.printOptions.setFilmOrientation( TagUtil.getTagAttribute(xmler, T_FILM_ORIENTATION, DicomPrintOptions.DEF_FILM_ORIENTATION)); node.printOptions.setFilmSizeId( FilmSize.getInstance(xmler.getAttributeValue(null, T_FILM_SIZE), DicomPrintOptions.DEF_FILM_SIZE)); node.printOptions.setImageDisplayFormat( TagUtil.getTagAttribute(xmler, T_IMG_DISP_FORMAT, DicomPrintOptions.DEF_IMG_DISP_FORMAT)); node.printOptions.setMagnificationType( TagUtil.getTagAttribute(xmler, T_MAGNIFICATION_TYPE, DicomPrintOptions.DEF_MAGNIFICATION_TYPE)); node.printOptions .setSmoothingType(TagUtil.getTagAttribute(xmler, T_SMOOTHING_TYPE, DicomPrintOptions.DEF_SMOOTHING_TYPE)); node.printOptions .setBorderDensity(TagUtil.getTagAttribute(xmler, T_BORDER_DENSITY, DicomPrintOptions.DEF_BORDER_DENSITY)); node.printOptions.setTrim(TagUtil.getTagAttribute(xmler, T_TRIM, DicomPrintOptions.DEF_TRIM)); node.printOptions .setEmptyDensity(TagUtil.getTagAttribute(xmler, T_EMPTY_DENSITY, DicomPrintOptions.DEF_EMPTY_DENSITY)); node.printOptions.setShowingAnnotations( TagUtil.getBooleanTagAttribute(xmler, T_SHOW_ANNOTATIONS, DicomPrintOptions.DEF_SHOW_ANNOTATIONS)); node.printOptions.setPrintOnlySelectedView( TagUtil.getBooleanTagAttribute(xmler, T_PRINT_SEL_VIEW, DicomPrintOptions.DEF_PRINT_SEL_VIEW)); node.printOptions.setDpi( PrintOptions.DotPerInches.getInstance(xmler.getAttributeValue(null, T_DPI), DicomPrintOptions.DEF_DPI)); return node; } }