Search in sources :

Example 1 with PrintTask

use of megameklab.com.printing.PrintTask in project megameklab by MegaMek.

the class UnitPrintManager method printAllUnits.

public static boolean printAllUnits(Vector<Entity> loadedUnits, boolean singlePrint) {
    Book book = new Book();
    List<Infantry> infList = new ArrayList<>();
    List<BattleArmor> baList = new ArrayList<>();
    List<Protomech> protoList = new ArrayList<>();
    List<Entity> unprintable = new ArrayList<>();
    HashPrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(MediaSizeName.NA_LETTER);
    aset.add(new MediaPrintableArea(0, 0, 8.5f, 11, MediaPrintableArea.INCH));
    PrinterJob masterPrintJob = PrinterJob.getPrinterJob();
    if (!masterPrintJob.printDialog(aset)) {
        return true;
    }
    PageFormat pageFormat = new PageFormat();
    pageFormat = masterPrintJob.getPageFormat(null);
    Paper p = pageFormat.getPaper();
    p.setImageableArea(0, 0, p.getWidth(), p.getHeight());
    pageFormat.setPaper(p);
    Tank tank1 = null;
    Tank wige1 = null;
    Tank dualTurret1 = null;
    for (Entity unit : loadedUnits) {
        if (unit instanceof Mech) {
            UnitUtil.removeOneShotAmmo(unit);
            UnitUtil.expandUnitMounts((Mech) unit);
            book.append(new PrintMech((Mech) unit, book.getNumberOfPages()), pageFormat);
        } else if ((unit instanceof LargeSupportTank) || ((unit instanceof Tank) && (unit.getMovementMode() != EntityMovementMode.VTOL) && ((Tank) unit).isSuperHeavy())) {
            book.append(new PrintLargeSupportVehicle((Tank) unit), pageFormat);
        } else if (unit instanceof VTOL) {
            book.append(new PrintVTOL((VTOL) unit), pageFormat);
        } else if (unit.getMovementMode() == EntityMovementMode.WIGE) {
            if (singlePrint) {
                book.append(new PrintVehicle((Tank) unit, null), pageFormat);
            } else if (null != wige1) {
                book.append(new PrintVehicle(wige1, (Tank) unit), pageFormat);
                wige1 = null;
            } else {
                wige1 = (Tank) unit;
            }
        } else if ((unit instanceof Tank) && ((unit.getMovementMode() == EntityMovementMode.NAVAL) || (unit.getMovementMode() == EntityMovementMode.SUBMARINE) || (unit.getMovementMode() == EntityMovementMode.HYDROFOIL))) {
            unprintable.add(unit);
        // book.append(new PrintNavalVehicle((Tank) unit), pageFormat);
        } else if (unit instanceof Tank) {
            if (!((Tank) unit).hasNoDualTurret()) {
                if (singlePrint) {
                    book.append(new PrintDualTurretVehicle((Tank) unit, null), pageFormat);
                } else if (null != dualTurret1) {
                    book.append(new PrintDualTurretVehicle(dualTurret1, (Tank) unit), pageFormat);
                    dualTurret1 = null;
                } else {
                    dualTurret1 = (Tank) unit;
                }
            } else {
                if (singlePrint) {
                    book.append(new PrintVehicle((Tank) unit, null), pageFormat);
                } else if (null != tank1) {
                    book.append(new PrintVehicle(tank1, (Tank) unit), pageFormat);
                    tank1 = null;
                } else {
                    tank1 = (Tank) unit;
                }
            }
        } else if (unit.hasETypeFlag(Entity.ETYPE_AERO) && !unit.hasETypeFlag(Entity.ETYPE_JUMPSHIP)) {
            if (unit instanceof Dropship) {
                if (unit.getMovementMode() == EntityMovementMode.AERODYNE) {
                    book.append(new PrintAerodyne((Dropship) unit), pageFormat);
                } else {
                    book.append(new PrintSpheroid((Dropship) unit), pageFormat);
                }
            } else if (unit instanceof FixedWingSupport) {
                book.append(new PrintFixedWingSupport((FixedWingSupport) unit), pageFormat);
            } else if (unit instanceof ConvFighter) {
                book.append(new PrintConventionalFighter((ConvFighter) unit), pageFormat);
            } else if (unit instanceof SmallCraft) {
                if (unit.getMovementMode() == EntityMovementMode.AERODYNE) {
                    book.append(new PrintSmallCraftAerodyne((SmallCraft) unit), pageFormat);
                } else {
                    book.append(new PrintSmallCraftSpheroid((SmallCraft) unit), pageFormat);
                }
            } else {
                book.append(new PrintAero((Aero) unit), pageFormat);
            }
        } else if (unit instanceof BattleArmor) {
            baList.add((BattleArmor) unit);
            if (singlePrint || baList.size() > 4) {
                book.append(new PrintBattleArmor(baList), pageFormat);
                baList = new ArrayList<>();
            }
        } else if (unit instanceof Infantry) {
            infList.add((Infantry) unit);
            if (singlePrint || infList.size() > 3) {
                book.append(new PrintInfantry(infList), pageFormat);
                infList = new ArrayList<>();
            }
        } else if (unit instanceof Protomech) {
            protoList.add((Protomech) unit);
            if (singlePrint || protoList.size() > 4) {
                book.append(new PrintProtomech(protoList), pageFormat);
                protoList = new ArrayList<>();
            }
        } else {
            // TODO: show a message dialog that lists the unprintable units
            unprintable.add(unit);
        }
    }
    if (unprintable.size() > 0) {
        JOptionPane.showMessageDialog(null, "Printing is not currently supported for the following units:\n" + unprintable.stream().map(en -> en.getChassis() + " " + en.getModel()).collect(Collectors.joining("\n")));
    }
    if (null != wige1) {
        book.append(new PrintVehicle(wige1, null), pageFormat);
    }
    if (null != tank1) {
        book.append(new PrintVehicle(tank1, null), pageFormat);
    }
    if (null != dualTurret1) {
        book.append(new PrintDualTurretVehicle(dualTurret1, null), pageFormat);
    }
    if (baList.size() > 0) {
        book.append(new PrintBattleArmor(baList), pageFormat);
    }
    if (infList.size() > 0) {
        book.append(new PrintInfantry(infList), pageFormat);
    }
    if (protoList.size() > 0) {
        book.append(new PrintProtomech(protoList), pageFormat);
    }
    masterPrintJob.setPageable(book);
    if (loadedUnits.size() > 1) {
        masterPrintJob.setJobName(loadedUnits.get(0).getShortNameRaw() + " etc");
    } else if (loadedUnits.size() > 0) {
        masterPrintJob.setJobName(loadedUnits.get(0).getShortNameRaw());
    }
    PrintTask task = new PrintTask(masterPrintJob, aset);
    task.execute();
    return true;
}
Also used : PrintAero(megameklab.com.ui.Aero.Printing.PrintAero) Dropship(megamek.common.Dropship) Aero(megamek.common.Aero) PrintLargeSupportVehicle(megameklab.com.ui.Vehicle.Printing.PrintLargeSupportVehicle) PrintSmallCraftSpheroid(megameklab.com.ui.Aero.Printing.PrintSmallCraftSpheroid) PrintBattleArmor(megameklab.com.ui.BattleArmor.Printing.PrintBattleArmor) HashPrintRequestAttributeSet(javax.print.attribute.HashPrintRequestAttributeSet) PrinterJob(java.awt.print.PrinterJob) PrintTask(megameklab.com.printing.PrintTask) Vector(java.util.Vector) BattleArmor(megamek.common.BattleArmor) PrintMech(megameklab.com.printing.PrintMech) PrintInfantry(megameklab.com.ui.Infantry.Printing.PrintInfantry) UnitLoadingDialog(megamek.client.ui.swing.UnitLoadingDialog) EntityListFile(megamek.common.EntityListFile) SmallCraft(megamek.common.SmallCraft) PageFormat(java.awt.print.PageFormat) JFileChooser(javax.swing.JFileChooser) JFrame(javax.swing.JFrame) Infantry(megamek.common.Infantry) KeyStroke(javax.swing.KeyStroke) MechFileParser(megamek.common.MechFileParser) Frame(java.awt.Frame) PrintFixedWingSupport(megameklab.com.ui.Aero.Printing.PrintFixedWingSupport) Mech(megamek.common.Mech) VTOL(megamek.common.VTOL) JMenu(javax.swing.JMenu) KeyEvent(java.awt.event.KeyEvent) PrintAerodyne(megameklab.com.ui.Dropship.Printing.PrintAerodyne) Collectors(java.util.stream.Collectors) FixedWingSupport(megamek.common.FixedWingSupport) Book(java.awt.print.Book) Protomech(megamek.common.Protomech) PrintVehicle(megameklab.com.ui.Vehicle.Printing.PrintVehicle) List(java.util.List) LargeSupportTank(megamek.common.LargeSupportTank) Tank(megamek.common.Tank) Entity(megamek.common.Entity) MediaSizeName(javax.print.attribute.standard.MediaSizeName) ActionListener(java.awt.event.ActionListener) FileNameExtensionFilter(javax.swing.filechooser.FileNameExtensionFilter) PrintSpheroid(megameklab.com.ui.Dropship.Printing.PrintSpheroid) Paper(java.awt.print.Paper) PrintDualTurretVehicle(megameklab.com.ui.Vehicle.Printing.PrintDualTurretVehicle) ArrayList(java.util.ArrayList) JMenuItem(javax.swing.JMenuItem) UnitPrintQueueDialog(megameklab.com.ui.dialog.UnitPrintQueueDialog) PrintSmallCraftAerodyne(megameklab.com.ui.Aero.Printing.PrintSmallCraftAerodyne) UnitSelectorDialog(megamek.client.ui.swing.UnitSelectorDialog) PrintConventionalFighter(megameklab.com.ui.Aero.Printing.PrintConventionalFighter) ConvFighter(megamek.common.ConvFighter) PrintVTOL(megameklab.com.ui.Vehicle.Printing.PrintVTOL) EntityMovementMode(megamek.common.EntityMovementMode) JOptionPane(javax.swing.JOptionPane) ActionEvent(java.awt.event.ActionEvent) MediaPrintableArea(javax.print.attribute.standard.MediaPrintableArea) File(java.io.File) PrintProtomech(megameklab.com.ui.ProtoMek.Printing.PrintProtomech) Entity(megamek.common.Entity) PrintSmallCraftSpheroid(megameklab.com.ui.Aero.Printing.PrintSmallCraftSpheroid) PrintAero(megameklab.com.ui.Aero.Printing.PrintAero) PrintFixedWingSupport(megameklab.com.ui.Aero.Printing.PrintFixedWingSupport) PrintDualTurretVehicle(megameklab.com.ui.Vehicle.Printing.PrintDualTurretVehicle) ArrayList(java.util.ArrayList) PrinterJob(java.awt.print.PrinterJob) MediaPrintableArea(javax.print.attribute.standard.MediaPrintableArea) PageFormat(java.awt.print.PageFormat) Book(java.awt.print.Book) PrintProtomech(megameklab.com.ui.ProtoMek.Printing.PrintProtomech) PrintVehicle(megameklab.com.ui.Vehicle.Printing.PrintVehicle) PrintAerodyne(megameklab.com.ui.Dropship.Printing.PrintAerodyne) PrintBattleArmor(megameklab.com.ui.BattleArmor.Printing.PrintBattleArmor) BattleArmor(megamek.common.BattleArmor) PrintFixedWingSupport(megameklab.com.ui.Aero.Printing.PrintFixedWingSupport) FixedWingSupport(megamek.common.FixedWingSupport) PrintTask(megameklab.com.printing.PrintTask) PrintLargeSupportVehicle(megameklab.com.ui.Vehicle.Printing.PrintLargeSupportVehicle) LargeSupportTank(megamek.common.LargeSupportTank) Dropship(megamek.common.Dropship) ConvFighter(megamek.common.ConvFighter) PrintSmallCraftAerodyne(megameklab.com.ui.Aero.Printing.PrintSmallCraftAerodyne) LargeSupportTank(megamek.common.LargeSupportTank) Tank(megamek.common.Tank) SmallCraft(megamek.common.SmallCraft) PrintInfantry(megameklab.com.ui.Infantry.Printing.PrintInfantry) Infantry(megamek.common.Infantry) PrintInfantry(megameklab.com.ui.Infantry.Printing.PrintInfantry) VTOL(megamek.common.VTOL) PrintVTOL(megameklab.com.ui.Vehicle.Printing.PrintVTOL) Protomech(megamek.common.Protomech) PrintProtomech(megameklab.com.ui.ProtoMek.Printing.PrintProtomech) Paper(java.awt.print.Paper) PrintMech(megameklab.com.printing.PrintMech) Mech(megamek.common.Mech) PrintMech(megameklab.com.printing.PrintMech) PrintSpheroid(megameklab.com.ui.Dropship.Printing.PrintSpheroid) PrintBattleArmor(megameklab.com.ui.BattleArmor.Printing.PrintBattleArmor) PrintConventionalFighter(megameklab.com.ui.Aero.Printing.PrintConventionalFighter) HashPrintRequestAttributeSet(javax.print.attribute.HashPrintRequestAttributeSet) PrintVTOL(megameklab.com.ui.Vehicle.Printing.PrintVTOL)

Aggregations

Frame (java.awt.Frame)1 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 KeyEvent (java.awt.event.KeyEvent)1 Book (java.awt.print.Book)1 PageFormat (java.awt.print.PageFormat)1 Paper (java.awt.print.Paper)1 PrinterJob (java.awt.print.PrinterJob)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Vector (java.util.Vector)1 Collectors (java.util.stream.Collectors)1 HashPrintRequestAttributeSet (javax.print.attribute.HashPrintRequestAttributeSet)1 MediaPrintableArea (javax.print.attribute.standard.MediaPrintableArea)1 MediaSizeName (javax.print.attribute.standard.MediaSizeName)1 JFileChooser (javax.swing.JFileChooser)1 JFrame (javax.swing.JFrame)1 JMenu (javax.swing.JMenu)1 JMenuItem (javax.swing.JMenuItem)1