0N/A/*
2362N/A * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/Apackage sun.swing.text;
0N/A
0N/Aimport java.util.*;
0N/Aimport java.awt.Graphics;
0N/Aimport java.awt.print.*;
0N/A
0N/A
0N/A/**
0N/A * Printable to merge multiple printables into one.
0N/A *
0N/A * @author Igor Kushnirskiy
0N/A *
0N/A * @since 1.6
0N/A */
0N/Aclass CompoundPrintable implements CountingPrintable {
0N/A private final Queue<CountingPrintable> printables;
0N/A private int offset = 0;
0N/A
0N/A public CompoundPrintable(List<CountingPrintable> printables) {
0N/A this.printables = new LinkedList<CountingPrintable>(printables);
0N/A }
0N/A
0N/A public int print(final Graphics graphics,
0N/A final PageFormat pf,
0N/A final int pageIndex) throws PrinterException {
0N/A int ret = NO_SUCH_PAGE;
0N/A while (printables.peek() != null) {
0N/A ret = printables.peek().print(graphics, pf, pageIndex - offset);
0N/A if (ret == PAGE_EXISTS) {
0N/A break;
0N/A } else {
0N/A offset += printables.poll().getNumberOfPages();
0N/A }
0N/A }
0N/A return ret;
0N/A }
0N/A
0N/A /**
0N/A * Returns the number of pages in this printable.
0N/A * <p>
0N/A * This number is defined only after {@code print} returns NO_SUCH_PAGE.
0N/A *
0N/A * @return the number of pages.
0N/A */
0N/A public int getNumberOfPages() {
0N/A return offset;
0N/A }
0N/A
0N/A}