package bluej.pkgmgr.print;
import bluej.Config;
import bluej.editor.Editor;
import bluej.editor.moe.PrintDialog.PrintChoices;
import bluej.pkgmgr.Package;
import bluej.pkgmgr.PkgMgrFrame;
import bluej.pkgmgr.target.ClassTarget;
import bluej.pkgmgr.target.ReadmeTarget;
import bluej.utility.Debug;
import bluej.utility.DialogManager;
import bluej.utility.javafx.FXRunnable;
import javafx.print.PrinterJob;
import javafx.stage.Window;
import threadchecker.OnThread;
import threadchecker.Tag;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
| Manages the printing of package assets eg. Class Diagram, Readme and Source
| files. All source files are printed as one large batch. Individual
| printing occurs through the source code editor
|
| @author Bruce Quig
|
public class PackagePrintManager
extends Thread{
private final List<FXRunnable> printActions = new ArrayList<>();
private final PrinterJob job;
| Constructor for PackagePrinter.
|
| @param pkg package to be printed
| @param printChoices the print options chosen by the user
|
@OnThread(Tag.FXPlatform)
public PackagePrintManager(PrinterJob job, PkgMgrFrame pkgMgrFrame, PrintChoices printChoices)
{
this.job = job;
if (printChoices.printDiagram) {
printActions.add(() -> printClassDiagram(job, pkgMgrFrame));
}
Package pkg = pkgMgrFrame.getPackage();
if (printChoices.printSource)
{
printActions.addAll(pkg.getAllClassnamesWithSource().stream()
.map(className -> ((ClassTarget) pkg.getTarget(className)).getEditor())
.map(ed -> ed.printTo(job, printChoices.printSize, printChoices.printLineNumbers, printChoices.printHighlighting))
.collect(Collectors.toList()));
}
if (printChoices.printReadme)
{
ReadmeTarget readmeTgt = pkg.getReadmeTarget();
if (readmeTgt != null)
{
if (readmeTgt.getEditor() != null)
{
printActions.add(readmeTgt.getEditor().printTo(job, printChoices.printSize,
printChoices.printLineNumbers, printChoices.printHighlighting));
}
}
}
}
| Overridden run method called as part of the usage of this class as a
| background operation via a thread with lower priority.
|
@OnThread(value = Tag.FX, ignoreParent = true)
public void run()
{
try
{
for (FXRunnable printAction : printActions)
{
printAction.run();
}
}
catch (Throwable t)
{
Debug.reportError(t);
}
job.endJob();
}
| Prints the graphical representation of classes in the package.
|
| @param printJob the printer job to print the diagram to.
|
@OnThread(Tag.FX)
public void printClassDiagram(PrinterJob printJob, PkgMgrFrame pkgMgrFrame)
{
pkgMgrFrame.printDiagram(printJob);
}
}
top,
use,
map,
class PackagePrintManager
. PackagePrintManager
. run
. printClassDiagram
99 neLoCode
+ 11 LoComm